Merge pull request #13699 from prometheus/cedwards/tsdb-test-helpers #127
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
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.22-base | |
steps: | |
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 | |
- 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.22-base | |
steps: | |
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 | |
- 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 | |
container: | |
# The go version in this image should be N-1 wrt test_go. | |
image: quay.io/prometheus/golang-builder:1.21-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.22-base | |
steps: | |
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 | |
- uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 | |
- 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@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
with: | |
go-version: 1.22.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.22-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@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 | |
- 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@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 | |
- uses: ./.github/promci/actions/build | |
with: | |
parallelism: 12 | |
thread: ${{ matrix.thread }} | |
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@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
with: | |
cache: false | |
go-version: 1.22.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@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
with: | |
go-version: 1.22.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@a4f60bb28d35aeee14e6880718e0c85ff1882e64 # v6.0.1 | |
with: | |
args: --verbose | |
# Make sure to sync this with Makefile.common and scripts/golangci-lint.yml. | |
version: v1.59.1 | |
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@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 | |
- 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@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 | |
- 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@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 | |
- name: Install nodejs | |
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 | |
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 }} |