Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 84 additions & 10 deletions .github/workflows/zig-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,61 @@ on:
required: false
type: string
default: "0.16.0"
targets_json:
description: JSON array of target matrix entries. Each entry needs os, target, and zig_target.
required: false
type: string
default: >-
[
{"os":"ubuntu-latest","target":"linux-x86_64","zig_target":"x86_64-linux-musl"},
{"os":"macos-latest","target":"macos-aarch64","zig_target":"aarch64-macos"},
{"os":"windows-latest","target":"windows-x86_64","zig_target":"x86_64-windows"}
]
node_version:
description: Optional Node.js version to install before custom commands.
required: false
type: string
default: ""
node_cache_dependency_path:
description: Optional npm dependency path for setup-node caching.
required: false
type: string
default: ""
setup_command:
description: Optional command run after tool setup and before tests.
required: false
type: string
default: ""
pre_test_command:
description: Optional command run immediately before tests.
required: false
type: string
default: ""
test_command:
description: Command used to run tests.
required: false
type: string
default: "zig build test --summary all"
pre_build_command:
description: Optional command run immediately before ReleaseSmall builds.
required: false
type: string
default: ""
build_args:
description: Extra arguments appended to ReleaseSmall zig build.
required: false
type: string
default: ""
e2e_command:
description: Optional command run after ReleaseSmall build on one matrix target.
required: false
type: string
default: ""
e2e_target:
description: Matrix target name that should run e2e_command.
required: false
type: string
default: "linux-x86_64"
upload_artifacts:
description: Upload host binaries as CI artifacts.
required: false
Expand All @@ -46,16 +91,7 @@ jobs:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
target: linux-x86_64
zig_target: x86_64-linux-musl
- os: macos-latest
target: macos-aarch64
zig_target: aarch64-macos
- os: windows-latest
target: windows-x86_64
zig_target: x86_64-windows
include: ${{ fromJson(inputs.targets_json) }}

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
Expand All @@ -65,6 +101,20 @@ jobs:
with:
version: ${{ inputs.zig_version }}

- name: Set up Node.js
if: inputs.node_version != '' && inputs.node_cache_dependency_path == ''
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: ${{ inputs.node_version }}

- name: Set up Node.js with npm cache
if: inputs.node_version != '' && inputs.node_cache_dependency_path != ''
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: ${{ inputs.node_version }}
cache: npm
cache-dependency-path: ${{ inputs.node_cache_dependency_path }}

- name: Resolve artifact prefix
id: artifact
run: |
Expand All @@ -83,11 +133,29 @@ jobs:
key: zig-${{ matrix.target }}-${{ hashFiles('src/**/*.zig', 'build.zig', 'build.zig.zon', 'vendor/**') }}
restore-keys: zig-${{ matrix.target }}-

- name: Run setup command
if: inputs.setup_command != ''
env:
SETUP_COMMAND: ${{ inputs.setup_command }}
run: bash -euo pipefail -c "$SETUP_COMMAND"

- name: Run pre-test command
if: inputs.pre_test_command != ''
env:
PRE_TEST_COMMAND: ${{ inputs.pre_test_command }}
run: bash -euo pipefail -c "$PRE_TEST_COMMAND"

- name: Run tests
env:
TEST_COMMAND: ${{ inputs.test_command }}
run: ${TEST_COMMAND} 2>&1 | tee test-output.txt

- name: Run pre-build command
if: inputs.pre_build_command != ''
env:
PRE_BUILD_COMMAND: ${{ inputs.pre_build_command }}
run: bash -euo pipefail -c "$PRE_BUILD_COMMAND"

- name: Build ReleaseSmall
env:
EXTRA_BUILD_ARGS: ${{ inputs.build_args }}
Expand All @@ -102,6 +170,12 @@ jobs:
fi
zig build "${zig_args[@]}"

- name: Run E2E command
if: inputs.e2e_command != '' && matrix.target == inputs.e2e_target
env:
E2E_COMMAND: ${{ inputs.e2e_command }}
run: bash -euo pipefail -c "$E2E_COMMAND"

