diff --git a/.github/workflows/example.yml b/.github/workflows/example.yml index 0e5d3be..dba744a 100644 --- a/.github/workflows/example.yml +++ b/.github/workflows/example.yml @@ -1,8 +1,8 @@ name: Sample Testing -on: [workflow_dispatch] +on: [push] env: - VER: 0.3.1 + VER: 0.1.2 jobs: my_job: @@ -22,10 +22,10 @@ jobs: webhook: "${{ secrets.WEBHOOK_URL }}" # event_body: "" # optional -# - name: Force failure -# run: | -# echo "This is a force failure" -# exit 1 + - name: Force failure + run: | + echo "This is a force failure" + exit 1 - name: Second Chat Message as ThreadResponse if: ${{ always() }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 581badf..2890b3e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,9 +7,6 @@ on: branches: - '**' -env: - VER: 0.3.1 - # If a 403 error occurs, make sure to set content permission to write # see: https://github.com/go-semantic-release/action/issues/27 permissions: @@ -25,14 +22,10 @@ jobs: - name: Setup GO uses: actions/setup-go@v6 with: - # go-version: 1.26 - go-version-file: 'go.mod' - cache-dependency-path: 'go.sum' + go-version: 1.26 - name: GO Linting - uses: golangci/golangci-lint-action@v9 - with: - version: v2.11 + uses: golangci/golangci-lint-action@v3 # build: # runs-on: stackit-docker @@ -54,18 +47,6 @@ jobs: outputs: tag: ${{ steps.create_release.outputs.tag }} steps: - - name: "🖅 [START] release workflow" - if: ${{ always() }} - uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v${{ env.VER }} - with: - title: "[START] release workflow (${{ forgejo.run_number }})" - subtitle: "${{ forgejo.repostitory }}" - author: ${{ forgejo.actor }} - giturl: ${{ forgejo.server_url }} - iconslug: instacart - actionid: ${{ forgejo.run_number }} - webhook: "${{ secrets.WEBHOOK_URL }}" - - name: Checkout code uses: actions/checkout@v6 @@ -91,7 +72,6 @@ jobs: run: | npx \ -p semantic-release \ - -p semantic-release-replace-plugin \ -p @semantic-release/commit-analyzer \ -p @semantic-release/release-notes-generator \ -p @semantic-release/changelog \ @@ -115,29 +95,8 @@ jobs: if: steps.create_release.outputs.tag != '' uses: docker/setup-buildx-action@v4 - - name: Build only - if: steps.create_release.outputs.tag == '' + - name: Build and push uses: docker/build-push-action@v7 with: push: false - tags: actions/notify-slim:dev - - - name: Build and push - if: steps.create_release.outputs.tag != '' - uses: docker/build-push-action@v7 - with: - push: true - tags: stackit-solutions.git.onstackit.cloud/actions/notify-slim:${{ steps.create_release.outputs.tag }} - - - name: "🖅 [END] release workflow" - if: ${{ always() }} - uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v${{ env.VER }} - with: - title: "[END] release workflow (${{ forgejo.run_number }})" - subtitle: "${{ forgejo.repostitory }}" - author: ${{ forgejo.actor }} - giturl: ${{ forgejo.server_url }} - iconslug: instacart - actionid: ${{ forgejo.run_number }} - webhook: "${{ secrets.WEBHOOK_URL }}" - status: 'completed' + tags: actions/notify-slim:${{ steps.create_release.outputs.tag }} diff --git a/.golangci.yaml b/.golang-ci.yaml similarity index 96% rename from .golangci.yaml rename to .golang-ci.yaml index 35b6ac1..b5d12d0 100644 --- a/.golangci.yaml +++ b/.golang-ci.yaml @@ -70,7 +70,9 @@ linters: - name: empty-lines - name: early-return exclusions: - paths: [] + paths: + - generator/ + - internal/testutils generated: lax warn-unused: true # Excluding configuration per-path, per-linter, per-text and per-source. diff --git a/.releaserc.json b/.releaserc.json index 8310b91..d36c572 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -3,76 +3,8 @@ "tagFormat": "v${version}", "plugins": [ "@semantic-release/commit-analyzer", - [ - "semantic-release-replace-plugin", - { - "replacements": [ - { - "files": ["action.yml"], - "from": " image: 'docker://stackit-solutions.git.onstackit.cloud/actions/notify-slim:v.*'", - "to": " image: 'docker://stackit-solutions.git.onstackit.cloud/actions/notify-slim:v${nextRelease.version}'", - "results": [ - { - "file": "action.yml", - "hasChanged": true, - "numMatches": 1, - "numReplacements": 1 - } - ], - "countMatches": true - }, - { - "files": ["README.md"], - "from": " uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v.*", - "to": " uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v${nextRelease.version}", - "results": [ - { - "file": "README.md", - "hasChanged": true, - "numMatches": 1, - "numReplacements": 1 - } - ], - "countMatches": true - }, - { - "files": [".github/workflows/example.yml"], - "from": " VER: .*", - "to": " VER: ${nextRelease.version}", - "results": [ - { - "file": ".github/workflows/example.yml", - "hasChanged": true, - "numMatches": 1, - "numReplacements": 1 - } - ], - "countMatches": true - }, - { - "files": [".github/workflows/release.yml"], - "from": " VER: .*", - "to": " VER: ${nextRelease.version}", - "results": [ - { - "file": ".github/workflows/release.yml", - "hasChanged": true, - "numMatches": 1, - "numReplacements": 1 - } - ], - "countMatches": true - } - ] - } - ], "@semantic-release/release-notes-generator", "@semantic-release/changelog", - [ - "@semantic-release/git", - { - "assets": ["CHANGELOG.md", "README.md", "action.yml", ".github/workflows/example.yml", ".github/workflows/release.yml"] - } - ] + "@semantic-release/git" ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 24b7be5..3428ef0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,18 +1,3 @@ -## [0.3.1](https://stackit-solutions.git.onstackit.cloud/actions/notify/compare/v0.3.0...v0.3.1) (2026-04-17) - - -### Bug Fixes - -* pipeline fixes ([b195a1d](https://stackit-solutions.git.onstackit.cloud/actions/notify/commit/b195a1dcfdd7bf98eaaeb976d08260a2457da317)) - -# [0.3.0](https://stackit-solutions.git.onstackit.cloud/actions/notify/compare/v0.2.0...v0.3.0) (2026-04-17) - - -### Features - -* linting ([68c1f11](https://stackit-solutions.git.onstackit.cloud/actions/notify/commit/68c1f11a5cc02918166ca05e4af79712a5c0964b)) -* linting ([16a5f87](https://stackit-solutions.git.onstackit.cloud/actions/notify/commit/16a5f874b341a6d4776dbe5e46be391f1d6576d8)) - # [0.2.0](https://stackit-solutions.git.onstackit.cloud/actions/notify/compare/v0.1.2...v0.2.0) (2026-04-17) diff --git a/README.md b/README.md index c4e8400..97d5ff4 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ jobs: # ... all your steps - name: Sample Chat Message if: ${{ always() }} # runs als after fails - uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v0.3.1 + uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v0.1.2 with: title: "[START] sample test (${{ forgejo.run_number }})" author: ${{ forgejo.actor }} diff --git a/go.sum b/go.sum deleted file mode 100644 index b8212ad..0000000 --- a/go.sum +++ /dev/null @@ -1,6 +0,0 @@ -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/sethvargo/go-githubactions v1.3.2 h1:gkibLr/QjosgNWoCf1V58rTMRZw7xZtSB7dY4atbl1Y= -github.com/sethvargo/go-githubactions v1.3.2/go.mod h1:7/4WeHgYfSz9U5vwuToCK9KPnELVHAhGtRwLREOQV80= diff --git a/main.go b/main.go index 7a9eafc..12cb578 100644 --- a/main.go +++ b/main.go @@ -42,56 +42,6 @@ func main() { data.CardID = uuid.NewString() data.Add = "" - getData(&data) - - webhook := githubactions.GetInput("webhook") - if webhook == "" { - githubactions.Fatalf("Missing input 'webhook'") - os.Exit(1) - } - webhook = fmt.Sprintf("%s&threadKey=notify%s&messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD", webhook, data.ActionID) - - giturl := githubactions.GetInput("giturl") - if giturl == "" { - githubactions.Fatalf("Missing input 'giturl'") - os.Exit(1) - } - data.GitURL = giturl - - body := githubactions.GetInput("event_body") - data.EventBody = body - - githubactions.Infof("using URL: %s", webhook) - - jsonStr, err := card(data) - if err != nil { - githubactions.Fatalf("err %s", err.Error()) - os.Exit(1) - } - - req, err := http.NewRequest("POST", webhook, bytes.NewBuffer(jsonStr)) - if err != nil { - githubactions.Fatalf("error %s", err.Error()) - os.Exit(1) - } - req.Header.Set("Content-Type", "application/json; charset=UTF-8") - client := &http.Client{} - resp, err := client.Do(req) - if err != nil { - githubactions.Fatalf("error %s", err.Error()) - os.Exit(1) - } - defer resp.Body.Close() //nolint:gocritic - - fmt.Println("response Status:", resp.Status) - if resp.StatusCode != http.StatusOK { - githubactions.Infof("json: %s", jsonStr) - githubactions.Fatalf("response: %+v\n", resp) - os.Exit(1) - } -} - -func getData(data *templateData) { prj, ok := os.LookupEnv("FORGEJO_REPOSITORY") if ok { data.Project = prj @@ -134,6 +84,56 @@ func getData(data *templateData) { os.Exit(1) } data.ActionID = actionid + + webhook := githubactions.GetInput("webhook") + if webhook == "" { + githubactions.Fatalf("Missing input 'webhook'") + os.Exit(1) + } + webhook = fmt.Sprintf("%s&threadKey=notify%s&messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD", webhook, data.ActionID) + + giturl := githubactions.GetInput("giturl") + if giturl == "" { + githubactions.Fatalf("Missing input 'giturl'") + os.Exit(1) + } + data.GitURL = giturl + + body := githubactions.GetInput("event_body") + data.EventBody = body + + githubactions.Infof("using URL: %s", webhook) + // fmt.Println("URL:> ", webhook) + + // var jsonStr = []byte(fmt.Sprintf(data, project, commit, branch, status, actionid)) + + jsonStr, err := card(data) + if err != nil { + githubactions.Fatalf("error %s", err.Error()) + os.Exit(1) + } + + // log.Printf("retrieved data: %s", string(jsonStr)) + + req, err := http.NewRequest("POST", webhook, bytes.NewBuffer(jsonStr)) + if err != nil { + githubactions.Fatalf("error %s", err.Error()) + os.Exit(1) + } + req.Header.Set("Content-Type", "application/json; charset=UTF-8") + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + githubactions.Fatalf("error %s", err.Error()) + os.Exit(1) + } + defer resp.Body.Close() + fmt.Println("response Status:", resp.Status) + if resp.StatusCode != http.StatusOK { + githubactions.Infof("json: %s", jsonStr) + githubactions.Fatalf("response: %+v\n", resp) + os.Exit(1) + } } func card(d templateData) ([]byte, error) { diff --git a/main_test.go b/main_test.go index f7e5241..5c04597 100644 --- a/main_test.go +++ b/main_test.go @@ -27,6 +27,8 @@ func Test_card(t *testing.T) { Author: "gotest", IconUrl: "https://github.githubassets.com/images/modules/logos_page/Octocat.png", Project: "proj", + Commit: "12345", + Branch: "main", Status: "success", ActionID: "123", GitURL: "https://test.url", @@ -113,6 +115,9 @@ func Test_card(t *testing.T) { t.Fatalf("error: %v\nsrc: %s", err, tt.want) } + //if !reflect.DeepEqual(wantJson, gotJson) { + // t.Errorf("card() got = %v, want %v", gotJson, wantJson) + //} if diff := cmp.Diff(wantJson, gotJson); diff != "" { t.Errorf("MakeGatewayInfo() mismatch (-want +got):\n%s", diff) }