From 3a5f51420e4355a485706dd7dc577bc5b86e3105 Mon Sep 17 00:00:00 2001 From: motatoes Date: Mon, 17 Mar 2025 14:28:13 +0300 Subject: [PATCH 1/3] add binaries to published artefacts --- .github/workflows/cli_release.yml | 33 ++++++++--------- .github/workflows/ee_cli_release.yml | 28 ++++++++------- .../workflows/ee_cli_release_multiarch.yml | 35 ++++++++----------- 3 files changed, 44 insertions(+), 52 deletions(-) diff --git a/.github/workflows/cli_release.yml b/.github/workflows/cli_release.yml index 8cd2f4421..6bf993f6b 100644 --- a/.github/workflows/cli_release.yml +++ b/.github/workflows/cli_release.yml @@ -13,27 +13,22 @@ jobs: runs-on: ubuntu-latest steps: - - name: Download Go - uses: actions/setup-go@v5 - with: - go-version: 1.21.1 - id: go - - name: Check out repository uses: actions/checkout@v4 - - name: Build - run: | - echo "Tag that is going to be used as digger version: ${{ github.event.release.tag_name }}" - env GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-X digger/pkg/utils.version=${{ github.event.release.tag_name }}" -o digger ./cli/cmd/digger - - name: Publish linux-x64 exec to github - id: upload-release-asset-linux-x64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + id: build-and-release-binary + uses: wangyoucao577/go-release-action@8fa1e8368c8465264d64e0198208e10f71474c87 # v1.50 with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: 'digger' - asset_name: digger-cli-Linux-X64 - asset_content_type: application/octet-stream + github_token: ${{ secrets.GITHUB_TOKEN }} + goos: linux + goarch: amd64 + goversion: 1.21.1 + project_path: ./cli/cmd/digger + binary_name: digger + pre_command: export CGO_ENABLED=0 + ldflags: ${{ matrix.ldflags }} + sha256sum: true + md5sum: false + asset_name: "digger-cli-Linux-X64" + compress_assets: "OFF" diff --git a/.github/workflows/ee_cli_release.yml b/.github/workflows/ee_cli_release.yml index 08f038219..000b03b46 100644 --- a/.github/workflows/ee_cli_release.yml +++ b/.github/workflows/ee_cli_release.yml @@ -22,18 +22,20 @@ jobs: - name: Check out repository uses: actions/checkout@v4 - - name: Build - run: | - echo "Tag that is going to be used as digger version: ${{ github.event.release.tag_name }}" - env GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-X digger/pkg/utils.version=${{ github.event.release.tag_name }}" -o digger ./ee/cli/cmd/digger - - name: Publish linux-x64 exec to github - id: upload-release-asset-linux-x64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + id: build-and-release-binary + uses: wangyoucao577/go-release-action@8fa1e8368c8465264d64e0198208e10f71474c87 # v1.50 with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: 'digger' - asset_name: digger-ee-cli-Linux-X64 - asset_content_type: application/octet-stream + github_token: ${{ secrets.GITHUB_TOKEN }} + goos: linux + goarch: amd64 + goversion: 1.21.1 + project_path: ./cli/cmd/digger + binary_name: digger + pre_command: export CGO_ENABLED=0 + ldflags: ${{ matrix.ldflags }} + sha256sum: true + md5sum: false + asset_name: "digger-ee-cli-Linux-X64" + compress_assets: "OFF" + diff --git a/.github/workflows/ee_cli_release_multiarch.yml b/.github/workflows/ee_cli_release_multiarch.yml index 34bdb807e..fea3be9c9 100644 --- a/.github/workflows/ee_cli_release_multiarch.yml +++ b/.github/workflows/ee_cli_release_multiarch.yml @@ -23,27 +23,22 @@ jobs: runs-on: ubuntu-latest steps: - - name: Download Go - uses: actions/setup-go@v5 - with: - go-version: 1.21.1 - id: go - - name: Check out repository uses: actions/checkout@v4 - - name: Build - run: | - echo "Tag that is going to be used as digger version: ${{ github.event.release.tag_name }}" - env GOOS=${{matrix.os}} GOARCH=${{matrix.arch}} CGO_ENABLED=0 go build -ldflags="-X digger/pkg/utils.version=${{ github.event.release.tag_name }}" -o digger ./ee/cli/cmd/digger - - - name: Publish linux-x64 exec to github - id: upload-release-asset-linux-x64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Build and publish binary artifact to GitHub + id: build-and-release-binary + uses: wangyoucao577/go-release-action@8fa1e8368c8465264d64e0198208e10f71474c87 # v1.50 with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: 'digger' - asset_name: digger-ee-cli-${{matrix.os}}-${{matrix.arch}} - asset_content_type: application/octet-stream + github_token: ${{ secrets.GITHUB_TOKEN }} + goos: ${{ matrix.os }} + goarch: ${{ matrix.arch }} + goversion: 1.21.1 + project_path: ./ee/cli/cmd/digger + binary_name: digger + pre_command: export CGO_ENABLED=0 + ldflags: ${{ matrix.ldflags }} + sha256sum: true + md5sum: false + asset_name: "digger-ee-cli-${{matrix.os}}-${{matrix.arch}}" + compress_assets: "OFF" From 0bcb75fcb72e06796e303872374b35efe5dde55e Mon Sep 17 00:00:00 2001 From: motatoes Date: Mon, 17 Mar 2025 19:29:52 +0300 Subject: [PATCH 2/3] fix automatic deletion for gitlab --- ee/backend/controllers/gitlab.go | 25 +++++++++++++++++++++++++ libs/ci/gitlab/gitlab.go | 23 ++++++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/ee/backend/controllers/gitlab.go b/ee/backend/controllers/gitlab.go index 7f19ffedd..83963daf7 100644 --- a/ee/backend/controllers/gitlab.go +++ b/ee/backend/controllers/gitlab.go @@ -197,6 +197,7 @@ func handlePullRequestEvent(gitlabProvider utils.GitlabProvider, payload *gitlab isDraft := payload.ObjectAttributes.WorkInProgress branch := payload.ObjectAttributes.SourceBranch commitSha := payload.ObjectAttributes.LastCommit.ID + action := payload.ObjectAttributes.Action //defaultBranch := payload.Repository.DefaultBranch //actor := payload.User.Username //discussionId := "" @@ -208,6 +209,30 @@ func handlePullRequestEvent(gitlabProvider utils.GitlabProvider, payload *gitlab log.Printf("GetGithubService error: %v", glerr) return fmt.Errorf("error getting ghService to post error comment") } + + // here we check if pr was merged and automatic deletion is enabled, to avoid errors when + // pr is merged and the branch does not exist we handle that gracefully + if action == "merge" { + sourceBranch, _, err := glService.GetBranchName(prNumber) + if err != nil { + utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: Could not retrieve PR details, error: %v", err)) + log.Printf("Could not retrieve PR details error: %v", err) + return fmt.Errorf("Could not retrieve PR details: %v", err) + } + + branchExists, err := glService.CheckBranchExists(sourceBranch) + if err != nil { + utils.InitCommentReporter(glService, prNumber, fmt.Sprintf(":x: Could not check if branch exists, error: %v", err)) + log.Printf("Could not check if branch exists, error: %v", err) + return fmt.Errorf("Could not check if branch exists: %v", err) + + } + if !branchExists { + log.Printf("automatic branch deletion is configured, ignoring pr closed event") + return nil + } + } + comment, err := glService.PublishComment(prNumber, fmt.Sprintf("Report for pull request (%v)", commitSha)) discussionId := comment.DiscussionId diff --git a/libs/ci/gitlab/gitlab.go b/libs/ci/gitlab/gitlab.go index 36c096ff5..088bcffdd 100644 --- a/libs/ci/gitlab/gitlab.go +++ b/libs/ci/gitlab/gitlab.go @@ -301,7 +301,28 @@ func (gitlabService GitLabService) GetApprovals(prNumber int) ([]string, error) func (gitlabService GitLabService) GetBranchName(prNumber int) (string, string, error) { //TODO implement me - return "", "", nil + projectId := *gitlabService.Context.ProjectId + log.Printf("CheckBranchExists prNumber : %d, projectId: %d \n", prNumber, projectId) + options := go_gitlab.GetMergeRequestsOptions{} + pr, _, err := gitlabService.Client.MergeRequests.GetMergeRequest(projectId, prNumber, &options) + if err != nil { + log.Printf("error while getting branch name for pr: %v", err) + return "", "", err + } + return pr.SourceBranch, pr.SHA, nil +} + +func (gitlabService GitLabService) CheckBranchExists(branchName string) (bool, error) { + projectId := *gitlabService.Context.ProjectId + log.Printf("CheckBranchExists branchName : %d, projectId: %d \n", branchName, projectId) + _, resp, err := gitlabService.Client.Branches.GetBranch(projectId, branchName) + if err != nil { + if resp != nil && resp.StatusCode == 404 { + return false, nil + } + return false, err + } + return true, nil } func (svc GitLabService) SetOutput(prNumber int, key string, value string) error { From f3a2a7202edb6d5ec011547542a221f1b128dc95 Mon Sep 17 00:00:00 2001 From: motatoes Date: Mon, 17 Mar 2025 19:37:10 +0300 Subject: [PATCH 3/3] fix build --- libs/ci/gitlab/gitlab.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ci/gitlab/gitlab.go b/libs/ci/gitlab/gitlab.go index 088bcffdd..bc4c27dae 100644 --- a/libs/ci/gitlab/gitlab.go +++ b/libs/ci/gitlab/gitlab.go @@ -314,7 +314,7 @@ func (gitlabService GitLabService) GetBranchName(prNumber int) (string, string, func (gitlabService GitLabService) CheckBranchExists(branchName string) (bool, error) { projectId := *gitlabService.Context.ProjectId - log.Printf("CheckBranchExists branchName : %d, projectId: %d \n", branchName, projectId) + log.Printf("CheckBranchExists branchName : %v, projectId: %d \n", branchName, projectId) _, resp, err := gitlabService.Client.Branches.GetBranch(projectId, branchName) if err != nil { if resp != nil && resp.StatusCode == 404 {