Refactor UI publishing and polish tests (#11267)

Signed-off-by: Julien Pivotto <roidelapluie@o11y.eu>

Signed-off-by: Julien Pivotto <roidelapluie@o11y.eu>
This commit is contained in:
Julien Pivotto 2022-09-06 16:58:50 +02:00 committed by GitHub
parent a703f9814b
commit 0a4c6d6c48
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 83 additions and 97 deletions

View file

@ -27,11 +27,6 @@ inputs:
runs: runs:
using: composite using: composite
steps: steps:
- name: Download all workflow run artifacts
uses: actions/download-artifact@v3
with:
name: artifact
- uses: ./.github/actions/setup_environment
- if: inputs.dockerfile_path != '' - if: inputs.dockerfile_path != ''
run: echo "export DOCKERFILE_PATH=${{ inputs.dockerfile_path }}" >> /tmp/tmp-profile run: echo "export DOCKERFILE_PATH=${{ inputs.dockerfile_path }}" >> /tmp/tmp-profile
shell: bash shell: bash

View file

@ -26,6 +26,10 @@ runs:
- uses: ./.github/actions/setup_environment - uses: ./.github/actions/setup_environment
with: with:
enable_docker_multibuild: true enable_docker_multibuild: true
- name: Download all workflow run artifacts
uses: actions/download-artifact@v3
with:
name: artifact
- uses: ./.github/actions/publish_images - uses: ./.github/actions/publish_images
if: inputs.docker_hub_organization != '' && inputs.docker_hub_login != '' if: inputs.docker_hub_organization != '' && inputs.docker_hub_login != ''
with: with:

View file

@ -26,6 +26,10 @@ runs:
- uses: ./.github/actions/setup_environment - uses: ./.github/actions/setup_environment
with: with:
enable_docker_multibuild: true enable_docker_multibuild: true
- name: Download all workflow run artifacts
uses: actions/download-artifact@v3
with:
name: artifact
- run: promu crossbuild tarballs - run: promu crossbuild tarballs
shell: bash shell: bash
- run: promu checksum .tarballs - run: promu checksum .tarballs

View file

@ -27,11 +27,6 @@ inputs:
runs: runs:
using: composite using: composite
steps: steps:
- name: Download all workflow run artifacts
uses: actions/download-artifact@v3
with:
name: artifact
- uses: ./.github/actions/setup_environment
- if: inputs.dockerfile_path != '' - if: inputs.dockerfile_path != ''
run: echo "export DOCKERFILE_PATH=${{ inputs.dockerfile_path }}" >> /tmp/tmp-profile run: echo "export DOCKERFILE_PATH=${{ inputs.dockerfile_path }}" >> /tmp/tmp-profile
shell: bash shell: bash

View file

@ -1,10 +1,11 @@
--- ---
name: tests name: CI
on: on:
pull_request: pull_request:
push: push:
jobs: jobs:
test_go: test_go:
name: Go tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
# Whenever the Go version is updated here, .promu.yml # Whenever the Go version is updated here, .promu.yml
# should also be updated. # should also be updated.
@ -22,6 +23,7 @@ jobs:
version: "3.15.8" version: "3.15.8"
test_ui: test_ui:
name: UI tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
# Whenever the Go version is updated here, .promu.yml # Whenever the Go version is updated here, .promu.yml
# should also be updated. # should also be updated.
@ -42,6 +44,7 @@ jobs:
directory: .tarballs directory: .tarballs
test_windows: test_windows:
name: Go tests on Windows
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
@ -54,6 +57,7 @@ jobs:
shell: powershell shell: powershell
test_golang_oldest: test_golang_oldest:
name: Go tests with previous Go version
runs-on: ubuntu-latest runs-on: ubuntu-latest
# The go verson in this image should be N-1 wrt test_go. # The go verson in this image should be N-1 wrt test_go.
container: container:
@ -65,6 +69,7 @@ jobs:
- run: go test ./tsdb/ -test.tsdb-isolation=false - run: go test ./tsdb/ -test.tsdb-isolation=false
test_mixins: test_mixins:
name: Mixins tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
# Whenever the Go version is updated here, .promu.yml # Whenever the Go version is updated here, .promu.yml
# should also be updated. # should also be updated.
@ -82,9 +87,10 @@ jobs:
- run: git diff --exit-code - run: git diff --exit-code
build: build:
name: Build Prometheus for common architectures
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: | if: |
!(github.event_name == 'create' && github.event.ref_type != 'tag' && !startsWith(github.event.ref, 'refs/tags/v2.')) !(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 == 'pull_request' && startsWith(github.event.pull_request.base.ref, 'release-'))
&& &&
@ -100,9 +106,10 @@ jobs:
parallelism: 3 parallelism: 3
thread: ${{ matrix.thread }} thread: ${{ matrix.thread }}
build_all: build_all:
name: Build Prometheus for all architectures
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: | if: |
(github.event_name == 'create' && github.event.ref_type != 'tag' && !startsWith(github.event.ref, 'refs/tags/v2.')) (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 == 'pull_request' && startsWith(github.event.pull_request.base.ref, 'release-'))
|| ||
@ -119,11 +126,34 @@ jobs:
with: with:
parallelism: 12 parallelism: 12
thread: ${{ matrix.thread }} thread: ${{ matrix.thread }}
golangci:
name: golangci-lint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: '<1.19'
- 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@v3.2.0
with:
version: v1.45.2
fuzzing:
uses: ./.github/workflows/fuzzing.yml
if: github.event_name == 'pull_request'
codeql:
uses: ./.github/workflows/codeql-analysis.yml
publish_main: publish_main:
name: Publish main branch artefacts
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [test_ui, test_go, test_windows, build_all] needs: [test_ui, test_go, test_windows, golangci, codeql, build_all]
if: "github.event_name == 'push' && github.event.ref == 'refs/heads/main'" if: github.event_name == 'push' && github.event.ref == 'refs/heads/main'
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: ./.github/actions/publish_main - uses: ./.github/actions/publish_main
@ -133,9 +163,10 @@ jobs:
quay_io_login: ${{ secrets.quay_io_login }} quay_io_login: ${{ secrets.quay_io_login }}
quay_io_password: ${{ secrets.quay_io_password }} quay_io_password: ${{ secrets.quay_io_password }}
publish_release: publish_release:
name: Publish release arfefacts
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [test_ui, test_go, test_windows, build_all] needs: [test_ui, test_go, test_windows, golangci, codeql, build_all]
if: github.event_name == 'create' && github.event.ref_type == 'tag' && startsWith(github.event.ref, 'refs/tags/v2.') if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v2.')
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- uses: ./.github/actions/publish_release - uses: ./.github/actions/publish_release
@ -144,3 +175,38 @@ jobs:
docker_hub_password: ${{ secrets.docker_hub_password }} docker_hub_password: ${{ secrets.docker_hub_password }}
quay_io_login: ${{ secrets.quay_io_login }} quay_io_login: ${{ secrets.quay_io_login }}
quay_io_password: ${{ secrets.quay_io_password }} quay_io_password: ${{ secrets.quay_io_password }}
publish_ui_release:
name: Publish UI on npm Registry
runs-on: ubuntu-latest
needs: [test_ui, codeql]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install nodejs
uses: actions/setup-node@v3
with:
node-version-file: "web/ui/.nvmrc"
registry-url: "https://registry.npmjs.org"
- uses: actions/cache@v3.0.8
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 }}

