Skip to content

Commit

Permalink
Configure CI to test Kotlin workflows (#27)
Browse files Browse the repository at this point in the history
  • Loading branch information
krzema12 authored Aug 19, 2024
1 parent c87e164 commit ed157fa
Show file tree
Hide file tree
Showing 2 changed files with 126 additions and 0 deletions.
64 changes: 64 additions & 0 deletions .github/workflows/test.main.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/usr/bin/env kotlin
@file:Repository("https://repo.maven.apache.org/maven2/")
@file:DependsOn("io.github.typesafegithub:github-workflows-kt:2.3.0")

@file:Repository("https://bindings.krzeminski.it")
@file:DependsOn("actions:checkout:v4")

import io.github.typesafegithub.workflows.actions.actions.Checkout
import io.github.typesafegithub.workflows.domain.RunnerType.UbuntuLatest
import io.github.typesafegithub.workflows.domain.triggers.PullRequest
import io.github.typesafegithub.workflows.domain.triggers.Push
import io.github.typesafegithub.workflows.dsl.workflow

workflow(
name = "Test",
on = listOf(
Push(branches = listOf("main")),
PullRequest(),
),
sourceFile = __FILE__,
) {
job(
id = "build_kotlin_scripts",
name = "Build Kotlin scripts",
runsOn = UbuntuLatest,
) {
uses(action = Checkout())
run(
command = """
find -name *.main.kts -print0 | while read -d ${'$'}'\0' file
do
echo "Compiling ${'$'}file..."
kotlinc -Werror -Xallow-any-scripts-in-source-roots -Xuse-fir-lt=false "${'$'}file"
done
""".trimIndent()
)
}


job(
id = "workflows_consistency_check",
name = "Run consistency check on all GitHub workflows",
runsOn = UbuntuLatest,
) {
uses(action = Checkout())
run(command = "cd .github/workflows")
run(
name = "Regenerate all workflow YAMLs",
command = """
find -name "*.main.kts" -print0 | while read -d ${'$'}'\0' file
do
if [ -x "${'$'}file" ]; then
echo "Regenerating ${'$'}file..."
(${'$'}file)
fi
done
""".trimIndent(),
)
run(
name = "Check if some file is different after regeneration",
command = "git diff --exit-code .",
)
}
}
62 changes: 62 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# This file was generated using Kotlin DSL (.github/workflows/test.main.kts).
# If you want to modify the workflow, please change the Kotlin file and regenerate this YAML file.
# Generated with https://github.com/typesafegithub/github-workflows-kt

name: 'Test'
on:
push:
branches:
- 'main'
pull_request: {}
jobs:
check_yaml_consistency:
name: 'Check YAML consistency'
runs-on: 'ubuntu-latest'
steps:
- id: 'step-0'
name: 'Check out'
uses: 'actions/checkout@v4'
- id: 'step-1'
name: 'Execute script'
run: 'rm ''.github/workflows/test.yaml'' && ''.github/workflows/test.main.kts'''
- id: 'step-2'
name: 'Consistency check'
run: 'git diff --exit-code ''.github/workflows/test.yaml'''
build_kotlin_scripts:
name: 'Build Kotlin scripts'
runs-on: 'ubuntu-latest'
needs:
- 'check_yaml_consistency'
steps:
- id: 'step-0'
uses: 'actions/checkout@v4'
- id: 'step-1'
run: |-
find -name *.main.kts -print0 | while read -d $'\0' file
do
echo "Compiling $file..."
kotlinc -Werror -Xallow-any-scripts-in-source-roots -Xuse-fir-lt=false "$file"
done
workflows_consistency_check:
name: 'Run consistency check on all GitHub workflows'
runs-on: 'ubuntu-latest'
needs:
- 'check_yaml_consistency'
steps:
- id: 'step-0'
uses: 'actions/checkout@v4'
- id: 'step-1'
run: 'cd .github/workflows'
- id: 'step-2'
name: 'Regenerate all workflow YAMLs'
run: |-
find -name "*.main.kts" -print0 | while read -d $'\0' file
do
if [ -x "$file" ]; then
echo "Regenerating $file..."
($file)
fi
done
- id: 'step-3'
name: 'Check if some file is different after regeneration'
run: 'git diff --exit-code .'

0 comments on commit ed157fa

Please sign in to comment.