Skip to content

Commit

Permalink
feat(dsl): allow specifying env vars for consistency check job (#1413)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
NikkyAI committed Apr 24, 2024
1 parent 874768d commit 9579175
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 10 deletions.
22 changes: 12 additions & 10 deletions github-workflows-kt/api/github-workflows-kt.api
Original file line number Diff line number Diff line change
Expand Up @@ -484,20 +484,21 @@ public abstract interface class io/github/typesafegithub/workflows/domain/WithOu
}

public final class io/github/typesafegithub/workflows/domain/Workflow : io/github/typesafegithub/workflows/dsl/HasCustomArguments {
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
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
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
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
public final fun component1 ()Ljava/lang/String;
public final fun component10 ()Ljava/util/Map;
public final fun component10 ()Ljava/util/List;
public final fun component11 ()Ljava/util/Map;
public final fun component2 ()Ljava/util/List;
public final fun component3 ()Ljava/util/LinkedHashMap;
public final fun component4 ()Ljava/nio/file/Path;
public final fun component5 ()Ljava/lang/String;
public final fun component6 ()Lio/github/typesafegithub/workflows/domain/Concurrency;
public final fun component7 ()Ljava/util/Map;
public final fun component8 ()Ljava/lang/String;
public final fun component9 ()Ljava/util/List;
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;
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;
public final fun component9 ()Ljava/util/LinkedHashMap;
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;
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;
public fun equals (Ljava/lang/Object;)Z
public final fun getConcurrency ()Lio/github/typesafegithub/workflows/domain/Concurrency;
public final fun getEnv ()Ljava/util/LinkedHashMap;
Expand All @@ -508,6 +509,7 @@ public final class io/github/typesafegithub/workflows/domain/Workflow : io/githu
public final fun getSourceFile ()Ljava/nio/file/Path;
public final fun getTargetFileName ()Ljava/lang/String;
public final fun getYamlConsistencyJobCondition ()Ljava/lang/String;
public final fun getYamlConsistencyJobEnv ()Ljava/util/LinkedHashMap;
public fun get_customArguments ()Ljava/util/Map;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
Expand Down Expand Up @@ -1893,8 +1895,8 @@ public final class io/github/typesafegithub/workflows/dsl/JobBuilder : io/github
}

public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilder {
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
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
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
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
public final fun build ()Lio/github/typesafegithub/workflows/domain/Workflow;
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;
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;
Expand All @@ -1904,8 +1906,8 @@ public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilder {

public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilderKt {
public static final fun toBuilder (Lio/github/typesafegithub/workflows/domain/Workflow;)Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;
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;
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;
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;
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;
}

public final class io/github/typesafegithub/workflows/dsl/expressions/Contexts : io/github/typesafegithub/workflows/dsl/expressions/contexts/FunctionsContext {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public data class Workflow(
val concurrency: Concurrency? = null,
val permissions: Map<Permission, Mode>? = null,
val yamlConsistencyJobCondition: String? = null,
val yamlConsistencyJobEnv: LinkedHashMap<String, String> = linkedMapOf(),
val jobs: List<Job<*>>,
override val _customArguments: Map<String, @Contextual Any?> = mapOf(),
) : HasCustomArguments
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class WorkflowBuilder(
targetFileName: String?,
concurrency: Concurrency? = null,
yamlConsistencyJobCondition: String? = null,
yamlConsistencyJobEnv: LinkedHashMap<String, String> = linkedMapOf(),
jobs: List<Job<*>> = emptyList(),
permissions: Map<Permission, Mode>? = null,
_customArguments: Map<String, @Contextual Any?>,
Expand All @@ -38,6 +39,7 @@ public class WorkflowBuilder(
permissions = permissions,
concurrency = concurrency,
yamlConsistencyJobCondition = yamlConsistencyJobCondition,
yamlConsistencyJobEnv = yamlConsistencyJobEnv,
_customArguments = _customArguments,
)

Expand Down Expand Up @@ -164,6 +166,7 @@ public fun workflow(
targetFileName: String? = sourceFile?.fileName?.let { it.toString().substringBeforeLast(".main.kts") + ".yaml" },
concurrency: Concurrency? = null,
yamlConsistencyJobCondition: String? = null,
yamlConsistencyJobEnv: LinkedHashMap<String, String> = linkedMapOf(),
permissions: Map<Permission, Mode>? = null,
_customArguments: Map<String, @Contextual Any> = mapOf(),
block: WorkflowBuilder.() -> Unit,
Expand All @@ -182,6 +185,7 @@ public fun workflow(
permissions = permissions,
concurrency = concurrency,
yamlConsistencyJobCondition = yamlConsistencyJobCondition,
yamlConsistencyJobEnv = yamlConsistencyJobEnv,
_customArguments = _customArguments,
)
workflowBuilder.block()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ private fun Workflow.generateYaml(
name = "Check YAML consistency",
runsOn = UbuntuLatest,
condition = yamlConsistencyJobCondition,
env = yamlConsistencyJobEnv,
) {
uses(name = "Check out", action = CheckoutV4())

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ class IntegrationTest : FunSpec({
name = "Test workflow",
on = listOf(Push()),
sourceFile = sourceTempFile.toPath(),
yamlConsistencyJobEnv = linkedMapOf("GITHUB_TOKEN" to expr("secrets.GITHUB_TOKEN")),
) {
job(
id = "test_job",
Expand Down Expand Up @@ -152,6 +153,8 @@ class IntegrationTest : FunSpec({
check_yaml_consistency:
name: 'Check YAML consistency'
runs-on: 'ubuntu-latest'
env:
GITHUB_TOKEN: '${'$'}{{ secrets.GITHUB_TOKEN }}'
steps:
- id: 'step-0'
name: 'Check out'
Expand Down

0 comments on commit 9579175

Please sign in to comment.