Skip to content

Commit 3669806

Browse files
authored
Merge pull request #6488 from devtron-labs/ci-trigger-refactor-k2
ci service and trigger service creation
2 parents 7e7928d + b21694c commit 3669806

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+3254
-4250
lines changed

Wire.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ import (
144144
"github.com/devtron-labs/devtron/pkg/deploymentGroup"
145145
"github.com/devtron-labs/devtron/pkg/dockerRegistry"
146146
"github.com/devtron-labs/devtron/pkg/eventProcessor"
147+
"github.com/devtron-labs/devtron/pkg/executor"
147148
"github.com/devtron-labs/devtron/pkg/generateManifest"
148149
"github.com/devtron-labs/devtron/pkg/gitops"
149150
"github.com/devtron-labs/devtron/pkg/imageDigestPolicy"
@@ -218,7 +219,7 @@ func InitializeApp() (*App, error) {
218219
userResource.UserResourceWireSet,
219220
policyGovernance.PolicyGovernanceWireSet,
220221
resourceScan.ScanningResultWireSet,
221-
222+
executor.ExecutorWireSet,
222223
// -------wireset end ----------
223224
// -------
224225
gitSensor.GetConfig,
@@ -477,9 +478,6 @@ func InitializeApp() (*App, error) {
477478
util.IntValidator,
478479
types.GetCiCdConfig,
479480

480-
pipeline.NewWorkflowServiceImpl,
481-
wire.Bind(new(pipeline.WorkflowService), new(*pipeline.WorkflowServiceImpl)),
482-
483481
pipeline.NewCiServiceImpl,
484482
wire.Bind(new(pipeline.CiService), new(*pipeline.CiServiceImpl)),
485483

api/argoApplication/wire_argoApplication.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package argoApplication
1818

1919
import (
20-
"github.com/devtron-labs/devtron/pkg/argoApplication"
20+
argoApplication3 "github.com/devtron-labs/devtron/pkg/argoApplication"
2121
"github.com/devtron-labs/devtron/pkg/argoApplication/read"
2222
"github.com/devtron-labs/devtron/pkg/argoApplication/read/config"
2323
"github.com/google/wire"
@@ -30,9 +30,9 @@ var ArgoApplicationWireSetFull = wire.NewSet(
3030
config.NewArgoApplicationConfigServiceImpl,
3131
wire.Bind(new(config.ArgoApplicationConfigService), new(*config.ArgoApplicationConfigServiceImpl)),
3232

33-
argoApplication.NewArgoApplicationServiceImpl,
34-
argoApplication.NewArgoApplicationServiceExtendedServiceImpl,
35-
wire.Bind(new(argoApplication.ArgoApplicationService), new(*argoApplication.ArgoApplicationServiceExtendedImpl)),
33+
argoApplication3.NewArgoApplicationServiceImpl,
34+
argoApplication3.NewArgoApplicationServiceExtendedServiceImpl,
35+
wire.Bind(new(argoApplication3.ArgoApplicationService), new(*argoApplication3.ArgoApplicationServiceExtendedImpl)),
3636

3737
NewArgoApplicationRestHandlerImpl,
3838
wire.Bind(new(ArgoApplicationRestHandler), new(*ArgoApplicationRestHandlerImpl)),
@@ -48,8 +48,8 @@ var ArgoApplicationWireSetEA = wire.NewSet(
4848
config.NewArgoApplicationConfigServiceImpl,
4949
wire.Bind(new(config.ArgoApplicationConfigService), new(*config.ArgoApplicationConfigServiceImpl)),
5050

51-
argoApplication.NewArgoApplicationServiceImpl,
52-
wire.Bind(new(argoApplication.ArgoApplicationService), new(*argoApplication.ArgoApplicationServiceImpl)),
51+
argoApplication3.NewArgoApplicationServiceImpl,
52+
wire.Bind(new(argoApplication3.ArgoApplicationService), new(*argoApplication3.ArgoApplicationServiceImpl)),
5353

5454
NewArgoApplicationRestHandlerImpl,
5555
wire.Bind(new(ArgoApplicationRestHandler), new(*ArgoApplicationRestHandlerImpl)),

api/restHandler/app/pipeline/configure/BuildPipelineRestHandler.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -740,7 +740,7 @@ func (handler *PipelineConfigRestHandlerImpl) TriggerCiPipeline(w http.ResponseW
740740
ciTriggerRequest.TriggeredBy = userId
741741
handler.Logger.Infow("request payload, TriggerCiPipeline", "payload", ciTriggerRequest)
742742
response := make(map[string]string)
743-
resp, err := handler.ciHandler.HandleCIManual(ciTriggerRequest)
743+
resp, err := handler.ciHandlerService.HandleCIManual(ciTriggerRequest)
744744
if errors.Is(err, bean1.ErrImagePathInUse) {
745745
handler.Logger.Errorw("service err duplicate image tag, TriggerCiPipeline", "err", err, "payload", ciTriggerRequest)
746746
common.WriteJsonResp(w, err, err, http.StatusConflict)
@@ -974,7 +974,7 @@ func (handler *PipelineConfigRestHandlerImpl) DownloadCiWorkflowArtifacts(w http
974974
}
975975
//RBAC
976976

977-
file, err := handler.ciHandler.DownloadCiWorkflowArtifacts(pipelineId, buildId)
977+
file, err := handler.ciHandlerService.DownloadCiWorkflowArtifacts(pipelineId, buildId)
978978
defer file.Close()
979979
if err != nil {
980980
handler.Logger.Errorw("service err, DownloadCiWorkflowArtifacts", "err", err, "pipelineId", pipelineId, "buildId", buildId)
@@ -1029,7 +1029,7 @@ func (handler *PipelineConfigRestHandlerImpl) GetHistoricBuildLogs(w http.Respon
10291029
return
10301030
}
10311031
//RBAC
1032-
resp, err := handler.ciHandler.GetHistoricBuildLogs(workflowId, nil)
1032+
resp, err := handler.ciHandlerService.GetHistoricBuildLogs(workflowId, nil)
10331033
if err != nil {
10341034
handler.Logger.Errorw("service err, GetHistoricBuildLogs", "err", err, "pipelineId", pipelineId, "workflowId", workflowId)
10351035
common.WriteJsonResp(w, err, resp, http.StatusInternalServerError)
@@ -1168,7 +1168,7 @@ func (handler *PipelineConfigRestHandlerImpl) GetBuildLogs(w http.ResponseWriter
11681168
return
11691169
}
11701170
}
1171-
logsReader, cleanUp, err := handler.ciHandler.GetRunningWorkflowLogs(workflowId)
1171+
logsReader, cleanUp, err := handler.ciHandlerService.GetRunningWorkflowLogs(workflowId)
11721172
if err != nil {
11731173
handler.Logger.Errorw("service err, GetBuildLogs", "err", err, "pipelineId", pipelineId, "workflowId", workflowId, "lastEventId", lastEventId)
11741174
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -1611,7 +1611,7 @@ func (handler *PipelineConfigRestHandlerImpl) CancelWorkflow(w http.ResponseWrit
16111611

16121612
//RBAC
16131613

1614-
resp, err := handler.ciHandler.CancelBuild(workflowId, forceAbort)
1614+
resp, err := handler.ciHandlerService.CancelBuild(workflowId, forceAbort)
16151615
if err != nil {
16161616
handler.Logger.Errorw("service err, CancelWorkflow", "err", err, "workflowId", workflowId, "pipelineId", pipelineId)
16171617
if util.IsErrNoRows(err) {

api/restHandler/app/pipeline/configure/DeploymentPipelineRestHandler.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1643,7 +1643,7 @@ func (handler *PipelineConfigRestHandlerImpl) GetPrePostDeploymentLogs(w http.Re
16431643
}
16441644
//RBAC CHECK
16451645

1646-
logsReader, cleanUp, err := handler.cdHandler.GetRunningWorkflowLogs(environmentId, pipelineId, workflowId)
1646+
logsReader, cleanUp, err := handler.cdHandlerService.GetRunningWorkflowLogs(environmentId, pipelineId, workflowId)
16471647
if err != nil {
16481648
handler.Logger.Errorw("service err, GetPrePostDeploymentLogs", "err", err, "appId", appId, "environmentId", environmentId, "pipelineId", pipelineId, "workflowId", workflowId)
16491649
common.WriteJsonResp(w, err, nil, http.StatusInternalServerError)
@@ -1768,7 +1768,7 @@ func (handler *PipelineConfigRestHandlerImpl) DownloadArtifacts(w http.ResponseW
17681768
}
17691769
//RBAC CHECK
17701770

1771-
file, err := handler.cdHandler.DownloadCdWorkflowArtifacts(buildId)
1771+
file, err := handler.cdHandlerService.DownloadCdWorkflowArtifacts(buildId)
17721772
defer file.Close()
17731773

17741774
if err != nil {
@@ -1952,7 +1952,7 @@ func (handler *PipelineConfigRestHandlerImpl) CancelStage(w http.ResponseWriter,
19521952
}
19531953
//RBAC
19541954

1955-
resp, err := handler.cdHandler.CancelStage(workflowRunnerId, forceAbort, userId)
1955+
resp, err := handler.cdHandlerService.CancelStage(workflowRunnerId, forceAbort, userId)
19561956
if err != nil {
19571957
handler.Logger.Errorw("service err, CancelStage", "err", err, "pipelineId", pipelineId, "workflowRunnerId", workflowRunnerId)
19581958
if util.IsErrNoRows(err) {

api/restHandler/app/pipeline/configure/PipelineConfigRestHandler.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@ import (
2626
read2 "github.com/devtron-labs/devtron/pkg/build/git/gitMaterial/read"
2727
gitProviderRead "github.com/devtron-labs/devtron/pkg/build/git/gitProvider/read"
2828
bean3 "github.com/devtron-labs/devtron/pkg/build/pipeline/bean"
29+
"github.com/devtron-labs/devtron/pkg/build/trigger"
2930
"github.com/devtron-labs/devtron/pkg/chart/gitOpsConfig"
3031
read5 "github.com/devtron-labs/devtron/pkg/chart/read"
3132
repository2 "github.com/devtron-labs/devtron/pkg/cluster/environment/repository"
3233
"github.com/devtron-labs/devtron/pkg/deployment/manifest/deployedAppMetrics"
3334
"github.com/devtron-labs/devtron/pkg/deployment/manifest/deploymentTemplate"
3435
"github.com/devtron-labs/devtron/pkg/deployment/manifest/deploymentTemplate/chartRef"
36+
"github.com/devtron-labs/devtron/pkg/deployment/trigger/devtronApps"
3537
security2 "github.com/devtron-labs/devtron/pkg/policyGovernance/security/imageScanning"
3638
"github.com/devtron-labs/devtron/pkg/policyGovernance/security/imageScanning/read"
3739
read3 "github.com/devtron-labs/devtron/pkg/team/read"
@@ -138,6 +140,8 @@ type PipelineConfigRestHandlerImpl struct {
138140
teamReadService read3.TeamReadService
139141
environmentRepository repository2.EnvironmentRepository
140142
chartReadService read5.ChartReadService
143+
ciHandlerService trigger.HandlerService
144+
cdHandlerService devtronApps.HandlerService
141145
}
142146

143147
func NewPipelineRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, Logger *zap.SugaredLogger,
@@ -171,7 +175,10 @@ func NewPipelineRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, Logger
171175
gitProviderReadService gitProviderRead.GitProviderReadService,
172176
teamReadService read3.TeamReadService,
173177
EnvironmentRepository repository2.EnvironmentRepository,
174-
chartReadService read5.ChartReadService) *PipelineConfigRestHandlerImpl {
178+
chartReadService read5.ChartReadService,
179+
ciHandlerService trigger.HandlerService,
180+
cdHandlerService devtronApps.HandlerService,
181+
) *PipelineConfigRestHandlerImpl {
175182
envConfig := &PipelineRestHandlerEnvConfig{}
176183
err := env.Parse(envConfig)
177184
if err != nil {
@@ -213,6 +220,8 @@ func NewPipelineRestHandlerImpl(pipelineBuilder pipeline.PipelineBuilder, Logger
213220
teamReadService: teamReadService,
214221
environmentRepository: EnvironmentRepository,
215222
chartReadService: chartReadService,
223+
ciHandlerService: ciHandlerService,
224+
cdHandlerService: cdHandlerService,
216225
}
217226
}
218227

api/restHandler/app/pipeline/trigger/PipelineTriggerRestHandler.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ type PipelineTriggerRestHandlerImpl struct {
6666
deploymentGroupService deploymentGroup.DeploymentGroupService
6767
deploymentConfigService pipeline.PipelineDeploymentConfigService
6868
deployedAppService deployedApp.DeployedAppService
69-
cdTriggerService devtronApps.TriggerService
69+
cdHandlerService devtronApps.HandlerService
7070
workflowEventPublishService out.WorkflowEventPublishService
7171
}
7272

@@ -75,7 +75,7 @@ func NewPipelineRestHandler(appService app.AppService, userAuthService user.User
7575
deploymentGroupService deploymentGroup.DeploymentGroupService,
7676
deploymentConfigService pipeline.PipelineDeploymentConfigService,
7777
deployedAppService deployedApp.DeployedAppService,
78-
cdTriggerService devtronApps.TriggerService,
78+
cdHandlerService devtronApps.HandlerService,
7979
workflowEventPublishService out.WorkflowEventPublishService) *PipelineTriggerRestHandlerImpl {
8080
pipelineHandler := &PipelineTriggerRestHandlerImpl{
8181
appService: appService,
@@ -88,7 +88,7 @@ func NewPipelineRestHandler(appService app.AppService, userAuthService user.User
8888
deploymentGroupService: deploymentGroupService,
8989
deploymentConfigService: deploymentConfigService,
9090
deployedAppService: deployedAppService,
91-
cdTriggerService: cdTriggerService,
91+
cdHandlerService: cdHandlerService,
9292
workflowEventPublishService: workflowEventPublishService,
9393
}
9494
return pipelineHandler
@@ -140,7 +140,7 @@ func (handler PipelineTriggerRestHandlerImpl) OverrideConfig(w http.ResponseWrit
140140
triggerContext := bean3.TriggerContext{
141141
Context: ctx,
142142
}
143-
mergeResp, helmPackageName, _, err := handler.cdTriggerService.ManualCdTrigger(triggerContext, &overrideRequest)
143+
mergeResp, helmPackageName, _, err := handler.cdHandlerService.ManualCdTrigger(triggerContext, &overrideRequest)
144144
span.End()
145145
if err != nil {
146146
handler.logger.Errorw("request err, OverrideConfig", "err", err, "payload", overrideRequest)

client/cron/CiStatusUpdateCron.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
"github.com/caarlos0/env"
2222
"github.com/devtron-labs/devtron/internal/sql/repository/pipelineConfig"
2323
"github.com/devtron-labs/devtron/pkg/app"
24-
"github.com/devtron-labs/devtron/pkg/pipeline"
24+
"github.com/devtron-labs/devtron/pkg/workflow/dag"
2525
cron2 "github.com/devtron-labs/devtron/util/cron"
2626
"github.com/robfig/cron/v3"
2727
"go.uber.org/zap"
@@ -38,12 +38,13 @@ type CiStatusUpdateCronImpl struct {
3838
appService app.AppService
3939
ciWorkflowStatusUpdateConfig *CiWorkflowStatusUpdateConfig
4040
ciPipelineRepository pipelineConfig.CiPipelineRepository
41-
ciHandler pipeline.CiHandler
41+
workflowDagExecutor dag.WorkflowDagExecutor
4242
}
4343

4444
func NewCiStatusUpdateCronImpl(logger *zap.SugaredLogger, appService app.AppService,
4545
ciWorkflowStatusUpdateConfig *CiWorkflowStatusUpdateConfig, ciPipelineRepository pipelineConfig.CiPipelineRepository,
46-
ciHandler pipeline.CiHandler, cronLogger *cron2.CronLoggerImpl) *CiStatusUpdateCronImpl {
46+
cronLogger *cron2.CronLoggerImpl,
47+
workflowDagExecutor dag.WorkflowDagExecutor) *CiStatusUpdateCronImpl {
4748
cron := cron.New(
4849
cron.WithChain(cron.Recover(cronLogger)))
4950
cron.Start()
@@ -53,7 +54,7 @@ func NewCiStatusUpdateCronImpl(logger *zap.SugaredLogger, appService app.AppServ
5354
appService: appService,
5455
ciWorkflowStatusUpdateConfig: ciWorkflowStatusUpdateConfig,
5556
ciPipelineRepository: ciPipelineRepository,
56-
ciHandler: ciHandler,
57+
workflowDagExecutor: workflowDagExecutor,
5758
}
5859

5960
// execute periodically, update ci workflow status for failed process
@@ -87,7 +88,7 @@ func (impl *CiStatusUpdateCronImpl) UpdateCiWorkflowStatusFailedCron() {
8788
impl.logger.Errorw("error in converting string to int", "err", err)
8889
return
8990
}
90-
err = impl.ciHandler.UpdateCiWorkflowStatusFailure(timeoutForFailureCiBuild)
91+
err = impl.workflowDagExecutor.UpdateCiWorkflowStatusFailure(timeoutForFailureCiBuild)
9192
if err != nil {
9293
impl.logger.Errorw("error in updating ci workflow status for failed workflows", "err", err)
9394
return

client/cron/CiTriggerCron.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
bean2 "github.com/devtron-labs/devtron/pkg/auth/user/bean"
2424
"github.com/devtron-labs/devtron/pkg/bean"
2525
"github.com/devtron-labs/devtron/pkg/build/pipeline/bean/common"
26-
"github.com/devtron-labs/devtron/pkg/pipeline"
26+
"github.com/devtron-labs/devtron/pkg/build/trigger"
2727
"github.com/devtron-labs/devtron/pkg/pipeline/repository"
2828
repository3 "github.com/devtron-labs/devtron/pkg/plugin/repository"
2929
cron2 "github.com/devtron-labs/devtron/util/cron"
@@ -40,24 +40,25 @@ type CiTriggerCronImpl struct {
4040
cron *cron.Cron
4141
cfg *CiTriggerCronConfig
4242
pipelineStageRepository repository.PipelineStageRepository
43-
ciHandler pipeline.CiHandler
4443
ciArtifactRepository repository2.CiArtifactRepository
4544
globalPluginRepository repository3.GlobalPluginRepository
45+
ciHandlerService trigger.HandlerService
4646
}
4747

4848
func NewCiTriggerCronImpl(logger *zap.SugaredLogger, cfg *CiTriggerCronConfig, pipelineStageRepository repository.PipelineStageRepository,
49-
ciHandler pipeline.CiHandler, ciArtifactRepository repository2.CiArtifactRepository, globalPluginRepository repository3.GlobalPluginRepository, cronLogger *cron2.CronLoggerImpl) *CiTriggerCronImpl {
49+
ciArtifactRepository repository2.CiArtifactRepository, globalPluginRepository repository3.GlobalPluginRepository, cronLogger *cron2.CronLoggerImpl,
50+
ciHandlerService trigger.HandlerService) *CiTriggerCronImpl {
5051
cron := cron.New(
5152
cron.WithChain(cron.Recover(cronLogger)))
5253
cron.Start()
5354
impl := &CiTriggerCronImpl{
5455
logger: logger,
5556
cron: cron,
5657
pipelineStageRepository: pipelineStageRepository,
57-
ciHandler: ciHandler,
5858
cfg: cfg,
5959
ciArtifactRepository: ciArtifactRepository,
6060
globalPluginRepository: globalPluginRepository,
61+
ciHandlerService: ciHandlerService,
6162
}
6263

6364
_, err := cron.AddFunc(fmt.Sprintf("@every %dm", cfg.SourceControllerCronTime), impl.TriggerCiCron)
@@ -103,7 +104,7 @@ func (impl *CiTriggerCronImpl) TriggerCiCron() {
103104
InvalidateCache: false,
104105
PipelineType: string(common.CI_JOB),
105106
}
106-
_, err = impl.ciHandler.HandleCIManual(ciTriggerRequest)
107+
_, err = impl.ciHandlerService.HandleCIManual(ciTriggerRequest)
107108
if err != nil {
108109
return
109110
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package pipelineConfig
2+
3+
import "github.com/devtron-labs/devtron/pkg/bean/common"
4+
5+
func (p *CiPipeline) GetWorkflowCacheConfig() common.WorkflowCacheConfigType {
6+
//in oss, there is no pipeline level workflow cache config, so we pass inherit to get the app level config
7+
return common.WorkflowCacheConfigInherit
8+
}

pkg/build/git/gitWebhook/GitWebhookService.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
bean2 "github.com/devtron-labs/devtron/pkg/auth/user/bean"
2424
"github.com/devtron-labs/devtron/pkg/bean"
2525
"github.com/devtron-labs/devtron/pkg/build/git/gitWebhook/repository"
26-
"github.com/devtron-labs/devtron/pkg/pipeline"
26+
"github.com/devtron-labs/devtron/pkg/build/trigger"
2727
"go.uber.org/zap"
2828
)
2929

@@ -33,15 +33,16 @@ type GitWebhookService interface {
3333

3434
type GitWebhookServiceImpl struct {
3535
logger *zap.SugaredLogger
36-
ciHandler pipeline.CiHandler
3736
gitWebhookRepository repository.GitWebhookRepository
37+
ciHandlerService trigger.HandlerService
3838
}
3939

40-
func NewGitWebhookServiceImpl(Logger *zap.SugaredLogger, ciHandler pipeline.CiHandler, gitWebhookRepository repository.GitWebhookRepository) *GitWebhookServiceImpl {
40+
func NewGitWebhookServiceImpl(Logger *zap.SugaredLogger, gitWebhookRepository repository.GitWebhookRepository,
41+
ciHandlerService trigger.HandlerService) *GitWebhookServiceImpl {
4142
return &GitWebhookServiceImpl{
4243
logger: Logger,
43-
ciHandler: ciHandler,
4444
gitWebhookRepository: gitWebhookRepository,
45+
ciHandlerService: ciHandlerService,
4546
}
4647
}
4748

@@ -70,7 +71,7 @@ func (impl *GitWebhookServiceImpl) HandleGitWebhook(gitWebhookRequest gitSensor.
7071
}
7172
}
7273

73-
resp, err := impl.ciHandler.HandleCIWebhook(bean.GitCiTriggerRequest{
74+
resp, err := impl.ciHandlerService.HandleCIWebhook(bean.GitCiTriggerRequest{
7475
CiPipelineMaterial: ciPipelineMaterial,
7576
TriggeredBy: bean2.SYSTEM_USER_ID, // Automatic trigger, system user
7677
ExtraEnvironmentVariables: gitWebhookRequest.ExtraEnvironmentVariables,

pkg/build/pipeline/bean/common/CommonBuildBean.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,16 @@ func (pType PipelineType) IsValidPipelineType() bool {
2525
return false
2626
}
2727
}
28+
29+
const (
30+
BEFORE_DOCKER_BUILD = "BEFORE_DOCKER_BUILD"
31+
AFTER_DOCKER_BUILD = "AFTER_DOCKER_BUILD"
32+
)
33+
34+
type RefPluginName = string
35+
36+
const (
37+
COPY_CONTAINER_IMAGE RefPluginName = "Copy container image"
38+
COPY_CONTAINER_IMAGE_VERSION_V1 = "1.0.0"
39+
COPY_CONTAINER_IMAGE_VERSION_V2 = "2.0.0"
40+
)

0 commit comments

Comments
 (0)