Skip to content

Commit d8f98ff

Browse files
authored
feat(dsl): add environment to job (#1401)
Closes #1273.
1 parent d8a12d2 commit d8f98ff

File tree

8 files changed

+60
-12
lines changed

8 files changed

+60
-12
lines changed

docs/feature-coverage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Legend:
1717
| Environment variables (`env` context) || |
1818
| `github` context || |
1919
| Job containers || |
20-
| Job environments | | [#1273](https://github.com/typesafegithub/github-workflows-kt/issues/1273) |
20+
| Job environments | | |
2121
| Docker actions || |
2222
| Local actions || |
2323
| `outcome` context || |

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

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -136,16 +136,30 @@ public final class io/github/typesafegithub/workflows/domain/Credentials {
136136
public fun toString ()Ljava/lang/String;
137137
}
138138

139+
public final class io/github/typesafegithub/workflows/domain/Environment {
140+
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
141+
public final fun component1 ()Ljava/lang/String;
142+
public final fun component2 ()Ljava/lang/String;
143+
public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lio/github/typesafegithub/workflows/domain/Environment;
144+
public static synthetic fun copy$default (Lio/github/typesafegithub/workflows/domain/Environment;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Environment;
145+
public fun equals (Ljava/lang/Object;)Z
146+
public final fun getName ()Ljava/lang/String;
147+
public final fun getUrl ()Ljava/lang/String;
148+
public fun hashCode ()I
149+
public fun toString ()Ljava/lang/String;
150+
}
151+
139152
public final class io/github/typesafegithub/workflows/domain/Job : io/github/typesafegithub/workflows/dsl/HasCustomArguments {
140-
public fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/List;Lio/github/typesafegithub/workflows/domain/JobOutputs;Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Ljava/lang/Integer;Lio/github/typesafegithub/workflows/domain/Concurrency;Lio/github/typesafegithub/workflows/domain/Container;Ljava/util/Map;Ljava/util/Map;)V
141-
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/List;Lio/github/typesafegithub/workflows/domain/JobOutputs;Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Ljava/lang/Integer;Lio/github/typesafegithub/workflows/domain/Concurrency;Lio/github/typesafegithub/workflows/domain/Container;Ljava/util/Map;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
153+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/List;Lio/github/typesafegithub/workflows/domain/JobOutputs;Ljava/util/LinkedHashMap;Ljava/lang/String;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;Ljava/util/Map;)V
154+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/List;Lio/github/typesafegithub/workflows/domain/JobOutputs;Ljava/util/LinkedHashMap;Ljava/lang/String;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;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
142155
public final fun component1 ()Ljava/lang/String;
143156
public final fun component10 ()Ljava/util/Map;
144157
public final fun component11 ()Ljava/lang/Integer;
145158
public final fun component12 ()Lio/github/typesafegithub/workflows/domain/Concurrency;
146159
public final fun component13 ()Lio/github/typesafegithub/workflows/domain/Container;
147-
public final fun component14 ()Ljava/util/Map;
160+
public final fun component14 ()Lio/github/typesafegithub/workflows/domain/Environment;
148161
public final fun component15 ()Ljava/util/Map;
162+
public final fun component16 ()Ljava/util/Map;
149163
public final fun component2 ()Ljava/lang/String;
150164
public final fun component3 ()Lio/github/typesafegithub/workflows/domain/RunnerType;
151165
public final fun component4 ()Ljava/util/List;
@@ -154,13 +168,14 @@ public final class io/github/typesafegithub/workflows/domain/Job : io/github/typ
154168
public final fun component7 ()Ljava/util/LinkedHashMap;
155169
public final fun component8 ()Ljava/lang/String;
156170
public final fun component9 ()Ljava/util/Map;
157-
public final fun copy (Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/List;Lio/github/typesafegithub/workflows/domain/JobOutputs;Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Ljava/lang/Integer;Lio/github/typesafegithub/workflows/domain/Concurrency;Lio/github/typesafegithub/workflows/domain/Container;Ljava/util/Map;Ljava/util/Map;)Lio/github/typesafegithub/workflows/domain/Job;
158-
public static synthetic fun copy$default (Lio/github/typesafegithub/workflows/domain/Job;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/List;Lio/github/typesafegithub/workflows/domain/JobOutputs;Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Ljava/lang/Integer;Lio/github/typesafegithub/workflows/domain/Concurrency;Lio/github/typesafegithub/workflows/domain/Container;Ljava/util/Map;Ljava/util/Map;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Job;
171+
public final fun copy (Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/List;Lio/github/typesafegithub/workflows/domain/JobOutputs;Ljava/util/LinkedHashMap;Ljava/lang/String;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;Ljava/util/Map;)Lio/github/typesafegithub/workflows/domain/Job;
172+
public static synthetic fun copy$default (Lio/github/typesafegithub/workflows/domain/Job;Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/List;Lio/github/typesafegithub/workflows/domain/JobOutputs;Ljava/util/LinkedHashMap;Ljava/lang/String;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;Ljava/util/Map;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Job;
159173
public fun equals (Ljava/lang/Object;)Z
160174
public final fun getConcurrency ()Lio/github/typesafegithub/workflows/domain/Concurrency;
161175
public final fun getCondition ()Ljava/lang/String;
162176
public final fun getContainer ()Lio/github/typesafegithub/workflows/domain/Container;
163177
public final fun getEnv ()Ljava/util/LinkedHashMap;
178+
public final fun getEnvironment ()Lio/github/typesafegithub/workflows/domain/Environment;
164179
public final fun getId ()Ljava/lang/String;
165180
public final fun getName ()Ljava/lang/String;
166181
public final fun getNeeds ()Ljava/util/List;
@@ -1771,13 +1786,14 @@ public abstract interface class io/github/typesafegithub/workflows/dsl/HasCustom
17711786
}
17721787

17731788
public final class io/github/typesafegithub/workflows/dsl/JobBuilder : io/github/typesafegithub/workflows/dsl/HasCustomArguments {
1774-
public fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Ljava/lang/Integer;Lio/github/typesafegithub/workflows/domain/Concurrency;Lio/github/typesafegithub/workflows/domain/Container;Ljava/util/Map;Lio/github/typesafegithub/workflows/domain/JobOutputs;Ljava/util/Map;Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;)V
1775-
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/lang/String;Ljava/util/Map;Ljava/util/Map;Ljava/lang/Integer;Lio/github/typesafegithub/workflows/domain/Concurrency;Lio/github/typesafegithub/workflows/domain/Container;Ljava/util/Map;Lio/github/typesafegithub/workflows/domain/JobOutputs;Ljava/util/Map;Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
1789+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/lang/String;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;Ljava/util/Map;Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;)V
1790+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/github/typesafegithub/workflows/domain/RunnerType;Ljava/util/List;Ljava/util/LinkedHashMap;Ljava/lang/String;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;Ljava/util/Map;Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
17761791
public final fun build ()Lio/github/typesafegithub/workflows/domain/Job;
17771792
public final fun getConcurrency ()Lio/github/typesafegithub/workflows/domain/Concurrency;
17781793
public final fun getCondition ()Ljava/lang/String;
17791794
public final fun getContainer ()Lio/github/typesafegithub/workflows/domain/Container;
17801795
public final fun getEnv ()Ljava/util/LinkedHashMap;
1796+
public final fun getEnvironment ()Lio/github/typesafegithub/workflows/domain/Environment;
17811797
public final fun getId ()Ljava/lang/String;
17821798
public final fun getJobOutputs ()Lio/github/typesafegithub/workflows/domain/JobOutputs;
17831799
public final fun getName ()Ljava/lang/String;
@@ -1800,10 +1816,10 @@ public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilder {
18001816
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
18011817
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
18021818
public final fun build ()Lio/github/typesafegithub/workflows/domain/Workflow;
1803-
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;Ljava/util/Map;Lio/github/typesafegithub/workflows/domain/JobOutputs;Lkotlin/jvm/functions/Function1;)Lio/github/typesafegithub/workflows/domain/Job;
1804-
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;Ljava/util/Map;Lkotlin/jvm/functions/Function1;)Lio/github/typesafegithub/workflows/domain/Job;
1805-
public static synthetic fun job$default (Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;[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;Ljava/util/Map;Lio/github/typesafegithub/workflows/domain/JobOutputs;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Job;
1806-
public static synthetic fun job$default (Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;[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;Ljava/util/Map;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Job;
1819+
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;
1820+
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;
1821+
public static synthetic fun job$default (Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;[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;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Job;
1822+
public static synthetic fun job$default (Lio/github/typesafegithub/workflows/dsl/WorkflowBuilder;[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;ILjava/lang/Object;)Lio/github/typesafegithub/workflows/domain/Job;
18071823
}
18081824

18091825
public final class io/github/typesafegithub/workflows/dsl/WorkflowBuilderKt {
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package io.github.typesafegithub.workflows.domain
2+
3+
/**
4+
* https://docs.github.com/en/actions/using-jobs/using-environments-for-jobs
5+
*/
6+
public data class Environment(
7+
val name: String,
8+
val url: String?,
9+
)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public data class Job<OUTPUT : JobOutputs>(
1818
val timeoutMinutes: Int? = null,
1919
val concurrency: Concurrency? = null,
2020
val container: Container? = null,
21+
val environment: Environment? = null,
2122
val services: Map<String, Container> = emptyMap(),
2223
override val _customArguments: Map<String, @Contextual Any?> = mapOf(),
2324
) : HasCustomArguments {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.github.typesafegithub.workflows.domain.ActionStep
55
import io.github.typesafegithub.workflows.domain.CommandStep
66
import io.github.typesafegithub.workflows.domain.Concurrency
77
import io.github.typesafegithub.workflows.domain.Container
8+
import io.github.typesafegithub.workflows.domain.Environment
89
import io.github.typesafegithub.workflows.domain.Job
910
import io.github.typesafegithub.workflows.domain.JobOutputs
1011
import io.github.typesafegithub.workflows.domain.KotlinLogicStep
@@ -30,6 +31,7 @@ public class JobBuilder<OUTPUT : JobOutputs>(
3031
public val timeoutMinutes: Int? = null,
3132
public val concurrency: Concurrency? = null,
3233
public val container: Container? = null,
34+
public val environment: Environment? = null,
3335
public val services: Map<String, Container> = emptyMap(),
3436
public val jobOutputs: OUTPUT,
3537
override val _customArguments: Map<String, @Contextual Any?>,
@@ -49,6 +51,7 @@ public class JobBuilder<OUTPUT : JobOutputs>(
4951
timeoutMinutes = timeoutMinutes,
5052
concurrency = concurrency,
5153
container = container,
54+
environment = environment,
5255
services = services,
5356
outputs = jobOutputs,
5457
_customArguments = _customArguments,

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package io.github.typesafegithub.workflows.dsl
22

33
import io.github.typesafegithub.workflows.domain.Concurrency
44
import io.github.typesafegithub.workflows.domain.Container
5+
import io.github.typesafegithub.workflows.domain.Environment
56
import io.github.typesafegithub.workflows.domain.Job
67
import io.github.typesafegithub.workflows.domain.JobOutputs
78
import io.github.typesafegithub.workflows.domain.Mode
@@ -57,6 +58,7 @@ public class WorkflowBuilder(
5758
timeoutMinutes: Int? = null,
5859
concurrency: Concurrency? = null,
5960
container: Container? = null,
61+
environment: Environment? = null,
6062
services: Map<String, Container> = emptyMap(),
6163
outputs: OUTPUT,
6264
block: JobBuilder<OUTPUT>.() -> Unit,
@@ -77,6 +79,7 @@ public class WorkflowBuilder(
7779
timeoutMinutes = timeoutMinutes,
7880
concurrency = concurrency,
7981
container = container,
82+
environment = environment,
8083
services = services,
8184
jobOutputs = outputs,
8285
_customArguments = _customArguments,
@@ -109,6 +112,7 @@ public class WorkflowBuilder(
109112
timeoutMinutes: Int? = null,
110113
concurrency: Concurrency? = null,
111114
container: Container? = null,
115+
environment: Environment? = null,
112116
services: Map<String, Container> = emptyMap(),
113117
block: JobBuilder<JobOutputs.EMPTY>.() -> Unit,
114118
): Job<JobOutputs.EMPTY> {
@@ -129,6 +133,7 @@ public class WorkflowBuilder(
129133
concurrency = concurrency,
130134
outputs = JobOutputs.EMPTY,
131135
container = container,
136+
environment = environment,
132137
services = services,
133138
block = block,
134139
)

0 commit comments

Comments
 (0)