Distributed verification #986
Workflow file for this run
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: | |
branches: | |
- develop | |
tags: | |
- 'v*' | |
jobs: | |
quicktests: | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: set up go | |
uses: actions/setup-go@v5 | |
with: | |
check-latest: true | |
go-version-file: "go.mod" | |
- name: Install OpenCL dev | |
run: sudo apt-get update -q && sudo apt-get install -qy ocl-icd-opencl-dev | |
- name: fmt, tidy, generate | |
run: | | |
make install | |
make test-fmt | |
make test-tidy | |
make test-generate | |
- name: staticcheck | |
run: make staticcheck | |
lint: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: set up go | |
uses: actions/setup-go@v5 | |
with: | |
check-latest: true | |
go-version-file: "go.mod" | |
- name: setup env | |
run: make install | |
- name: lint | |
run: make lint-github-action | |
unittests: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 15 | |
needs: | |
- quicktests | |
- lint | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- [self-hosted, linux, arm64] | |
- macos-latest | |
- [self-hosted, macos, arm64] | |
- windows-latest | |
steps: | |
- name: Add OpenCL support - Ubuntu | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: sudo apt-get update -q && sudo apt-get install -qy ocl-icd-opencl-dev libpocl2 | |
- name: disable Windows Defender - Windows | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
Set-MpPreference -DisableRealtimeMonitoring $true | |
- name: Add OpenCL support - Windows | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: choco install opencl-intel-cpu-runtime | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: set up go | |
uses: actions/setup-go@v5 | |
with: | |
check-latest: true | |
go-version-file: "go.mod" | |
- name: setup env | |
run: make install | |
- name: Clear test cache | |
run: make clear-test-cache | |
- name: unit tests | |
env: | |
GOTESTSUM_FORMAT: standard-verbose | |
GOTESTSUM_JUNITFILE: unit-tests.xml | |
run: make test | |
- name: Publish Test Report | |
uses: mikepenz/action-junit-report@v4 | |
# always run even if the previous step fails | |
if: always() | |
with: | |
report_paths: "**/unit-tests.xml" | |
annotate_only: true | |
build: | |
name: Build postcli | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 15 | |
needs: | |
- unittests | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- [self-hosted, linux, arm64] | |
- macos-latest | |
- [self-hosted, macos, arm64] | |
- windows-latest | |
steps: | |
- name: Add OpenCL support - Ubuntu | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
run: sudo apt-get update -q && sudo apt-get install -qy ocl-icd-opencl-dev libpocl2 | |
- name: disable Windows Defender - Windows | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: | | |
Set-MpPreference -DisableRealtimeMonitoring $true | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: set up go | |
uses: actions/setup-go@v5 | |
with: | |
check-latest: true | |
go-version-file: "go.mod" | |
- name: setup env | |
run: make install | |
- name: build postcli | |
run: make build | |
- name: Prepare release archive | |
shell: bash | |
run: | | |
rm -f ./build/post.h | |
cp ./cmd/postcli/README.md ./build/ | |
- name: Set name of release archive | |
shell: bash | |
run: | | |
if [[ ${{ runner.arch }} == "ARM64" ]]; then | |
echo "OUTNAME=${{ runner.os }}_${{ runner.arch }}" >> $GITHUB_ENV | |
else | |
echo "OUTNAME=${{ runner.os }}" >> $GITHUB_ENV | |
fi | |
- name: Archive postcli artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: postcli-${{ env.OUTNAME }}.zip | |
path: ./build/* | |
if-no-files-found: error | |
release: | |
name: Publish release | |
if: github.event_name == 'push' && github.ref_type == 'tag' | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: ${{ github.workspace }}/assets | |
- name: Create archives | |
run: | | |
mkdir ./artifacts; | |
for dir in ./assets/*/; do | |
7z a -tzip "${{ github.workspace }}/artifacts/$(basename $dir)" "$dir/*"; | |
done | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: ${{ github.workspace }}/artifacts/*.zip | |
prerelease: false | |
draft: true | |
fail_on_unmatched_files: true | |
coverage: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
needs: | |
- quicktests | |
- lint | |
steps: | |
- name: Add OpenCL support - Ubuntu | |
run: sudo apt-get update -q && sudo apt-get install -qy ocl-icd-opencl-dev libpocl2 | |
- uses: actions/checkout@v4 | |
- name: set up go | |
uses: actions/setup-go@v5 | |
with: | |
check-latest: true | |
go-version-file: "go.mod" | |
- name: setup env | |
run: make install | |
- name: test coverage | |
run: make cover | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} |