From 5cdcf24199bb39cbf8250074d0974029a4e15c34 Mon Sep 17 00:00:00 2001 From: Javier Rodriguez Date: Thu, 8 Jan 2026 12:37:11 +0100 Subject: [PATCH 1/3] feat(dagger): Allow github and gitlab PR related env on Dagger runner Signed-off-by: Javier Rodriguez --- .../crafter/runners/daggerpipeline.go | 16 ++++- .../crafter/runners/daggerpipeline_test.go | 59 ++++++++++++++++++- 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/pkg/attestation/crafter/runners/daggerpipeline.go b/pkg/attestation/crafter/runners/daggerpipeline.go index e242c0edb..647875918 100644 --- a/pkg/attestation/crafter/runners/daggerpipeline.go +++ b/pkg/attestation/crafter/runners/daggerpipeline.go @@ -1,5 +1,5 @@ // -// Copyright 2024 The Chainloop Authors. +// Copyright 2024-2025 The Chainloop Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -45,6 +45,20 @@ func (r *DaggerPipeline) ListEnvVars() []*EnvVarDefinition { return []*EnvVarDefinition{ // Version of the Chainloop Client {"CHAINLOOP_DAGGER_CLIENT", false}, + // Github Actions PR-specific variables (optional - only present in PR contexts) + {"GITHUB_EVENT_NAME", true}, + {"GITHUB_HEAD_REF", true}, + {"GITHUB_BASE_REF", true}, + {"GITHUB_EVENT_PATH", true}, + // Gitlab CI MR-specific variables (optional - only present in MR contexts) + {"CI_PIPELINE_SOURCE", true}, + {"CI_MERGE_REQUEST_IID", true}, + {"CI_MERGE_REQUEST_TITLE", true}, + {"CI_MERGE_REQUEST_DESCRIPTION", true}, + {"CI_MERGE_REQUEST_SOURCE_BRANCH_NAME", true}, + {"CI_MERGE_REQUEST_TARGET_BRANCH_NAME", true}, + {"CI_MERGE_REQUEST_PROJECT_URL", true}, + {"GITLAB_USER_LOGIN", true}, } } diff --git a/pkg/attestation/crafter/runners/daggerpipeline_test.go b/pkg/attestation/crafter/runners/daggerpipeline_test.go index f56191ae9..02d70881f 100644 --- a/pkg/attestation/crafter/runners/daggerpipeline_test.go +++ b/pkg/attestation/crafter/runners/daggerpipeline_test.go @@ -1,5 +1,5 @@ // -// Copyright 2024 The Chainloop Authors. +// Copyright 2024-2026 The Chainloop Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -62,7 +62,24 @@ func (s *daggerPipelineSuite) TestCheckEnv() { } func (s *daggerPipelineSuite) TestListEnvVars() { - assert.Equal(s.T(), []*EnvVarDefinition{{"CHAINLOOP_DAGGER_CLIENT", false}}, s.runner.ListEnvVars()) + expected := []*EnvVarDefinition{ + {"CHAINLOOP_DAGGER_CLIENT", false}, + // Github Actions PR-specific variables + {"GITHUB_EVENT_NAME", true}, + {"GITHUB_HEAD_REF", true}, + {"GITHUB_BASE_REF", true}, + {"GITHUB_EVENT_PATH", true}, + // Gitlab CI MR-specific variables + {"CI_PIPELINE_SOURCE", true}, + {"CI_MERGE_REQUEST_IID", true}, + {"CI_MERGE_REQUEST_TITLE", true}, + {"CI_MERGE_REQUEST_DESCRIPTION", true}, + {"CI_MERGE_REQUEST_SOURCE_BRANCH_NAME", true}, + {"CI_MERGE_REQUEST_TARGET_BRANCH_NAME", true}, + {"CI_MERGE_REQUEST_PROJECT_URL", true}, + {"GITLAB_USER_LOGIN", true}, + } + assert.Equal(s.T(), expected, s.runner.ListEnvVars()) } func (s *daggerPipelineSuite) TestResolveEnvVars() { @@ -71,6 +88,44 @@ func (s *daggerPipelineSuite) TestResolveEnvVars() { s.Equal(map[string]string{"CHAINLOOP_DAGGER_CLIENT": "v0.6.0"}, resolvedEnvVars) } +func (s *daggerPipelineSuite) TestResolveEnvVarsWithGithubPRContext() { + t := s.T() + t.Setenv("GITHUB_EVENT_NAME", "pull_request") + t.Setenv("GITHUB_HEAD_REF", "feature-branch") + t.Setenv("GITHUB_BASE_REF", "main") + t.Setenv("GITHUB_EVENT_PATH", "/tmp/github_event.json") + + resolvedEnvVars, errors := s.runner.ResolveEnvVars() + s.Empty(errors) + s.Equal(map[string]string{ + "CHAINLOOP_DAGGER_CLIENT": "v0.6.0", + "GITHUB_EVENT_NAME": "pull_request", + "GITHUB_HEAD_REF": "feature-branch", + "GITHUB_BASE_REF": "main", + "GITHUB_EVENT_PATH": "/tmp/github_event.json", + }, resolvedEnvVars) +} + +func (s *daggerPipelineSuite) TestResolveEnvVarsWithGitlabMRContext() { + t := s.T() + t.Setenv("CI_PIPELINE_SOURCE", "merge_request_event") + t.Setenv("CI_MERGE_REQUEST_IID", "123") + t.Setenv("CI_MERGE_REQUEST_TITLE", "Test MR") + t.Setenv("CI_MERGE_REQUEST_SOURCE_BRANCH_NAME", "feature-branch") + t.Setenv("CI_MERGE_REQUEST_TARGET_BRANCH_NAME", "main") + + resolvedEnvVars, errors := s.runner.ResolveEnvVars() + s.Empty(errors) + s.Equal(map[string]string{ + "CHAINLOOP_DAGGER_CLIENT": "v0.6.0", + "CI_PIPELINE_SOURCE": "merge_request_event", + "CI_MERGE_REQUEST_IID": "123", + "CI_MERGE_REQUEST_TITLE": "Test MR", + "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME": "feature-branch", + "CI_MERGE_REQUEST_TARGET_BRANCH_NAME": "main", + }, resolvedEnvVars) +} + func (s *daggerPipelineSuite) TestRunURI() { s.Equal("", s.runner.RunURI()) } From 132f56030de9ed5e1d9ab07a25a21fc6061ffb2d Mon Sep 17 00:00:00 2001 From: Javier Rodriguez Date: Thu, 8 Jan 2026 12:37:53 +0100 Subject: [PATCH 2/3] update date Signed-off-by: Javier Rodriguez --- pkg/attestation/crafter/runners/daggerpipeline.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/attestation/crafter/runners/daggerpipeline.go b/pkg/attestation/crafter/runners/daggerpipeline.go index 647875918..ae77d65ab 100644 --- a/pkg/attestation/crafter/runners/daggerpipeline.go +++ b/pkg/attestation/crafter/runners/daggerpipeline.go @@ -1,5 +1,5 @@ // -// Copyright 2024-2025 The Chainloop Authors. +// Copyright 2024-2026 The Chainloop Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 2cf7aafe1f01e11768c9a77abf4e9b829d317c5a Mon Sep 17 00:00:00 2001 From: Javier Rodriguez Date: Thu, 8 Jan 2026 12:55:25 +0100 Subject: [PATCH 3/3] modify tests Signed-off-by: Javier Rodriguez --- .../crafter/runners/daggerpipeline_test.go | 40 +------------------ 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/pkg/attestation/crafter/runners/daggerpipeline_test.go b/pkg/attestation/crafter/runners/daggerpipeline_test.go index 02d70881f..4c63640dc 100644 --- a/pkg/attestation/crafter/runners/daggerpipeline_test.go +++ b/pkg/attestation/crafter/runners/daggerpipeline_test.go @@ -85,45 +85,7 @@ func (s *daggerPipelineSuite) TestListEnvVars() { func (s *daggerPipelineSuite) TestResolveEnvVars() { resolvedEnvVars, errors := s.runner.ResolveEnvVars() s.Empty(errors) - s.Equal(map[string]string{"CHAINLOOP_DAGGER_CLIENT": "v0.6.0"}, resolvedEnvVars) -} - -func (s *daggerPipelineSuite) TestResolveEnvVarsWithGithubPRContext() { - t := s.T() - t.Setenv("GITHUB_EVENT_NAME", "pull_request") - t.Setenv("GITHUB_HEAD_REF", "feature-branch") - t.Setenv("GITHUB_BASE_REF", "main") - t.Setenv("GITHUB_EVENT_PATH", "/tmp/github_event.json") - - resolvedEnvVars, errors := s.runner.ResolveEnvVars() - s.Empty(errors) - s.Equal(map[string]string{ - "CHAINLOOP_DAGGER_CLIENT": "v0.6.0", - "GITHUB_EVENT_NAME": "pull_request", - "GITHUB_HEAD_REF": "feature-branch", - "GITHUB_BASE_REF": "main", - "GITHUB_EVENT_PATH": "/tmp/github_event.json", - }, resolvedEnvVars) -} - -func (s *daggerPipelineSuite) TestResolveEnvVarsWithGitlabMRContext() { - t := s.T() - t.Setenv("CI_PIPELINE_SOURCE", "merge_request_event") - t.Setenv("CI_MERGE_REQUEST_IID", "123") - t.Setenv("CI_MERGE_REQUEST_TITLE", "Test MR") - t.Setenv("CI_MERGE_REQUEST_SOURCE_BRANCH_NAME", "feature-branch") - t.Setenv("CI_MERGE_REQUEST_TARGET_BRANCH_NAME", "main") - - resolvedEnvVars, errors := s.runner.ResolveEnvVars() - s.Empty(errors) - s.Equal(map[string]string{ - "CHAINLOOP_DAGGER_CLIENT": "v0.6.0", - "CI_PIPELINE_SOURCE": "merge_request_event", - "CI_MERGE_REQUEST_IID": "123", - "CI_MERGE_REQUEST_TITLE": "Test MR", - "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME": "feature-branch", - "CI_MERGE_REQUEST_TARGET_BRANCH_NAME": "main", - }, resolvedEnvVars) + s.Equal("v0.6.0", resolvedEnvVars["CHAINLOOP_DAGGER_CLIENT"]) } func (s *daggerPipelineSuite) TestRunURI() {