diff --git a/.github/workflows/example.yml b/.github/workflows/example.yml index a1cb447..dba744a 100644 --- a/.github/workflows/example.yml +++ b/.github/workflows/example.yml @@ -1,34 +1,38 @@ name: Sample Testing on: [push] +env: + VER: 0.1.2 + 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@v0.1.2 + 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 }} - # status: ${{ job.status }} + iconslug: instacart + # status: ${{ job.status }} # optional 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 new file mode 100644 index 0000000..2890b3e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,102 @@ +name: CI +on: + push: + branches: + - '**' + pull_request: + branches: + - '**' + +# 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 + + - name: GO Linting + uses: golangci/golangci-lint-action@v3 + +# 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: 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/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 and push + uses: docker/build-push-action@v7 + with: + push: false + tags: actions/notify-slim:${{ steps.create_release.outputs.tag }} diff --git a/.golang-ci.yaml b/.golang-ci.yaml new file mode 100644 index 0000000..b5d12d0 --- /dev/null +++ b/.golang-ci.yaml @@ -0,0 +1,90 @@ +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: + - generator/ + - internal/testutils + 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..d36c572 --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,10 @@ +{ + "branches": ["main"], + "tagFormat": "v${version}", + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + "@semantic-release/changelog", + "@semantic-release/git" + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..3428ef0 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +# [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 20cd801..f3035dc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +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 mod tidy \ - && 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..97d5ff4 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.1.2 + 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/docker-slimbuild b/docker-slimbuild deleted file mode 100644 index 6a8459c..0000000 --- a/docker-slimbuild +++ /dev/null @@ -1,31 +0,0 @@ -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/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/message.tpl b/message.tpl index 3a50378..b20a0d7 100644 --- a/message.tpl +++ b/message.tpl @@ -27,7 +27,7 @@ { "textParagraph": { "text": "{{ .EventBody }}", - "maxLines": 2 + "maxLines": 5 } }, {