Skip to content

Use ASAN when running unit tests in CI #231

Use ASAN when running unit tests in CI

Use ASAN when running unit tests in CI #231

Workflow file for this run

name: Main berserker CI
on:
push:
branches:
- main
pull_request:
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build-and-push:
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.get-tag.outputs.tag }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- run: make
- run: make build-berserker-network
- name: Get tag
id: get-tag
run: echo "tag=$(make tag)" >> "$GITHUB_OUTPUT"
- name: Retag and push builder to rhacs-eng
uses: stackrox/actions/images/retag-and-push@v1
with:
src-image: builder
dst-image: quay.io/rhacs-eng/qa:berserker-builder-${{ steps.get-tag.outputs.tag }}
username: ${{ secrets.QUAY_RHACS_ENG_RW_USERNAME }}
password: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }}
- name: Retag and push builder to stackrox-io
uses: stackrox/actions/images/retag-and-push@v1
with:
src-image: builder
dst-image: quay.io/stackrox-io/berserker:builder-${{ steps.get-tag.outputs.tag }}
username: ${{ secrets.QUAY_STACKROX_IO_RW_USERNAME }}
password: ${{ secrets.QUAY_STACKROX_IO_RW_PASSWORD }}
- name: Retag and push berserker to rhacs-eng
uses: stackrox/actions/images/retag-and-push@v1
with:
src-image: berserker
dst-image: quay.io/rhacs-eng/qa:berserker-${{ steps.get-tag.outputs.tag }}
username: ${{ secrets.QUAY_RHACS_ENG_RW_USERNAME }}
password: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }}
- name: Retag and push berserker to stackrox-io
uses: stackrox/actions/images/retag-and-push@v1
with:
src-image: berserker
dst-image: quay.io/stackrox-io/berserker:${{ steps.get-tag.outputs.tag }}
username: ${{ secrets.QUAY_STACKROX_IO_RW_USERNAME }}
password: ${{ secrets.QUAY_STACKROX_IO_RW_PASSWORD }}
- name: Retag and push berserker-network to rhacs-eng
uses: stackrox/actions/images/retag-and-push@v1
with:
src-image: berserker-network
dst-image: quay.io/rhacs-eng/qa:berserker-network-${{ steps.get-tag.outputs.tag }}
username: ${{ secrets.QUAY_RHACS_ENG_RW_USERNAME }}
password: ${{ secrets.QUAY_RHACS_ENG_RW_PASSWORD }}
- name: Retag and push berserker-network to stackrox-io
uses: stackrox/actions/images/retag-and-push@v1
with:
src-image: berserker-network
dst-image: quay.io/stackrox-io/berserker:network-${{ steps.get-tag.outputs.tag }}
username: ${{ secrets.QUAY_STACKROX_IO_RW_USERNAME }}
password: ${{ secrets.QUAY_STACKROX_IO_RW_PASSWORD }}
unit-tests:
name: unit-tests (${{ matrix.test-type.name }})
needs: build-and-push
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
test-type:
- name: standard
command: cargo test
- name: asan
command: |
curl --proto "=https" --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly &&
source "${HOME}"/.cargo/env &&
rustup component add rust-src --toolchain nightly &&
TARGET=$(rustc --version --verbose | grep host | cut -d" " -f2) &&
RUSTFLAGS="-Z sanitizer=address" cargo +nightly test -Z build-std --target "$TARGET"
steps:
- name: Pull builder image
run: docker pull quay.io/stackrox-io/berserker:builder-${{ needs.build-and-push.outputs.tag }}
- name: Run ${{ matrix.test-type.name }} tests
run: docker run --rm quay.io/stackrox-io/berserker:builder-${{ needs.build-and-push.outputs.tag }} bash -c '${{ matrix.test-type.command }}'