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"
- }
- ]
- }
- }
- }
- ]
- }
- }
- ]
- }
- ]
- }
- }
- ]
-}