Skip to content

chore(infra): rename ci workflow and tag releases #1

chore(infra): rename ci workflow and tag releases

chore(infra): rename ci workflow and tag releases #1

Workflow file for this run

name: build
on:
pull_request:
push:
branches:
- main
tags:
- "*"
workflow_dispatch:
jobs:
prebuild-agents:
name: Prebuild Agents
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache Rust
uses: Swatinem/rust-cache@v2
- name: Add musl targets
run: rustup target add x86_64-unknown-linux-musl aarch64-unknown-linux-musl
- name: Install cargo-zigbuild (pip)
run: |
python -m pip install --user cargo-zigbuild
echo "$(python -m site --user-base)/bin" >> "$GITHUB_PATH"
- name: Build intar-agent (musl)
run: |
cargo zigbuild --release --target x86_64-unknown-linux-musl -p intar-agent
cargo zigbuild --release --target aarch64-unknown-linux-musl -p intar-agent
- name: Stage prebuilt agents
run: |
mkdir -p prebuilt-agents
cp target/x86_64-unknown-linux-musl/release/intar-agent prebuilt-agents/intar-agent-x86_64
cp target/aarch64-unknown-linux-musl/release/intar-agent prebuilt-agents/intar-agent-aarch64
- name: Upload prebuilt agents
uses: actions/upload-artifact@v6
with:
name: intar-agent-musl
path: prebuilt-agents
check:
name: Check - ${{ matrix.platform.os-name }}
if: github.event_name == 'pull_request'
needs: prebuild-agents
env:
INTAR_AGENT_X86_64_PATH: ${{ github.workspace }}/prebuilt-agents/intar-agent-x86_64
INTAR_AGENT_AARCH64_PATH: ${{ github.workspace }}/prebuilt-agents/intar-agent-aarch64
strategy:
fail-fast: false
matrix:
platform:
- os-name: Linux-x86_64
runs-on: ubuntu-24.04
target: x86_64-unknown-linux-musl
- os-name: Linux-aarch64
runs-on: ubuntu-24.04-arm
target: aarch64-unknown-linux-musl
- os-name: macOS-x86_64
runs-on: macos-15-intel
target: x86_64-apple-darwin
- os-name: macOS-aarch64
runs-on: macos-26
target: aarch64-apple-darwin
- os-name: Windows-x86_64
runs-on: windows-2025
target: x86_64-pc-windows-msvc
- os-name: Windows-aarch64
runs-on: windows-11-arm
target: aarch64-pc-windows-msvc
runs-on: ${{ matrix.platform.runs-on }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Download prebuilt agents
uses: actions/download-artifact@v7
with:
name: intar-agent-musl
path: prebuilt-agents
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Add musl targets
run: rustup target add x86_64-unknown-linux-musl aarch64-unknown-linux-musl
- name: Install just
if: runner.os != 'Windows'
uses: taiki-e/install-action@v2
with:
tool: just
- name: Install just (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: choco install just -y
- name: Install cargo-nextest
uses: taiki-e/install-action@v2
with:
tool: cargo-nextest
- name: Run just check (Unix)
if: runner.os != 'Windows'
run: just check
- name: Run just check (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: just check
build:
name: Build - ${{ matrix.platform.os-name }}
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')
needs: prebuild-agents
env:
INTAR_AGENT_X86_64_PATH: ${{ github.workspace }}/prebuilt-agents/intar-agent-x86_64
INTAR_AGENT_AARCH64_PATH: ${{ github.workspace }}/prebuilt-agents/intar-agent-aarch64
strategy:
fail-fast: false
matrix:
platform:
- os-name: Linux-x86_64
runs-on: ubuntu-24.04
target: x86_64-unknown-linux-musl
bin: intar
- os-name: Linux-aarch64
runs-on: ubuntu-24.04-arm
target: aarch64-unknown-linux-musl
bin: intar
- os-name: macOS-x86_64
runs-on: macos-15-intel
target: x86_64-apple-darwin
bin: intar
- os-name: macOS-aarch64
runs-on: macos-26
target: aarch64-apple-darwin
bin: intar
- os-name: Windows-x86_64
runs-on: windows-2025
target: x86_64-pc-windows-msvc
bin: intar.exe
- os-name: Windows-aarch64
runs-on: windows-11-arm
target: aarch64-pc-windows-msvc
bin: intar.exe
runs-on: ${{ matrix.platform.runs-on }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Download prebuilt agents
uses: actions/download-artifact@v7
with:
name: intar-agent-musl
path: prebuilt-agents
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Add targets
run: rustup target add x86_64-unknown-linux-musl aarch64-unknown-linux-musl ${{ matrix.platform.target }}
- name: Install just
if: runner.os != 'Windows'
uses: taiki-e/install-action@v2
with:
tool: just
- name: Install just (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: choco install just -y
- name: Install cargo-nextest
uses: taiki-e/install-action@v2
with:
tool: cargo-nextest
- name: Run just check (Unix)
if: runner.os != 'Windows'
run: just check
- name: Run just check (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: just check
- name: Build binary
uses: houseabsolute/actions-rust-cross@v1
with:
command: build
target: ${{ matrix.platform.target }}
args: "--locked --release --package intar-cli --bin intar"
strip: true
- name: Upload binary (Unix)
if: runner.os != 'Windows'
uses: actions/upload-artifact@v6
with:
name: intar-${{ matrix.platform.target }}
path: target/${{ matrix.platform.target }}/release/intar
- name: Upload binary (Windows)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v6
with:
name: intar-${{ matrix.platform.target }}
path: target/${{ matrix.platform.target }}/release/intar.exe
release:
name: Release
if: startsWith(github.ref, 'refs/tags/')
needs: build
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
- name: Download build artifacts
uses: actions/download-artifact@v7
with:
pattern: intar-*
path: dist
- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
files: |
dist/*/intar
dist/*/intar.exe
generate_release_notes: true
e2e:
name: E2E - ${{ matrix.os-name }}
if: github.event_name == 'pull_request'
needs: prebuild-agents
strategy:
fail-fast: false
matrix:
include:
- os-name: Linux
runs-on: ubuntu-24.04
- os-name: macOS-Intel
runs-on: macos-15-intel
runs-on: ${{ matrix.runs-on }}
env:
RUST_BACKTRACE: "1"
INTAR_AGENT_X86_64_PATH: ${{ github.workspace }}/prebuilt-agents/intar-agent-x86_64
INTAR_AGENT_AARCH64_PATH: ${{ github.workspace }}/prebuilt-agents/intar-agent-aarch64
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Download prebuilt agents
uses: actions/download-artifact@v7
with:
name: intar-agent-musl
path: prebuilt-agents
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Add musl targets
run: rustup target add x86_64-unknown-linux-musl aarch64-unknown-linux-musl
- name: Cache Rust
uses: Swatinem/rust-cache@v2
- name: Install dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y qemu-system-x86 qemu-utils cloud-image-utils tmux
- name: Enable KVM group perms
if: runner.os == 'Linux'
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Check KVM access
if: runner.os == 'Linux'
run: |
ls -la /dev/kvm
test -r /dev/kvm
test -w /dev/kvm
- name: Install dependencies (macOS)
if: runner.os == 'macOS'
run: |
brew update
brew install qemu tmux
- name: Build intar
run: cargo build --bin intar
- name: Run e2e
run: bash scripts/e2e-nginx.sh