Skip to content

Commit 9579175

Browse files
authored
feat(dsl): allow specifying env vars for consistency check job (#1413)
Part of #1398. Needed because sometimes the Kotlin script may need some extra env vars, e.g. a GitHub token. It's generally recommended to keep the script fast and simple, but in some cases it may be desired to make some external calls.
1 parent 874768d commit 9579175

File tree

5 files changed

+21
-10
lines changed

5 files changed

+21
-10
lines changed

github-workflows-kt/api/github-workflows-kt.api

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -484,20 +484,21 @@ public abstract interface class io/github/typesafegithub/workflows/domain/WithOu
484484
}
485485

486486
public final class io/github/typesafegithub/workflows/domain/Workflow : io/github/typesafegithub/workflows/dsl/HasCustomArguments {
487-
public fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;)V
488-
public synthetic fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
487+
public fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;)V
488+
public synthetic fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
489489
public final fun component1 ()Ljava/lang/String;
490-
public final fun component10 ()Ljava/util/Map;
490+
public final fun component10 ()Ljava/util/List;
491+
public final fun component11 ()Ljava/util/Map;
491492
public final fun component2 ()Ljava/util/List;
492493
public final fun component3 ()Ljava/util/LinkedHashMap;
493494
public final fun component4 ()Ljava/nio/file/Path;
494495
public final fun component5 ()Ljava/lang/String;
495496
public final fun component6 ()Lio/github/typesafegithub/workflows/domain/Concurrency;
496497
public final fun component7 ()Ljava/util/Map;
497498
public final fun component8 ()Ljava/lang/String;
498-
public final fun component9 ()Ljava/util/List;
499-
public final fun copy (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;)Lio/github/typesafegithub/workflows/domain/Workflow;
500-
public static synthetic fun copy$default (Lio/github/typesafegithub/workflows/domain/Workflow;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Workflow;
499+
public final fun component9 ()Ljava/util/LinkedHashMap;
500+
public final fun copy (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;)Lio/github/typesafegithub/workflows/domain/Workflow;
501+
public static synthetic fun copy$default (Lio/github/typesafegithub/workflows/domain/Workflow;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/util/Map;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Workflow;
501502
public fun equals (Ljava/lang/Object;)Z
502503
public final fun getConcurrency ()Lio/github/typesafegithub/workflows/domain/Concurrency;
503504
public final fun getEnv ()Ljava/util/LinkedHashMap;
@@ -508,6 +509,7 @@ public final class io/github/typesafegithub/workflows/domain/Workflow : io/githu
508509
public final fun getSourceFile ()Ljava/nio/file/Path;
509510
public final fun getTargetFileName ()Ljava/lang/String;
510511
public final fun getYamlConsistencyJobCondition ()Ljava/lang/String;
512+
public final fun getYamlConsistencyJobEnv ()Ljava/util/LinkedHashMap;
511513
public fun get_customArguments ()Ljava/util/Map;
512514
public fun hashCode ()I
513515
public fun toString ()Ljava/lang/String;
@@ -1893,8 +1895,8 @@ public final class io/github/typesafegithub/workflows/dsl/JobBuilder : io/github
18931895
}
18941896

18951897
public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilder {
1896-
public fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;)V
1897-
public synthetic fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
1898+
public fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;)V
1899+
public synthetic fun <init> (Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
18981900
public final fun build ()Lio/github/typesafegithub/workflows/domain/Workflow;
18991901
public final fun job ([Lkotlin/Unit;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/Integer;Lio/github/typesafegithub/workflows/domain/Concurrency;Lio/github/typesafegithub/workflows/domain/Container;Lio/github/typesafegithub/workflows/domain/Environment;Ljava/util/Map;Lio/github/typesafegithub/workflows/domain/JobOutputs;Lkotlin/jvm/functions/Function1;)Lio/github/typesafegithub/workflows/domain/Job;
19001902
public final fun job ([Lkotlin/Unit;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/lang/Integer;Lio/github/typesafegithub/workflows/domain/Concurrency;Lio/github/typesafegithub/workflows/domain/Container;Lio/github/typesafegithub/workflows/domain/Environment;Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Lio/github/typesafegithub/workflows/domain/Job;
@@ -1904,8 +1906,8 @@ public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilder {
19041906

19051907
public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilderKt {
19061908
public static final fun toBuilder (Lio/github/typesafegithub/workflows/domain/Workflow;)Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;
1907-
public static final fun workflow ([Lkotlin/Unit;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Lio/github/typesafegithub/workflows/domain/Workflow;
1908-
public static synthetic fun workflow$default ([Lkotlin/Unit;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Workflow;
1909+
public static final fun workflow ([Lkotlin/Unit;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/Map;Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Lio/github/typesafegithub/workflows/domain/Workflow;
1910+
public static synthetic fun workflow$default ([Lkotlin/Unit;Ljava/lang/String;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/nio/file/Path;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/Concurrency;Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/util/Map;Ljava/util/Map;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Workflow;
19091911
}
19101912

19111913
public final class io/github/typesafegithub/workflows/dsl/expressions/Contexts : io/github/typesafegithub/workflows/dsl/expressions/contexts/FunctionsContext {

github-workflows-kt/src/main/kotlin/io/github/typesafegithub/workflows/domain/Workflow.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public data class Workflow(
1414
val concurrency: Concurrency? = null,
1515
val permissions: Map<Permission, Mode>? = null,
1616
val yamlConsistencyJobCondition: String? = null,
17+
val yamlConsistencyJobEnv: LinkedHashMap<String, String> = linkedMapOf(),
1718
val jobs: List<Job<*>>,
1819
override val _customArguments: Map<String, @Contextual Any?> = mapOf(),
1920
) : HasCustomArguments

github-workflows-kt/src/main/kotlin/io/github/typesafegithub/workflows/dsl/WorkflowBuilder.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class WorkflowBuilder(
2323
targetFileName: String?,
2424
concurrency: Concurrency? = null,
2525
yamlConsistencyJobCondition: String? = null,
26+
yamlConsistencyJobEnv: LinkedHashMap<String, String> = linkedMapOf(),
2627
jobs: List<Job<*>> = emptyList(),
2728
permissions: Map<Permission, Mode>? = null,
2829
_customArguments: Map<String, @Contextual Any?>,
@@ -38,6 +39,7 @@ public class WorkflowBuilder(
3839
permissions = permissions,
3940
concurrency = concurrency,
4041
yamlConsistencyJobCondition = yamlConsistencyJobCondition,
42+
yamlConsistencyJobEnv = yamlConsistencyJobEnv,
4143
_customArguments = _customArguments,
4244
)
4345

@@ -164,6 +166,7 @@ public fun workflow(
164166
targetFileName: String? = sourceFile?.fileName?.let { it.toString().substringBeforeLast(".main.kts") + ".yaml" },
165167
concurrency: Concurrency? = null,
166168
yamlConsistencyJobCondition: String? = null,
169+
yamlConsistencyJobEnv: LinkedHashMap<String, String> = linkedMapOf(),
167170
permissions: Map<Permission, Mode>? = null,
168171
_customArguments: Map<String, @Contextual Any> = mapOf(),
169172
block: WorkflowBuilder.() -> Unit,
@@ -182,6 +185,7 @@ public fun workflow(
182185
permissions = permissions,
183186
concurrency = concurrency,
184187
yamlConsistencyJobCondition = yamlConsistencyJobCondition,
188+
yamlConsistencyJobEnv = yamlConsistencyJobEnv,
185189
_customArguments = _customArguments,
186190
)
187191
workflowBuilder.block()

github-workflows-kt/src/main/kotlin/io/github/typesafegithub/workflows/yaml/ToYaml.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ private fun Workflow.generateYaml(
166166
name = "Check YAML consistency",
167167
runsOn = UbuntuLatest,
168168
condition = yamlConsistencyJobCondition,
169+
env = yamlConsistencyJobEnv,
169170
) {
170171
uses(name = "Check out", action = CheckoutV4())
171172

github-workflows-kt/src/test/kotlin/io/github/typesafegithub/workflows/IntegrationTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ class IntegrationTest : FunSpec({
118118
name = "Test workflow",
119119
on = listOf(Push()),
120120
sourceFile = sourceTempFile.toPath(),
121+
yamlConsistencyJobEnv = linkedMapOf("GITHUB_TOKEN" to expr("secrets.GITHUB_TOKEN")),
121122
) {
122123
job(
123124
id = "test_job",
@@ -152,6 +153,8 @@ class IntegrationTest : FunSpec({
152153
check_yaml_consistency:
153154
name: 'Check YAML consistency'
154155
runs-on: 'ubuntu-latest'
156+
env:
157+
GITHUB_TOKEN: '${'$'}{{ secrets.GITHUB_TOKEN }}'
155158
steps:
156159
- id: 'step-0'
157160
name: 'Check out'

0 commit comments

Comments
 (0)