Skip to content

Optimize CI

Optimize CI #168

Workflow file for this run

name: CI
on:
push:
branches: [main, zig-master]
pull_request:
branches: [main, zig-master]
workflow_dispatch:
env:
ZIG_VERSION: master
CACHE_DIR: ${{ github.workspace }}/.zig-cache
jobs:
build_and_test:
name: Build and Test
runs-on: ${{ matrix.os }}
continue-on-error: true
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Zig
uses: mlugg/setup-zig@v1
with:
version: ${{ env.ZIG_VERSION }}
- name: Unit Test Regz
run: zig build --cache-dir $CACHE_DIR test
working-directory: tools/regz
- name: Unit Test UF2
run: zig build --cache-dir $CACHE_DIR test
working-directory: tools/uf2
- name: Validate Foundation Libc
run: zig build --cache-dir $CACHE_DIR validate
working-directory: modules/foundation-libc
- name: Build
run: zig build --cache-dir $CACHE_DIR -Doptimize=ReleaseSmall
- name: Unit test port/gigadevice/gd32
run: zig build --cache-dir $CACHE_DIR test
working-directory: port/gigadevice/gd32
- name: Unit test port/raspberrypi/rp2xxx
run: zig build --cache-dir $CACHE_DIR test
working-directory: port/raspberrypi/rp2xxx
- name: Unit test port/stmicro/stm32
run: zig build --cache-dir $CACHE_DIR test
working-directory: port/stmicro/stm32
- name: Build examples/espressif/esp
run: zig build --cache-dir $CACHE_DIR -Doptimize=ReleaseSmall --summary all
working-directory: examples/espressif/esp
- name: Build examples/gigadevice/gd32
run: zig build --cache-dir $CACHE_DIR -Doptimize=ReleaseSmall --summary all
working-directory: examples/gigadevice/gd32
- name: Build examples/microchip/avr
run: zig build --cache-dir $CACHE_DIR -Doptimize=ReleaseSmall --summary all
working-directory: examples/microchip/avr
- name: Build examples/microchip/atsam
run: zig build --cache-dir $CACHE_DIR -Doptimize=ReleaseSmall --summary all
working-directory: examples/microchip/atsam
- name: Build examples/nordic/nrf5x
run: zig build --cache-dir $CACHE_DIR -Doptimize=ReleaseSmall --summary all
working-directory: examples/nordic/nrf5x
- name: Build examples/nxp/lpc
run: zig build --cache-dir $CACHE_DIR -Doptimize=ReleaseSmall --summary all
working-directory: examples/nxp/lpc
- name: Build examples/stmicro/stm32
run: zig build --cache-dir $CACHE_DIR -Doptimize=ReleaseSmall --summary all
working-directory: examples/stmicro/stm32
- name: Build examples/raspberrypi/rp2xxx
working-directory: examples/raspberrypi/rp2xxx
run: zig build --cache-dir $CACHE_DIR -Doptimize=ReleaseSmall --summary all
- name: Build Website
run: zig build --cache-dir $CACHE_DIR
working-directory: website
stm32-gen-check:
name: Check that stm32 generated code is up to date
continue-on-error: true
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Zig
uses: mlugg/setup-zig@v1
with:
version: ${{ env.ZIG_VERSION }}
- name: Generate Code
run: zig build --cache-dir $CACHE_DIR -Dgenerate
working-directory: port/stmicro/stm32
- name: Check for code diffs
run: |
if [[ $(git status --porcelain | grep -v '^??') ]]; then
echo "Code differences detected:"
git diff
echo "Please commit or fix these changes to proceed."
exit 1
else
echo "No code differences detected."
fi
dry-run-packaging:
name: Dry Run Packaging
continue-on-error: true
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Zig
uses: mlugg/setup-zig@v1
with:
version: ${{ env.ZIG_VERSION }}
- name: Dry Run Packaging
run: |
MICROZIG_VERSION=$(zig build --cache-dir $CACHE_DIR package -- get-version)
echo microzig version: $MICROZIG_VERSION
zig build --cache-dir $CACHE_DIR package -- http://localhost:8000
python3 -m http.server 8000 --directory boxzer-out &
sleep 1
cd tools/package-test
zig fetch --save=microzig http://localhost:8000/${MICROZIG_VERSION}/microzig.tar.gz
zig build --cache-dir $CACHE_DIR -Doptimize=ReleaseSmall
jobs -p | xargs kill