diff --git a/.github/workflows/example.yml b/.github/workflows/example.yml
index 0e5d3be..a1cb447 100644
--- a/.github/workflows/example.yml
+++ b/.github/workflows/example.yml
@@ -1,38 +1,34 @@
name: Sample Testing
-on: [workflow_dispatch]
-
-env:
- VER: 0.3.1
+on: [push]
jobs:
my_job:
runs-on: stackit-docker
steps:
+ - name: Checkout
+ uses: actions/checkout@v6
+
+ - name: Get commit hash
+ if: ${{ always() }}
+ run: echo "::set-output name=sha8::$(echo ${FORGEJO_SHA} | cut -c1-8)"
+ id: slug
+
- name: First Chat Message
if: ${{ always() }}
- uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v${{ env.VER }}
+ uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v0.1.2
with:
- title: "[START] sample test (${{ forgejo.run_number }})"
author: ${{ forgejo.actor }}
giturl: ${{ forgejo.server_url }}
- iconslug: instacart
- # status: ${{ job.status }} # optional
+ # status: ${{ job.status }}
actionid: ${{ forgejo.run_number }}
webhook: "${{ secrets.WEBHOOK_URL }}"
# 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 }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
deleted file mode 100644
index 581badf..0000000
--- a/.github/workflows/release.yml
+++ /dev/null
@@ -1,143 +0,0 @@
-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
deleted file mode 100644
index 35b6ac1..0000000
--- a/.golangci.yaml
+++ /dev/null
@@ -1,88 +0,0 @@
-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
deleted file mode 100644
index 8310b91..0000000
--- a/.releaserc.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- "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
deleted file mode 100644
index 24b7be5..0000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,23 +0,0 @@
-## [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 f3035dc..20cd801 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,29 +1,10 @@
-FROM golang:1.26 AS builder
+FROM golang:1.26
-RUN apt-get update && apt-get -y install upx
-
-WORKDIR /app
-
-ENV CGO_ENABLED=0
+WORKDIR /src
COPY . .
-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
+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/Dockerfile.big b/Dockerfile.big
deleted file mode 100644
index 20cd801..0000000
--- a/Dockerfile.big
+++ /dev/null
@@ -1,10 +0,0 @@
-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 c4e8400..d305f27 100644
--- a/README.md
+++ b/README.md
@@ -13,20 +13,23 @@ jobs:
runs-on: ubuntu-latest
steps:
- # ... 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
+ - 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"
```
-
-TODO - icon_slug
diff --git a/docker-slimbuild b/docker-slimbuild
new file mode 100644
index 0000000..6a8459c
--- /dev/null
+++ b/docker-slimbuild
@@ -0,0 +1,31 @@
+FROM golang:1.26 AS builder
+
+RUN apt-get update && apt-get -y install upx
+
+WORKDIR /app
+#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 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/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/google-chat-action.png b/google-chat-action.png
index fad33f0..cbab7f1 100644
Binary files a/google-chat-action.png and b/google-chat-action.png differ
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)
}
diff --git a/message.tpl b/message.tpl
index b20a0d7..3a50378 100644
--- a/message.tpl
+++ b/message.tpl
@@ -27,7 +27,7 @@
{
"textParagraph": {
"text": "{{ .EventBody }}",
- "maxLines": 5
+ "maxLines": 2
}
},
{