mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-09 23:24:05 -08:00
8d580976cb
Signed-off-by: Julien <roidelapluie@o11y.eu>
264 lines
11 KiB
YAML
264 lines
11 KiB
YAML
---
|
|
name: CI
|
|
on:
|
|
pull_request:
|
|
push:
|
|
|
|
jobs:
|
|
test_go:
|
|
name: Go tests
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
# Whenever the Go version is updated here, .promu.yml
|
|
# should also be updated.
|
|
image: quay.io/prometheus/golang-builder:1.23-base
|
|
steps:
|
|
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- uses: prometheus/promci@468927c440349ab56c4a1aafd453b312841503c2 # v0.4.4
|
|
- uses: ./.github/promci/actions/setup_environment
|
|
- run: make GOOPTS=--tags=stringlabels GO_ONLY=1 SKIP_GOLANGCI_LINT=1
|
|
- run: go test --tags=stringlabels ./tsdb/ -test.tsdb-isolation=false
|
|
- run: make -C documentation/examples/remote_storage
|
|
- run: make -C documentation/examples
|
|
|
|
test_go_more:
|
|
name: More Go tests
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: quay.io/prometheus/golang-builder:1.23-base
|
|
steps:
|
|
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- uses: prometheus/promci@468927c440349ab56c4a1aafd453b312841503c2 # v0.4.4
|
|
- uses: ./.github/promci/actions/setup_environment
|
|
- run: go test --tags=dedupelabels ./...
|
|
- run: GOARCH=386 go test ./cmd/prometheus
|
|
- uses: ./.github/promci/actions/check_proto
|
|
with:
|
|
version: "3.15.8"
|
|
|
|
test_go_oldest:
|
|
name: Go tests with previous Go version
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
# Enforce the Go version.
|
|
GOTOOLCHAIN: local
|
|
container:
|
|
# The go version in this image should be N-1 wrt test_go.
|
|
image: quay.io/prometheus/golang-builder:1.22-base
|
|
steps:
|
|
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- run: make build
|
|
# Don't run NPM build; don't run race-detector.
|
|
- run: make test GO_ONLY=1 test-flags=""
|
|
|
|
test_ui:
|
|
name: UI tests
|
|
runs-on: ubuntu-latest
|
|
# Whenever the Go version is updated here, .promu.yml
|
|
# should also be updated.
|
|
container:
|
|
image: quay.io/prometheus/golang-builder:1.23-base
|
|
|
|
steps:
|
|
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- uses: prometheus/promci@468927c440349ab56c4a1aafd453b312841503c2 # v0.4.4
|
|
- uses: ./.github/promci/actions/setup_environment
|
|
with:
|
|
enable_go: false
|
|
enable_npm: true
|
|
- run: make assets-tarball
|
|
- run: make ui-lint
|
|
- run: make ui-test
|
|
- uses: ./.github/promci/actions/save_artifacts
|
|
with:
|
|
directory: .tarballs
|
|
|
|
test_windows:
|
|
name: Go tests on Windows
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
|
|
with:
|
|
go-version: 1.23.x
|
|
- run: |
|
|
$TestTargets = go list ./... | Where-Object { $_ -NotMatch "(github.com/prometheus/prometheus/discovery.*|github.com/prometheus/prometheus/config|github.com/prometheus/prometheus/web)"}
|
|
go test $TestTargets -vet=off -v
|
|
shell: powershell
|
|
|
|
test_mixins:
|
|
name: Mixins tests
|
|
runs-on: ubuntu-latest
|
|
# Whenever the Go version is updated here, .promu.yml
|
|
# should also be updated.
|
|
container:
|
|
image: quay.io/prometheus/golang-builder:1.23-base
|
|
steps:
|
|
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- run: go install ./cmd/promtool/.
|
|
- run: go install github.com/google/go-jsonnet/cmd/jsonnet@latest
|
|
- run: go install github.com/google/go-jsonnet/cmd/jsonnetfmt@latest
|
|
- run: go install github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest
|
|
- run: make -C documentation/prometheus-mixin clean
|
|
- run: make -C documentation/prometheus-mixin jb_install
|
|
- run: make -C documentation/prometheus-mixin
|
|
- run: git diff --exit-code
|
|
|
|
build:
|
|
name: Build Prometheus for common architectures
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
!(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v2.'))
|
|
&&
|
|
!(github.event_name == 'pull_request' && startsWith(github.event.pull_request.base.ref, 'release-'))
|
|
&&
|
|
!(github.event_name == 'push' && github.event.ref == 'refs/heads/main')
|
|
strategy:
|
|
matrix:
|
|
thread: [ 0, 1, 2 ]
|
|
steps:
|
|
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- uses: prometheus/promci@468927c440349ab56c4a1aafd453b312841503c2 # v0.4.4
|
|
- uses: ./.github/promci/actions/build
|
|
with:
|
|
promu_opts: "-p linux/amd64 -p windows/amd64 -p linux/arm64 -p darwin/amd64 -p darwin/arm64 -p linux/386"
|
|
parallelism: 3
|
|
thread: ${{ matrix.thread }}
|
|
build_all:
|
|
name: Build Prometheus for all architectures
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v2.'))
|
|
||
|
|
(github.event_name == 'pull_request' && startsWith(github.event.pull_request.base.ref, 'release-'))
|
|
||
|
|
(github.event_name == 'push' && github.event.ref == 'refs/heads/main')
|
|
strategy:
|
|
matrix:
|
|
thread: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ]
|
|
|
|
# Whenever the Go version is updated here, .promu.yml
|
|
# should also be updated.
|
|
steps:
|
|
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- uses: prometheus/promci@468927c440349ab56c4a1aafd453b312841503c2 # v0.4.4
|
|
- uses: ./.github/promci/actions/build
|
|
with:
|
|
parallelism: 12
|
|
thread: ${{ matrix.thread }}
|
|
build_all_status:
|
|
name: Report status of build Prometheus for all architectures
|
|
runs-on: ubuntu-latest
|
|
needs: [build_all]
|
|
if: github.event_name == 'pull_request' && startsWith(github.event.pull_request.base.ref, 'release-')
|
|
steps:
|
|
- name: Successful build
|
|
if: ${{ !(contains(needs.*.result, 'failure')) && !(contains(needs.*.result, 'cancelled')) }}
|
|
run: exit 0
|
|
- name: Failing or cancelled build
|
|
if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
|
|
run: exit 1
|
|
check_generated_parser:
|
|
name: Check generated parser
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- name: Install Go
|
|
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
|
|
with:
|
|
cache: false
|
|
go-version: 1.23.x
|
|
- name: Run goyacc and check for diff
|
|
run: make install-goyacc check-generated-parser
|
|
golangci:
|
|
name: golangci-lint
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- name: Install Go
|
|
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
|
|
with:
|
|
go-version: 1.23.x
|
|
- name: Install snmp_exporter/generator dependencies
|
|
run: sudo apt-get update && sudo apt-get -y install libsnmp-dev
|
|
if: github.repository == 'prometheus/snmp_exporter'
|
|
- name: Lint
|
|
uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86 # v6.1.0
|
|
with:
|
|
args: --verbose
|
|
# Make sure to sync this with Makefile.common and scripts/golangci-lint.yml.
|
|
version: v1.60.2
|
|
fuzzing:
|
|
uses: ./.github/workflows/fuzzing.yml
|
|
if: github.event_name == 'pull_request'
|
|
codeql:
|
|
uses: ./.github/workflows/codeql-analysis.yml
|
|
|
|
publish_main:
|
|
name: Publish main branch artifacts
|
|
runs-on: ubuntu-latest
|
|
needs: [test_ui, test_go, test_go_more, test_go_oldest, test_windows, golangci, codeql, build_all]
|
|
if: github.event_name == 'push' && github.event.ref == 'refs/heads/main'
|
|
steps:
|
|
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- uses: prometheus/promci@468927c440349ab56c4a1aafd453b312841503c2 # v0.4.4
|
|
- uses: ./.github/promci/actions/publish_main
|
|
with:
|
|
docker_hub_login: ${{ secrets.docker_hub_login }}
|
|
docker_hub_password: ${{ secrets.docker_hub_password }}
|
|
quay_io_login: ${{ secrets.quay_io_login }}
|
|
quay_io_password: ${{ secrets.quay_io_password }}
|
|
publish_release:
|
|
name: Publish release artefacts
|
|
runs-on: ubuntu-latest
|
|
needs: [test_ui, test_go, test_go_more, test_go_oldest, test_windows, golangci, codeql, build_all]
|
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v2.')
|
|
steps:
|
|
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- uses: prometheus/promci@468927c440349ab56c4a1aafd453b312841503c2 # v0.4.4
|
|
- uses: ./.github/promci/actions/publish_release
|
|
with:
|
|
docker_hub_login: ${{ secrets.docker_hub_login }}
|
|
docker_hub_password: ${{ secrets.docker_hub_password }}
|
|
quay_io_login: ${{ secrets.quay_io_login }}
|
|
quay_io_password: ${{ secrets.quay_io_password }}
|
|
github_token: ${{ secrets.PROMBOT_GITHUB_TOKEN }}
|
|
publish_ui_release:
|
|
name: Publish UI on npm Registry
|
|
runs-on: ubuntu-latest
|
|
needs: [test_ui, codeql]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
|
|
- uses: prometheus/promci@468927c440349ab56c4a1aafd453b312841503c2 # v0.4.4
|
|
- name: Install nodejs
|
|
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
|
|
with:
|
|
node-version-file: "web/ui/.nvmrc"
|
|
registry-url: "https://registry.npmjs.org"
|
|
- uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
|
|
with:
|
|
path: ~/.npm
|
|
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-node-
|
|
- name: Check libraries version
|
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v2.')
|
|
run: ./scripts/ui_release.sh --check-package "$(echo ${{ github.ref_name }}|sed s/v2/v0/)"
|
|
- name: build
|
|
run: make assets
|
|
- name: Copy files before publishing libs
|
|
run: ./scripts/ui_release.sh --copy
|
|
- name: Publish dry-run libraries
|
|
if: "!(github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v2.'))"
|
|
run: ./scripts/ui_release.sh --publish dry-run
|
|
- name: Publish libraries
|
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v2.')
|
|
run: ./scripts/ui_release.sh --publish
|
|
env:
|
|
# The setup-node action writes an .npmrc file with this env variable
|
|
# as the placeholder for the auth token
|
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|