- name: Preserve host binary
if: inputs.upload_artifacts
run: |
Expand Down
118 changes: 56 additions & 62 deletions .github/workflows/zig-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,40 @@ on:
required: false
type: string
default: "29.0.14206865"
targets_json:
description: JSON array of nightly target matrix entries.
required: false
type: string
default: >-
[
{"os":"ubuntu-latest","target":"linux-x86_64","zig_target":"x86_64-linux-musl","zig_cpu":"","ext":""},
{"os":"ubuntu-latest","target":"linux-aarch64","zig_target":"aarch64-linux-musl","zig_cpu":"","ext":""},
{"os":"ubuntu-latest","target":"linux-arm32-gnu","zig_target":"arm-linux-gnueabihf","zig_cpu":"","ext":""},
{"os":"ubuntu-latest","target":"linux-arm32-musl","zig_target":"arm-linux-musleabihf","zig_cpu":"","ext":""},
{"os":"ubuntu-latest","target":"linux-riscv64","zig_target":"riscv64-linux-musl","zig_cpu":"","ext":""},
{"os":"ubuntu-latest","target":"android-aarch64","zig_target":"aarch64-linux-android","zig_cpu":"","ext":""},
{"os":"ubuntu-latest","target":"android-armv7","zig_target":"arm-linux-androideabi","zig_cpu":"baseline+v7a","ext":""},
{"os":"ubuntu-latest","target":"android-x86_64","zig_target":"x86_64-linux-android","zig_cpu":"","ext":""},
{"os":"macos-latest","target":"macos-aarch64","zig_target":"aarch64-macos","zig_cpu":"","ext":""},
{"os":"macos-latest","target":"macos-x86_64","zig_target":"x86_64-macos","zig_cpu":"","ext":""},
{"os":"windows-latest","target":"windows-x86_64","zig_target":"x86_64-windows","zig_cpu":"","ext":".exe"},
{"os":"windows-latest","target":"windows-aarch64","zig_target":"aarch64-windows","zig_cpu":"","ext":".exe"}
]
node_version:
description: Optional Node.js version to install before custom commands.
required: false
type: string
default: ""
node_cache_dependency_path:
description: Optional npm dependency path for setup-node caching.
required: false
type: string
default: ""
pre_build_command:
description: Optional command run before each nightly build. BUILD_VERSION is available.
required: false
type: string
default: ""
build_args:
description: Extra arguments appended to zig build.
required: false
Expand Down Expand Up @@ -129,67 +163,7 @@ jobs:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
target: linux-x86_64
zig_target: x86_64-linux-musl
zig_cpu: ""
ext: ""
- os: ubuntu-latest
target: linux-aarch64
zig_target: aarch64-linux-musl
zig_cpu: ""
ext: ""
- os: ubuntu-latest
target: linux-arm32-gnu
zig_target: arm-linux-gnueabihf
zig_cpu: ""
ext: ""
- os: ubuntu-latest
target: linux-arm32-musl
zig_target: arm-linux-musleabihf
zig_cpu: ""
ext: ""
- os: ubuntu-latest
target: linux-riscv64
zig_target: riscv64-linux-musl
zig_cpu: ""
ext: ""
- os: ubuntu-latest
target: android-aarch64
zig_target: aarch64-linux-android
zig_cpu: ""
ext: ""
- os: ubuntu-latest
target: android-armv7
zig_target: arm-linux-androideabi
zig_cpu: baseline+v7a
ext: ""
- os: ubuntu-latest
target: android-x86_64
zig_target: x86_64-linux-android
zig_cpu: ""
ext: ""
- os: macos-latest
target: macos-aarch64
zig_target: aarch64-macos
zig_cpu: ""
ext: ""
- os: macos-latest
target: macos-x86_64
zig_target: x86_64-macos
zig_cpu: ""
ext: ""
- os: windows-latest
target: windows-x86_64
zig_target: x86_64-windows
zig_cpu: ""
ext: ".exe"
- os: windows-latest
target: windows-aarch64
zig_target: aarch64-windows
zig_cpu: ""
ext: ".exe"
include: ${{ fromJson(inputs.targets_json) }}

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
Expand All @@ -199,6 +173,20 @@ jobs:
with:
version: ${{ inputs.zig_version }}

- name: Set up Node.js
if: inputs.node_version != '' && inputs.node_cache_dependency_path == ''
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: ${{ inputs.node_version }}

- name: Set up Node.js with npm cache
if: inputs.node_version != '' && inputs.node_cache_dependency_path != ''
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: ${{ inputs.node_version }}
cache: npm
cache-dependency-path: ${{ inputs.node_cache_dependency_path }}

- name: Set up JDK 17
if: startsWith(matrix.target, 'android-')
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
Expand Down Expand Up @@ -239,6 +227,13 @@ jobs:
gcc_dir=
EOF

- name: Run pre-build command
if: inputs.pre_build_command != ''
env:
BUILD_VERSION: ${{ needs.preflight.outputs.version }}
PRE_BUILD_COMMAND: ${{ inputs.pre_build_command }}
run: bash -euo pipefail -c "$PRE_BUILD_COMMAND"

- name: Build ReleaseSmall
env:
ANDROID_API_LEVEL: ${{ inputs.android_api_level }}
Expand Down Expand Up @@ -297,4 +292,3 @@ jobs:
path: nightly-artifacts/*
if-no-files-found: error
retention-days: ${{ inputs.retention_days }}

Loading
Loading