diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0f4cd25 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.github +.gitignore +action.yml +docker-slimbuild +main_test.go diff --git a/.github/workflows/example.yml b/.github/workflows/example.yml index a8dad4a..0e5d3be 100644 --- a/.github/workflows/example.yml +++ b/.github/workflows/example.yml @@ -1,29 +1,41 @@ name: Sample Testing -on: [push] +on: [workflow_dispatch] + +env: + VER: 0.3.1 jobs: my_job: runs-on: stackit-docker steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Get commit hash + - name: First Chat Message if: ${{ always() }} - run: echo "::set-output name=sha8::$(echo ${FORGEJO_SHA} | cut -c1-8)" - id: slug - - - name: Chat Setup - if: ${{ always() }} - uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v0.1.1 + uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v${{ env.VER }} with: + title: "[START] sample test (${{ forgejo.run_number }})" author: ${{ forgejo.actor }} giturl: ${{ forgejo.server_url }} - project: ${{ forgejo.repository }} - commit: ${{ steps.slug.outputs.sha8 }} - branch: ${{ forgejo.ref }} - status: ${{ job.status }} - actionid: ${{ forgejo.run_id }} + iconslug: instacart + # status: ${{ job.status }} # optional + actionid: ${{ forgejo.run_number }} webhook: "${{ secrets.WEBHOOK_URL }}" - event_body: "" + # event_body: "" # optional + +# - name: Force failure +# run: | +# echo "This is a force failure" +# exit 1 + + - name: Second Chat Message as ThreadResponse + if: ${{ always() }} + uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v0.1.2 + with: + title: "[END] sample test (${{ forgejo.run_number }})" + iconslug: bun + author: ${{ forgejo.actor }} + giturl: ${{ forgejo.server_url }} + status: ${{ job.status }} + actionid: ${{ forgejo.run_number }} + webhook: "${{ secrets.WEBHOOK_URL }}" + event_body: "this time I provided a body" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..581badf --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,143 @@ +name: CI +on: + push: + branches: + - '**' + pull_request: + 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: + contents: write + +jobs: + lint: + runs-on: stackit-docker + steps: + - name: CI checkout + uses: actions/checkout@v6 + + - name: Setup GO + uses: actions/setup-go@v6 + with: + # go-version: 1.26 + go-version-file: 'go.mod' + cache-dependency-path: 'go.sum' + + - name: GO Linting + uses: golangci/golangci-lint-action@v9 + with: + version: v2.11 + +# build: +# runs-on: stackit-docker +## strategy: +## fail-fast: true +## matrix: +## node: [10, 12] +# steps: +# - uses: actions/checkout@v6 +# +# - uses: actions/setup-node@v1 +# with: +# node-version: ${{ matrix.node }} +# - run: npm ci +# - run: npm test + release: + runs-on: stackit-docker +# needs: build + 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 + +# - name: Semantic Release +# uses: go-semantic-release/action@v1 +# id: semrel +# with: +# github-token: ${{ env.FORGEJO_TOKEN }} +# allow-initial-development-versions: true +# # update-file: package.json +# changelog-file: CHANGELOG.md +# changelog-generator-opt: "emojis=true" + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Create Release + env: + FORGEJO_TOKEN: ${{ secrets.FORGEJO_TOKEN }} + id: create_release + 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 \ + -p @semantic-release/git \ + semantic-release + echo "tag=$(git describe --tags --abbrev=0)" >> $FORGEJO_OUTPUT + + - name: Login to Docker Hub + if: steps.create_release.outputs.tag != '' + uses: docker/login-action@v4 + with: + registry: ${{ forgejo.server_url }} + username: ${{ vars.GIT_USERNAME }} + password: ${{ secrets.GIT_PAT }} + +# - name: Set up QEMU +# if: steps.semrel.outputs.version != '' +# uses: docker/setup-qemu-action@v4 + + - name: Set up Docker Buildx + if: steps.create_release.outputs.tag != '' + uses: docker/setup-buildx-action@v4 + + - name: Build only + if: steps.create_release.outputs.tag == '' + 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' diff --git a/.golangci.yaml b/.golangci.yaml new file mode 100644 index 0000000..35b6ac1 --- /dev/null +++ b/.golangci.yaml @@ -0,0 +1,88 @@ +version: "2" +run: + concurrency: 4 +output: + formats: + text: + print-linter-name: true + print-issued-lines: true + colors: true + path: stdout +linters: + enable: + - bodyclose + - depguard + - errorlint + - forcetypeassert + - gochecknoinits + - gocritic + - gosec + - misspell + - nakedret + - revive + - sqlclosecheck + - wastedassign + disable: + - noctx + - unparam + settings: + depguard: + rules: + main: + list-mode: original + allow: [] + deny: + - pkg: github.com/stretchr/testify + desc: Do not use a testing framework + gocritic: + disabled-checks: + - wrapperFunc + - typeDefFirst + - ifElseChain + - dupImport + - hugeParam + enabled-tags: + - performance + - style + - experimental + gosec: + excludes: + - G104 + - G102 + - G304 + - G307 + misspell: + locale: US + nakedret: + max-func-lines: 0 + revive: + severity: error + rules: + - name: errorf + - name: context-as-argument + - name: error-return + - name: increment-decrement + - name: indent-error-flow + - name: superfluous-else + - name: unused-parameter + - name: unreachable-code + - name: atomic + - name: empty-lines + - name: early-return + exclusions: + paths: [] + generated: lax + warn-unused: true + # Excluding configuration per-path, per-linter, per-text and per-source. + rules: + # Exclude some linters from running on tests files. + - path: _test\.go + linters: + - gochecknoinits +formatters: + enable: + - gofmt + - goimports +# settings: +# goimports: +# local-prefixes: diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 0000000..8310b91 --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,78 @@ +{ + "branches": ["main"], + "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"] + } + ] + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..24b7be5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,23 @@ +## [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) + + +### Features + +* linting ([9d4e8c9](https://stackit-solutions.git.onstackit.cloud/actions/notify/commit/9d4e8c9a9dc3fcc133299e978fed191ad6052aac)) +* linting ([5b93809](https://stackit-solutions.git.onstackit.cloud/actions/notify/commit/5b938091d705e01f6467cdd6be9144e491c66502)) +* pipeline container build ([0414cf6](https://stackit-solutions.git.onstackit.cloud/actions/notify/commit/0414cf6dfb9956c85bb48f5217806841f5819716)) diff --git a/Dockerfile b/Dockerfile index a24cb0d..f3035dc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,29 @@ -FROM golang:1.26 +FROM golang:1.26 AS builder -WORKDIR /src +RUN apt-get update && apt-get -y install upx + +WORKDIR /app + +ENV CGO_ENABLED=0 COPY . . -RUN go get -u github.com/sethvargo/go-githubactions/... && go build -o /bin/google-chat-action +RUN go mod tidy && go build \ + -a \ + -trimpath \ + -ldflags "-s -w -extldflags '-static'" \ + -installsuffix cgo \ + -tags netgo \ + -o /bin/google-chat-action \ + . + +RUN strip /bin/google-chat-action + +RUN upx -q -9 /bin/google-chat-action + +FROM scratch + +COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ + +COPY --from=builder /bin/google-chat-action /bin/google-chat-action ENTRYPOINT ["/bin/google-chat-action"] diff --git a/Dockerfile.big b/Dockerfile.big new file mode 100644 index 0000000..20cd801 --- /dev/null +++ b/Dockerfile.big @@ -0,0 +1,10 @@ +FROM golang:1.26 + +WORKDIR /src +COPY . . + +RUN go get -u github.com/sethvargo/go-githubactions/... \ + && go mod tidy \ + && go build -o /bin/google-chat-action + +ENTRYPOINT ["/bin/google-chat-action"] diff --git a/README.md b/README.md index d305f27..c4e8400 100644 --- a/README.md +++ b/README.md @@ -13,23 +13,20 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Get commit hash - if: ${{ always() }} - run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)" - id: slug - - - name: Chat Setup - if: ${{ always() }} - uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v0 - with: - project: ${{ github.repository }} - commit: ${{ steps.slug.outputs.sha8 }} - branch: ${{ github.ref }} - status: ${{ job.status }} - actionid: ${{ github.repository }}/runs/${{ github.run_id }} - webhook: "https://chat.googleapis.com/v1/spaces/AAAAzPcAy4s/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=MmdzluicdrdkyUAV_QwB6BzlLcIhbfrwNzxVrEllaec%3D&threadKey=git-commit" + # ... 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 + with: + title: "[START] sample test (${{ forgejo.run_number }})" + author: ${{ forgejo.actor }} + giturl: ${{ forgejo.server_url }} + iconslug: instacart # optional + # status: ${{ job.status }} # optional + actionid: ${{ forgejo.run_number }} + webhook: "${{ secrets.WEBHOOK_URL }}" + event_body: "This is a sample TEXT
with a new line" # optional ``` + +TODO - icon_slug diff --git a/action.yml b/action.yml index 21411ee..7487391 100644 --- a/action.yml +++ b/action.yml @@ -1,21 +1,18 @@ name: 'Google Chat Action' -author: 'D Ther Htun' +author: 'D Ther Htun/ Marcel S. Henselin' description: 'Github actions for google chat Room Bot' branding: icon: 'at-sign' color: 'green' inputs: - project: - description: 'Github Project Name' + autor: + description: 'Git Action Author' required: true - commit: - description: 'Github Commit ID' - required: true - branch: - description: 'Github Branch' + giturl: + description: 'Git Server URL' required: true status: - description: 'Github Action Build Status' + description: 'Git Action Build Status' required: true actionid: description: 'Current Running Action ID' @@ -23,18 +20,14 @@ inputs: webhook: description: 'Google Chat Webhook URL' required: true + event_body: + description: 'Google Chat Event Body' + required: true runs: using: 'docker' - # using: 'composite' -# steps: -# - name: 'Run Google Chat Action' -# shell: bash -# run: | -# docker run --rm -it $(docker build -q .) - - #image: 'docker://dther/google-chat-action:v0.8' - image: 'Dockerfile' + image: 'docker://stackit-solutions.git.onstackit.cloud/actions/notify-slim:v0.1.2' + # image: 'Dockerfile' args: - ${{ inputs.project }} - ${{ inputs.commit }} diff --git a/docker-slimbuild b/docker-slimbuild deleted file mode 100644 index bdc6e01..0000000 --- a/docker-slimbuild +++ /dev/null @@ -1,30 +0,0 @@ -FROM golang:1.13 AS builder - -RUN apt-get update && apt-get -y install upx - -#RUN mkdir -p $GOPATH/src/github.com/DTherHtun/google-chat-action -#ADD . $GOPATH/src/github.com/DTherHtun/google-chat-action -RUN go get -u github.com/sethvargo/go-githubactions/... -ENV CGO_ENABLED=0 -COPY . . - -RUN go build \ - -a \ - -trimpath \ - -ldflags "-s -w -extldflags '-static'" \ - -installsuffix cgo \ - -tags netgo \ - -o /bin/google-chat-action \ - . - -RUN strip /bin/google-chat-action - -RUN upx -q -9 /bin/google-chat-action - -FROM scratch - -COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ - -COPY --from=builder /bin/google-chat-action /bin/google-chat-action - -ENTRYPOINT ["/bin/google-chat-action"] diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..b8212ad --- /dev/null +++ b/go.sum @@ -0,0 +1,6 @@ +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/google-chat-action.png b/google-chat-action.png index cbab7f1..fad33f0 100644 Binary files a/google-chat-action.png and b/google-chat-action.png differ diff --git a/main.go b/main.go index fb27a48..7a9eafc 100644 --- a/main.go +++ b/main.go @@ -18,21 +18,20 @@ const ( failedColor = "8b0000/dc143c" ) -//go:embed message_old.tpl +//go:embed message.tpl var message string type templateData struct { CardID string + IconSlug string Title string SubTitle string Author string IconUrl string - Project string - Commit string - Branch string Status string ActionID string GitURL string + Project string Color string Add string EventBody string @@ -43,61 +42,14 @@ func main() { data.CardID = uuid.NewString() data.Add = "" - author := githubactions.GetInput("author") - if author == "" { - githubactions.Infof("[INFO] Missing input 'author', using default") - author = "STACKIT git action" - } - data.Author = author - - title := githubactions.GetInput("title") - if title == "" { - githubactions.Infof("[INFO] Missing input 'title', using default") - title = "STACKIT git action" - } - data.Title = title - - project := githubactions.GetInput("project") - if project == "" { - githubactions.Fatalf("Missing input 'project'") - os.Exit(1) - } - data.Project = project - - commit := githubactions.GetInput("commit") - if commit == "" { - githubactions.Fatalf("Missing input 'commit'") - os.Exit(1) - } - data.Commit = commit - - branch := githubactions.GetInput("branch") - if branch == "" { - githubactions.Fatalf("Missing input 'branch'") - os.Exit(1) - } - data.Branch = branch - - status := githubactions.GetInput("status") - if status == "" { - githubactions.Fatalf("Missing input 'status'") - os.Exit(1) - } - data.Status = status - - actionid := githubactions.GetInput("actionid") - if actionid == "" { - githubactions.Fatalf("Missing input 'actionid'") - os.Exit(1) - } - data.ActionID = actionid + getData(&data) webhook := githubactions.GetInput("webhook") if webhook == "" { githubactions.Fatalf("Missing input 'webhook'") os.Exit(1) } - webhook = fmt.Sprintf("%s&threadKey=%s%s&messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD", webhook, data.Commit, data.ActionID) + webhook = fmt.Sprintf("%s&threadKey=notify%s&messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD", webhook, data.ActionID) giturl := githubactions.GetInput("giturl") if giturl == "" { @@ -110,18 +62,13 @@ func main() { 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()) + githubactions.Fatalf("err %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()) @@ -134,7 +81,8 @@ func main() { githubactions.Fatalf("error %s", err.Error()) os.Exit(1) } - defer resp.Body.Close() + defer resp.Body.Close() //nolint:gocritic + fmt.Println("response Status:", resp.Status) if resp.StatusCode != http.StatusOK { githubactions.Infof("json: %s", jsonStr) @@ -143,6 +91,51 @@ func main() { } } +func getData(data *templateData) { + prj, ok := os.LookupEnv("FORGEJO_REPOSITORY") + if ok { + data.Project = prj + } + + author := githubactions.GetInput("author") + if author == "" { + githubactions.Infof("[INFO] Missing input 'author', using default") + author = "STACKIT git action" + } + data.Author = author + + icon := githubactions.GetInput("iconslug") + if icon == "" { + githubactions.Infof("[INFO] Missing input 'iconslug', using default") + icon = "git" + } + data.IconSlug = icon + + title := githubactions.GetInput("title") + if title == "" { + githubactions.Infof("[INFO] Missing input 'title', using default") + title = "STACKIT git action" + } + data.Title = title + + status := githubactions.GetInput("status") + if status == "" { + githubactions.Infof("[INFO] Missing input 'status', trying default") + var ok bool + if status, ok = os.LookupEnv("JOB_STATUS"); ok { + githubactions.Infof("[INFO] found job status") + } + } + data.Status = status + + actionid := githubactions.GetInput("actionid") + if actionid == "" { + githubactions.Fatalf("Missing input 'actionid'") + os.Exit(1) + } + data.ActionID = actionid +} + func card(d templateData) ([]byte, error) { switch d.Status { case "success": @@ -154,39 +147,34 @@ func card(d templateData) ([]byte, error) { } if d.IconUrl == "" { - d.IconUrl = "https://github.githubassets.com/images/modules/logos_page/Octocat.png" + d.IconUrl = fmt.Sprintf( + "https://cdn.simpleicons.org/%s/%s", + d.IconSlug, + d.Color, + ) } if d.EventBody == "" { - d.EventBody = "Project: {{ .Project }}
Commit-id: {{ .Commit }}
Branch: {{ .Branch }}
Build Status: {{ .Status }}" - } + bdy := "" + if d.Project != "" { + bdy += fmt.Sprintf("Project: %s
", d.Project) + } - if d.Status == "success" { - d.Add = ` -{ - "decoratedText": { - "startIcon": { - "materialIcon": { - "name": "check_circle" - } - }, - "text": "SUCCESS" - } -},` - } + sha, ok := os.LookupEnv("FORGEJO_SHA") + if ok { + bdy += fmt.Sprintf("Commit-id: %.*s
", 8, sha) + } - if d.Status == "failure" { - d.Add = ` -{ - "decoratedText": { - "startIcon": { - "materialIcon": { - "name": "stop_circle" - } - }, - "text": "FAILURE" - } -},` + ref, ok := os.LookupEnv("FORGEJO_REF") + if ok { + bdy += fmt.Sprintf("Branch: %s
", ref) + } + + if d.Status != "" { + bdy += fmt.Sprintf("Build Status: %s", d.Status) + } + + d.EventBody = bdy } tmpl, err := template.New("message").Parse(message) diff --git a/main_test.go b/main_test.go index 5c04597..f7e5241 100644 --- a/main_test.go +++ b/main_test.go @@ -27,8 +27,6 @@ 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", @@ -115,9 +113,6 @@ 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) } diff --git a/message.tpl b/message.tpl index dc9ca5b..b20a0d7 100644 --- a/message.tpl +++ b/message.tpl @@ -13,7 +13,7 @@ "sections": [ { "header": "{{ .Title }}", - "collapsible": true, + "collapsible": false, "uncollapsibleWidgetsCount": 2, "widgets": [ { @@ -27,7 +27,7 @@ { "textParagraph": { "text": "{{ .EventBody }}", - "maxLines": 2 + "maxLines": 5 } }, { diff --git a/message_old.tpl b/message_old.tpl deleted file mode 100644 index 9a57795..0000000 --- a/message_old.tpl +++ /dev/null @@ -1,35 +0,0 @@ -{ - "cards": [ - { - "header": { - "title": "{{ .Title }}", - "subtitle": "{{ .SubTitle }}", - "imageUrl": "{{ .IconUrl }}", - "imageStyle": "IMAGE" - }, - "sections": [ - { - "widgets": [ - { - "textParagraph": { - "text": "Project: {{ .Project }}
Commit-id: {{ .Commit }}
Branch: {{ .Branch }}
Build Status: {{ .Status }}" - }, - "buttons": [ - { - "textButton": { - "text": "Job Details", - "onClick": { - "openLink": { - "url": "{{ .GitURL }}/{{ .Project }}/actions/runs/{{ .ActionID }}" - } - } - } - } - ] - } - ] - } - ] - } - ] -} diff --git a/sample.tpl b/sample.tpl deleted file mode 100644 index 4fbe3bf..0000000 --- a/sample.tpl +++ /dev/null @@ -1,78 +0,0 @@ -{ - "cardsV2": [ - { - "cardId": "unique-card-id", - "card": { - "header": { - "title": "Sasha", - "subtitle": "Software Engineer", - "imageUrl": - "https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png", - "imageType": "CIRCLE", - "imageAltText": "Avatar for Sasha" - }, - "sections": [ - { - "header": "Contact Info", - "collapsible": true, - "uncollapsibleWidgetsCount": 1, - "widgets": [ - { - "decoratedText": { - "startIcon": { - "knownIcon": "EMAIL" - }, - "text": "sasha@example.com" - } - }, - { - "decoratedText": { - "startIcon": { - "knownIcon": "PERSON" - }, - "text": "Online" - } - }, - { - "decoratedText": { - "startIcon": { - "knownIcon": "PHONE" - }, - "text": "+1 (555) 555-1234" - } - }, - { - "buttonList": { - "buttons": [ - { - "text": "Share", - "onClick": { - "openLink": { - "url": "https://example.com/share" - } - } - }, - { - "text": "Edit", - "onClick": { - "action": { - "function": "goToView", - "parameters": [ - { - "key": "viewType", - "value": "EDIT" - } - ] - } - } - } - ] - } - } - ] - } - ] - } - } - ] -}