View file

@ -2,10 +2,7 @@
name: "CodeQL" name: "CodeQL"
on: on:
push: workflow_call:
branches: [main, release-*]
pull_request:
branches: [main]
schedule: schedule:
- cron: "26 14 * * 1" - cron: "26 14 * * 1"

View file

@ -1,6 +1,6 @@
name: CIFuzz name: CIFuzz
on: on:
pull_request: workflow_call:
jobs: jobs:
Fuzzing: Fuzzing:
runs-on: ubuntu-latest runs-on: ubuntu-latest

View file

@ -1,30 +0,0 @@
name: golangci-lint
on:
push:
paths:
- "go.sum"
- "go.mod"
- "**.go"
- "scripts/errcheck_excludes.txt"
- ".github/workflows/golangci-lint.yml"
- ".golangci.yml"
pull_request:
jobs:
golangci:
name: lint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: install Go
uses: actions/setup-go@v2
with:
go-version: 1.18.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@v3.2.0
with:
version: v1.45.2

View file

@ -1,45 +0,0 @@
name: ui_build_and_release
on:
pull_request:
push:
branches:
- main
tags:
- "v0.[0-9]+.[0-9]+*"
jobs:
release:
name: release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install nodejs
uses: actions/setup-node@v3
with:
node-version-file: "web/ui/.nvmrc"
registry-url: "https://registry.npmjs.org"
- uses: actions/cache@v3.0.8
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Check libraries version
## This step is verifying that the version of each package is matching the tag
if: ${{ github.event_name == 'push' && startsWith(github.ref_name, 'v') }}
run: ./scripts/ui_release.sh --check-package "${{ github.ref_name }}"
- 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 == 'pull_request' || github.ref_name == 'main' }}
run: ./scripts/ui_release.sh --publish dry-run
- name: Publish libraries
if: ${{ github.event_name == 'push' && startsWith(github.ref_name, 'v') }}
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 }}