From 7e83d6cdf6fb42a4b6b784d36f84029eb4286d4a Mon Sep 17 00:00:00 2001 From: Bartek Tofel Date: Mon, 31 Aug 2026 11:37:34 +0200 Subject: [PATCH 1/2] chore: implement phase 0 --- .../workflows/grafana-alertcheck-release.yml | 34 +++++++++++++++++++ .github/workflows/test.yaml | 3 ++ .gitignore | 4 ++- grafana-alertcheck/.goreleaser.yaml | 33 ++++++++++++++++++ grafana-alertcheck/README.md | 6 ++++ .../cmd/grafana-alertcheck/main.go | 7 ++++ grafana-alertcheck/go.mod | 3 ++ grafana-alertcheck/internal/gate/gate.go | 2 ++ 8 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/grafana-alertcheck-release.yml create mode 100644 grafana-alertcheck/.goreleaser.yaml create mode 100644 grafana-alertcheck/README.md create mode 100644 grafana-alertcheck/cmd/grafana-alertcheck/main.go create mode 100644 grafana-alertcheck/go.mod create mode 100644 grafana-alertcheck/internal/gate/gate.go diff --git a/.github/workflows/grafana-alertcheck-release.yml b/.github/workflows/grafana-alertcheck-release.yml new file mode 100644 index 000000000..0f9f2abb1 --- /dev/null +++ b/.github/workflows/grafana-alertcheck-release.yml @@ -0,0 +1,34 @@ +name: Grafana Alertcheck Release + +on: + push: + tags: + - grafana-alertcheck/v* + +jobs: + release: + name: Build and Release + runs-on: ubuntu-latest + environment: integration + permissions: + id-token: write + contents: write + steps: + - name: Checkout repo + uses: actions/checkout@v7 + with: + fetch-depth: 0 + - name: Set up Go + uses: actions/setup-go@v7 + with: + go-version-file: ./grafana-alertcheck/go.mod + cache-dependency-path: ./grafana-alertcheck/go.mod + - name: Goreleaser Release + uses: goreleaser/goreleaser-action@v7 + with: + distribution: goreleaser-pro + version: "~> v2" + args: release --clean -f ./grafana-alertcheck/.goreleaser.yaml + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 4b4bc20c5..4146daa5f 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -37,6 +37,9 @@ jobs: - path: parrot vm: ubuntu-latest regex: ./... + - path: grafana-alertcheck + vm: ubuntu-latest + regex: ./... - path: tools/workflowresultparser vm: ubuntu-latest regex: ./... diff --git a/.gitignore b/.gitignore index 300ded3f9..dffcf974c 100644 --- a/.gitignore +++ b/.gitignore @@ -84,4 +84,6 @@ parrot/parrot # Devenv (generated manually) devenv/ # Generated TOML definitions -book/src/framework/developer_environment/**.toml \ No newline at end of file +book/src/framework/developer_environment/**.toml + +tmp/ \ No newline at end of file diff --git a/grafana-alertcheck/.goreleaser.yaml b/grafana-alertcheck/.goreleaser.yaml new file mode 100644 index 000000000..09e6032cb --- /dev/null +++ b/grafana-alertcheck/.goreleaser.yaml @@ -0,0 +1,33 @@ +# yaml-language-server: $schema=https://goreleaser.com/static/schema-pro.json +version: 2 +project_name: grafana-alertcheck + +dist: grafana-alertcheck/dist + +monorepo: + tag_prefix: grafana-alertcheck/ + dir: grafana-alertcheck + +builds: + - id: grafana-alertcheck + main: ./cmd/grafana-alertcheck/main.go + ldflags: + - -s + - -w + - -X github.com/smartcontractkit/chainlink-testing-framework/grafana-alertcheck.version={{.Version}} + - -X github.com/smartcontractkit/chainlink-testing-framework/grafana-alertcheck.commit={{.ShortCommit}} + - -X github.com/smartcontractkit/chainlink-testing-framework/grafana-alertcheck.date={{.CommitDate}} + - -X github.com/smartcontractkit/chainlink-testing-framework/grafana-alertcheck.builtBy=goreleaser + goos: + - linux + - darwin + goarch: + - amd64 + - arm64 + binary: grafana-alertcheck + env: + - CGO_ENABLED=0 + +before: + hooks: + - sh -c "cd grafana-alertcheck && go mod tidy" diff --git a/grafana-alertcheck/README.md b/grafana-alertcheck/README.md new file mode 100644 index 000000000..43cc03fc4 --- /dev/null +++ b/grafana-alertcheck/README.md @@ -0,0 +1,6 @@ +# grafana-alertcheck + +A CD quality gate for Grafana alerts: bookend a release with `watch` (record) and `check` (classify) to +answer whether any watched alert was in a bad state during the release window. + +Under construction. diff --git a/grafana-alertcheck/cmd/grafana-alertcheck/main.go b/grafana-alertcheck/cmd/grafana-alertcheck/main.go new file mode 100644 index 000000000..150d617d4 --- /dev/null +++ b/grafana-alertcheck/cmd/grafana-alertcheck/main.go @@ -0,0 +1,7 @@ +package main + +import "os" + +func main() { + os.Exit(2) +} diff --git a/grafana-alertcheck/go.mod b/grafana-alertcheck/go.mod new file mode 100644 index 000000000..b0c8511ce --- /dev/null +++ b/grafana-alertcheck/go.mod @@ -0,0 +1,3 @@ +module github.com/smartcontractkit/chainlink-testing-framework/grafana-alertcheck + +go 1.26.6 diff --git a/grafana-alertcheck/internal/gate/gate.go b/grafana-alertcheck/internal/gate/gate.go new file mode 100644 index 000000000..262a101a1 --- /dev/null +++ b/grafana-alertcheck/internal/gate/gate.go @@ -0,0 +1,2 @@ +// Package gate implements the grafana-alertcheck coverage-and-classification gate. +package gate From 723fa13b376e408221a79576a6fcbe82f9534282 Mon Sep 17 00:00:00 2001 From: Bartek Tofel Date: Tue, 1 Sep 2026 13:24:28 +0200 Subject: [PATCH 2/2] chore: use SHA not tag for goreleaser/goreleaser-action --- .github/workflows/grafana-alertcheck-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/grafana-alertcheck-release.yml b/.github/workflows/grafana-alertcheck-release.yml index 0f9f2abb1..4f946b18f 100644 --- a/.github/workflows/grafana-alertcheck-release.yml +++ b/.github/workflows/grafana-alertcheck-release.yml @@ -24,7 +24,7 @@ jobs: go-version-file: ./grafana-alertcheck/go.mod cache-dependency-path: ./grafana-alertcheck/go.mod - name: Goreleaser Release - uses: goreleaser/goreleaser-action@v7 + uses: goreleaser/goreleaser-action@f06c13b6b1a9625abc9e6e439d9c05a8f2190e94 # v7.2.3 with: distribution: goreleaser-pro version: "~> v2"