diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index 0f4cd25..0000000
--- a/.dockerignore
+++ /dev/null
@@ -1,5 +0,0 @@
-.github
-.gitignore
-action.yml
-docker-slimbuild
-main_test.go
diff --git a/.github/workflows/example.yml b/.github/workflows/example.yml
index 0e5d3be..c50bc49 100644
--- a/.github/workflows/example.yml
+++ b/.github/workflows/example.yml
@@ -1,41 +1,26 @@
name: Sample Testing
-on: [workflow_dispatch]
-
-env:
- VER: 0.3.1
+on: [push]
jobs:
my_job:
runs-on: stackit-docker
steps:
- - name: First Chat Message
- if: ${{ always() }}
- 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 }}
- iconslug: instacart
- # status: ${{ job.status }} # optional
- actionid: ${{ forgejo.run_number }}
- webhook: "${{ secrets.WEBHOOK_URL }}"
- # event_body: "" # optional
+ - name: Checkout
+ uses: actions/checkout@v6
-# - name: Force failure
-# run: |
-# echo "This is a force failure"
-# exit 1
-
- - name: Second Chat Message as ThreadResponse
+ - name: Get commit hash
if: ${{ always() }}
- uses: https://stackit-solutions.git.onstackit.cloud/actions/notify@v0.1.2
+ 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
with:
- title: "[END] sample test (${{ forgejo.run_number }})"
- iconslug: bun
- author: ${{ forgejo.actor }}
- giturl: ${{ forgejo.server_url }}
+ project: ${{ forgejo.repository }}
+ commit: ${{ steps.slug.outputs.sha8 }}
+ branch: ${{ forgejo.ref }}
status: ${{ job.status }}
- actionid: ${{ forgejo.run_number }}
- webhook: "${{ secrets.WEBHOOK_URL }}"
- event_body: "this time I provided a body"
+ actionid: ${{ forgejo.repository }}/actions/runs/${{ forgejo.run_id }}
+ webhook: "https://chat.googleapis.com/v1/spaces/AAAAYTX-Vqs/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=Iwtvo1dwg36dZgUyrUCREQGGMrO71PkIoQGafOf17Yg%3D&threadKey=git-commit"
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..89e372a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,29 +1,8 @@
-FROM golang:1.26 AS builder
+FROM golang:1.13
-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 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/action.yml b/action.yml
index 7487391..977f0d0 100644
--- a/action.yml
+++ b/action.yml
@@ -1,18 +1,21 @@
name: 'Google Chat Action'
-author: 'D Ther Htun/ Marcel S. Henselin'
+author: 'D Ther Htun'
description: 'Github actions for google chat Room Bot'
branding:
icon: 'at-sign'
color: 'green'
inputs:
- autor:
- description: 'Git Action Author'
+ project:
+ description: 'Github Project Name'
required: true
- giturl:
- description: 'Git Server URL'
+ commit:
+ description: 'Github Commit ID'
+ required: true
+ branch:
+ description: 'Github Branch'
required: true
status:
- description: 'Git Action Build Status'
+ description: 'Github Action Build Status'
required: true
actionid:
description: 'Current Running Action ID'
@@ -20,14 +23,10 @@ inputs:
webhook:
description: 'Google Chat Webhook URL'
required: true
- event_body:
- description: 'Google Chat Event Body'
- required: true
runs:
using: 'docker'
- image: 'docker://stackit-solutions.git.onstackit.cloud/actions/notify-slim:v0.1.2'
- # image: 'Dockerfile'
+ image: 'docker://dther/google-chat-action:v0.8'
args:
- ${{ inputs.project }}
- ${{ inputs.commit }}
diff --git a/docker-slimbuild b/docker-slimbuild
new file mode 100644
index 0000000..bdc6e01
--- /dev/null
+++ b/docker-slimbuild
@@ -0,0 +1,30 @@
+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.mod b/go.mod
index 8e5d566..a935e06 100644
--- a/go.mod
+++ b/go.mod
@@ -2,9 +2,4 @@ module google-chat-action
go 1.26.2
-require (
- github.com/google/go-cmp v0.7.0
- github.com/sethvargo/go-githubactions v1.3.2
-)
-
-require github.com/google/uuid v1.6.0
+require github.com/sethvargo/go-githubactions v1.3.2
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..0989c3a 100644
--- a/main.go
+++ b/main.go
@@ -2,191 +2,89 @@ package main
import (
"bytes"
- _ "embed"
"fmt"
"net/http"
- "os"
- "text/template"
- "github.com/google/uuid"
"github.com/sethvargo/go-githubactions"
)
-const (
- defaultColor = "483d8b/6495ed"
- successColor = "006400/228b22"
- failedColor = "8b0000/dc143c"
-)
-
-//go:embed message.tpl
-var message string
-
-type templateData struct {
- CardID string
- IconSlug string
- Title string
- SubTitle string
- Author string
- IconUrl string
- Status string
- ActionID string
- GitURL string
- Project string
- Color string
- Add string
- EventBody string
-}
-
func main() {
- data := templateData{}
- data.CardID = uuid.NewString()
- data.Add = ""
-
- getData(&data)
-
+ project := githubactions.GetInput("project")
+ if project == "" {
+ githubactions.Fatalf("Missing input 'project'")
+ }
+ commit := githubactions.GetInput("commit")
+ if commit == "" {
+ githubactions.Fatalf("Missing input 'commit'")
+ }
+ branch := githubactions.GetInput("branch")
+ if branch == "" {
+ githubactions.Fatalf("Missing input 'branch'")
+ }
+ status := githubactions.GetInput("status")
+ if status == "" {
+ githubactions.Fatalf("Missing input 'status'")
+ }
+ actionid := githubactions.GetInput("actionid")
+ if actionid == "" {
+ githubactions.Fatalf("Missing input 'actionid'")
+ }
webhook := githubactions.GetInput("webhook")
if webhook == "" {
- githubactions.Fatalf("Missing input 'webhook'")
- os.Exit(1)
+ githubactions.Fatalf("Missing input 'webshook'")
}
- 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)
+ joburl := githubactions.GetInput("joburl")
+ if webhook == "" {
+ githubactions.Fatalf("Missing input 'joburl'")
}
+ fmt.Println("URL:> ", webhook)
+ data := `{
+ "cards": [
+ {
+ "header": {
+ "title": "GitHub Action",
+ "subtitle": "Build Job",
+ "imageUrl": "https://github.githubassets.com/images/modules/logos_page/Octocat.png",
+ "imageStyle": "IMAGE"
+ },
+ "sections": [
+ {
+ "widgets": [
+ {
+ "textParagraph": {
+ "text": "Project: %s
Commit-id: %s
Branch: %s
Build Status: %s"
+ },
+ "buttons": [
+ {
+ "textButton": {
+ "text": "Job Details",
+ "onClick": {
+ "openLink": {
+ "url": "https://github.com/%s"
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}`
+ var jsonStr = []byte(fmt.Sprintf(data, project, commit, branch, status, actionid))
req, err := http.NewRequest("POST", webhook, bytes.NewBuffer(jsonStr))
if err != nil {
- githubactions.Fatalf("error %s", err.Error())
- os.Exit(1)
+ panic(err)
}
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)
+ panic(err)
}
- defer resp.Body.Close() //nolint:gocritic
-
+ 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 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":
- d.Color = successColor
- case "failure":
- d.Color = failedColor
- default:
- d.Color = defaultColor
- }
-
- if d.IconUrl == "" {
- d.IconUrl = fmt.Sprintf(
- "https://cdn.simpleicons.org/%s/%s",
- d.IconSlug,
- d.Color,
- )
- }
-
- if d.EventBody == "" {
- bdy := ""
- if d.Project != "" {
- bdy += fmt.Sprintf("Project: %s
", d.Project)
- }
-
- sha, ok := os.LookupEnv("FORGEJO_SHA")
- if ok {
- bdy += fmt.Sprintf("Commit-id: %.*s
", 8, sha)
- }
-
- 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)
- if err != nil {
- return nil, err
- }
-
- buf := new(bytes.Buffer)
- err = tmpl.Execute(buf, d)
- if err != nil {
- return nil, err
- }
-
- return buf.Bytes(), nil
}
diff --git a/main_test.go b/main_test.go
deleted file mode 100644
index f7e5241..0000000
--- a/main_test.go
+++ /dev/null
@@ -1,121 +0,0 @@
-package main
-
-import (
- "encoding/json"
- "testing"
-
- "github.com/google/go-cmp/cmp"
-)
-
-func Test_card(t *testing.T) {
- type args struct {
- d templateData
- }
- tests := []struct {
- name string
- args args
- want []byte
- wantErr bool
- }{
- {
- name: "test one",
- args: args{
- d: templateData{
- CardID: "aed17996-84fc-45d5-9061-2c51535ae267",
- Title: "test",
- SubTitle: "first test",
- Author: "gotest",
- IconUrl: "https://github.githubassets.com/images/modules/logos_page/Octocat.png",
- Project: "proj",
- Status: "success",
- ActionID: "123",
- GitURL: "https://test.url",
- Color: "c0c0c0",
- EventBody: "no body",
- },
- },
- want: []byte(`
-{
- "cardsV2": [
- {
- "cardId": "notify-aed17996-84fc-45d5-9061-2c51535ae267",
- "card": {
- "header": {
- "title": "test",
- "subtitle": "first test",
- "imageUrl": "https://github.githubassets.com/images/modules/logos_page/Octocat.png",
- "imageAltText": "message avatar image",
- "imageType": "SQUARE"
- },
- "sections": [
- {
- "header": "test",
- "collapsible": true,
- "uncollapsibleWidgetsCount": 2,
- "widgets": [
- {
- "decoratedText": {
- "startIcon": {
- "knownIcon": "PERSON"
- },
- "text": "gotest"
- }
- },
- {
- "textParagraph": {
- "text": "no body",
- "maxLines": 2
- }
- },
- {
- "buttonList": {
- "buttons": [
- {
- "text": "View Source Event",
- "type": "FILLED",
- "onClick": {
- "openLink": {
- "url": "https://test.url/proj/actions/runs/123"
- }
- }
- }
- ]
- }
- }
- ]
- }
- ]
- }
- }
- ]
-}
-`),
- wantErr: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- got, err := card(tt.args.d)
- if (err != nil) != tt.wantErr {
- t.Errorf("card() error = %v, wantErr %v", err, tt.wantErr)
- return
- }
-
- var gotJson any
- err = json.Unmarshal(got, &gotJson)
- if err != nil {
- t.Fatal(err)
- }
-
- var wantJson any
- err = json.Unmarshal(tt.want, &wantJson)
- if err != nil {
- t.Fatalf("error: %v\nsrc: %s", err, tt.want)
- }
-
- if diff := cmp.Diff(wantJson, gotJson); diff != "" {
- t.Errorf("MakeGatewayInfo() mismatch (-want +got):\n%s", diff)
- }
- })
- }
-}
diff --git a/message.tpl b/message.tpl
deleted file mode 100644
index b20a0d7..0000000
--- a/message.tpl
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "cardsV2": [
- {
- "cardId": "notify-{{ .CardID }}",
- "card": {
- "header": {
- "title": "{{ .Title }}",
- "subtitle": "{{ .SubTitle }}",
- "imageUrl": "{{ .IconUrl }}",
- "imageType": "SQUARE",
- "imageAltText": "message avatar image"
- },
- "sections": [
- {
- "header": "{{ .Title }}",
- "collapsible": false,
- "uncollapsibleWidgetsCount": 2,
- "widgets": [
- {
- "decoratedText": {
- "startIcon": {
- "knownIcon": "PERSON"
- },
- "text": "{{ .Author }}"
- }
- },
- {
- "textParagraph": {
- "text": "{{ .EventBody }}",
- "maxLines": 5
- }
- },
- {
- "buttonList": {
- "buttons": [
- {
- "text": "View Source Event",
- "type": "FILLED",
- "onClick": {
- "openLink": {
- "url": "{{ .GitURL }}/{{ .Project }}/actions/runs/{{ .ActionID }}"
- }
- }
- }
- ]
- }
- }
- ]
- }
- ]
- }
- }
- ]
-}