--- name: tests on: pull_request: push: jobs: test_go: 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.18-base steps: - uses: actions/checkout@v3 - uses: ./.github/actions/setup_environment - run: make GO_ONLY=1 SKIP_GOLANGCI_LINT=1 - run: go test ./tsdb/ -test.tsdb-isolation=false - run: make -C documentation/examples/remote_storage - run: make -C documentation/examples - uses: ./.github/actions/check_proto with: version: "3.15.8" test_ui: 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.18-base steps: - uses: actions/checkout@v3 - uses: ./.github/actions/setup_environment with: enable_go: false enable_npm: true - run: make assets-tarball - run: make ui-lint - run: make ui-test - uses: actions/upload-artifact@v3 with: path: | .tarballs test_windows: runs-on: windows-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: go-version: '<1.19' - 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_golang_oldest: runs-on: ubuntu-latest # The go verson in this image should be N-1 wrt test_go. container: image: quay.io/prometheus/golang-builder:1.17-base steps: - uses: actions/checkout@v3 - run: make build - run: go test ./tsdb/... - run: go test ./tsdb/ -test.tsdb-isolation=false test_mixins: 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.18-base steps: - uses: actions/checkout@v3 - 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: runs-on: ubuntu-latest if: | !(github.event_name == 'create' && github.event.ref_type != 'tag' && !startsWith(github.event.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@v3 - uses: ./.github/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: runs-on: ubuntu-latest if: | (github.event_name == 'create' && github.event.ref_type != 'tag' && !startsWith(github.event.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@v3 - uses: ./.github/actions/build with: parallelism: 12 thread: ${{ matrix.thread }} publish_main: runs-on: ubuntu-latest needs: [test_ui, test_go, test_windows, build_all] if: "github.event_name == 'push' && github.event.ref == 'refs/heads/main'" steps: - uses: actions/checkout@v3 - uses: ./.github/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: runs-on: ubuntu-latest needs: [test_ui, test_go, test_windows, build_all] if: github.event_name == 'create' && github.event.ref_type == 'tag' && startsWith(github.event.ref, 'refs/tags/v2.') steps: - uses: actions/checkout@v3 - uses: ./.github/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 }}