diff --git a/.github/workflows/grafana-alertcheck-release.yml b/.github/workflows/grafana-alertcheck-release.yml new file mode 100644 index 000000000..4f946b18f --- /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@f06c13b6b1a9625abc9e6e439d9c05a8f2190e94 # v7.2.3 + 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