Skip to content
Open
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
87 changes: 54 additions & 33 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,71 +8,86 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

# Do not add permissions here! Configure them at the job level!
permissions: {}

jobs:
rust-version:
name: read Rust version
runs-on: ubuntu-24.04
outputs:
version: ${{ steps.read.outputs.version }}
steps:
- uses: actions/checkout@v7
- id: read
run: |
version=$(sed -n 's/^channel = "\(.*\)".*/\1/p' rust-toolchain.toml)
echo "version=$version" >> "$GITHUB_OUTPUT"

validate:
name: validate sources
runs-on: ubuntu-22.04
permissions:
contents: read
needs: rust-version
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: mlugg/setup-zig@8d6198c65fb0feaa111df26e6b467fea8345e46f # ratchet:mlugg/setup-zig@v2.0.5
with:
version: 0.16.0
- uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
with:
version: nightly-new-compiler
- uses: dtolnay/rust-toolchain@1.83.0
with:
components: llvm-tools-preview
targets: x86_64-unknown-linux-musl
- name: Install Rust toolchain
run: |
rustup toolchain install "${{ needs.rust-version.outputs.version }}" --profile minimal --target x86_64-unknown-linux-musl --component llvm-tools-preview
rustup default "${{ needs.rust-version.outputs.version }}"
- name: Format, check, and test examples
run: ./scripts/test.py --operation validate

validate-windows:
name: validate sources (windows)
needs: rust-version
runs-on: windows-2025
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
with:
version: nightly-new-compiler
- uses: dtolnay/rust-toolchain@1.83.0
with:
targets: x86_64-pc-windows-msvc
- name: Install Rust toolchain
shell: bash
run: |
rustup toolchain install "${{ needs.rust-version.outputs.version }}" --profile minimal --target x86_64-pc-windows-msvc
rustup default "${{ needs.rust-version.outputs.version }}"
- name: Format, check, and test examples
shell: bash
run: ./scripts/test.py --operation validate

build-examples:
name: build examples (${{ matrix.target }})
needs: validate
needs: [rust-version, validate]
permissions:
contents: read
strategy:
fail-fast: false
matrix:
include:
- target: x64mac
os: macos-15
os: macos-26-intel
rust_target: x86_64-apple-darwin
- target: arm64mac
os: macos-15
os: macos-26
rust_target: aarch64-apple-darwin
- target: x64musl
os: ubuntu-22.04
os: ubuntu-24.04
rust_target: x86_64-unknown-linux-musl
- target: arm64musl
os: ubuntu-22.04
os: ubuntu-24.04-arm
rust_target: aarch64-unknown-linux-musl
- target: x64win
os: windows-2025
rust_target: x86_64-pc-windows-msvc
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- name: Install Zig
if: runner.os != 'Windows'
uses: mlugg/setup-zig@8d6198c65fb0feaa111df26e6b467fea8345e46f # ratchet:mlugg/setup-zig@v2.0.5
Expand All @@ -81,45 +96,51 @@ jobs:
- uses: roc-lang/setup-roc@cbe782d6f165b89c87d99f50a59ac4f5f73b4427 # ratchet:roc-lang/setup-roc@v0.3.0
with:
version: nightly-new-compiler
- uses: dtolnay/rust-toolchain@1.83.0
with:
targets: ${{ matrix.rust_target }}
- name: Install Rust toolchain
shell: bash
run: |
rustup toolchain install "${{ needs.rust-version.outputs.version }}" --profile minimal --target ${{ matrix.rust_target }}
rustup default "${{ needs.rust-version.outputs.version }}"
- name: Install LLVM tools for Linux host stripping
if: endsWith(matrix.target, 'musl')
run: rustup component add llvm-tools-preview
- name: Cross-compile every example
shell: bash
run: ./scripts/test.py --operation build --target "${{ matrix.target }}" --artifact-dir dist/example-binaries
- name: Upload example binaries
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: basic-cli-example-binaries-${{ matrix.target }}
path: dist/example-binaries/${{ matrix.target }}
if-no-files-found: error

run-examples:
name: run examples (${{ matrix.target }})
needs: build-examples
permissions:
contents: read
needs: [rust-version, build-examples]
strategy:
fail-fast: false
matrix:
include:
- target: x64mac
os: macos-15-intel
os: macos-26-intel
- target: arm64mac
os: macos-15
os: macos-26
- target: x64musl
os: ubuntu-22.04
os: ubuntu-24.04
- target: arm64musl
os: ubuntu-24.04-arm
- target: x64win
os: windows-2025
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@1.83.0
- uses: actions/checkout@v7
- name: Install Rust toolchain
shell: bash
run: |
rustup toolchain install "${{ needs.rust-version.outputs.version }}" --profile minimal
rustup default "${{ needs.rust-version.outputs.version }}"
- name: Download native example binaries
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: basic-cli-example-binaries-${{ matrix.target }}
path: dist/example-binaries/${{ matrix.target }}
Expand Down
13 changes: 6 additions & 7 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ concurrency:
group: pages
cancel-in-progress: true

permissions:
contents: read
# Do not add permissions here! Configure them at the job level!
permissions: {}

jobs:
deploy:
Expand All @@ -26,16 +26,15 @@ jobs:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
permissions:
contents: read
pages: write
id-token: write

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Setup Pages
uses: actions/configure-pages@v5
uses: actions/configure-pages@v6

- name: Install Roc
uses: roc-lang/setup-roc@bd311e2fb815a3d2255f7ee14a922f0b736e020b
Expand All @@ -61,10 +60,10 @@ jobs:
-exec sed -i 's|/packages/basic-cli/|/basic-cli/|g' {} +

- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
uses: actions/upload-pages-artifact@v5
with:
path: temp_docs

- name: Deploy Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v5
Loading
Loading