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
259 changes: 197 additions & 62 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
name: Build sample material
name: Build and Test the Material

# Runs CI on pushing tags and pulls, but not both. Since we have branch protection on, these are our only cases to handle.
on:
push:
tags:
- '*'
- "*"
pull_request:

env:
CARGO_TERM_COLOR: always # We want colors in our CI output
CARGO_INCREMENTAL: 0 # Don't waste time writing out incremental build files
CARGO_PROFILE_TEST_DEBUG: 0 # These are thrown away anyways, don't produce them
CARGO_TERM_COLOR: always # We want colors in our CI output
CARGO_INCREMENTAL: 0 # Don't waste time writing out incremental build files
CARGO_PROFILE_TEST_DEBUG: 0 # These are thrown away anyways, don't produce them

jobs:
build-slides:
render-material:
name: Render Material
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Checkout
uses: actions/checkout@v4

- name: Install tools
uses: taiki-e/install-action@v2
Expand All @@ -43,13 +45,9 @@ jobs:
echo "Building with slug '${slug}'"
echo "slug=${slug}" >> "${GITHUB_ENV}"

- name: Build book-and-slides
- name: Execute
run: |
cd ./training-slides && ./build.sh

- name: Test all cheatsheets
run: |
cargo xtask test-all-cheatsheets --locked
./localbuild.sh render-material

- name: Assemble Artifacts
run: |
Expand All @@ -65,7 +63,7 @@ jobs:
uses: actions/upload-artifact@v4
if: ${{success()}}
with:
name: Slides
name: Material
if-no-files-found: error
path: |
./rust-training-*/
Expand All @@ -77,90 +75,227 @@ jobs:
with:
artifacts: ./rust-training-${{ env.slug }}.zip

build-examples-ferrocene:
test-cheatsheets:
name: Test Cheatsheets
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4

- name: Checkout
uses: actions/checkout@v4

- name: Set up cache
uses: Swatinem/rust-cache@v2
with:
workspaces: xtask

- name: Execute
run: |
./localbuild.sh test-cheatsheets

ferrocene-qemu-aarch64v8a:
name: Build qemu-aarch64v8a with Ferrocene
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Critical Up
run: |
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ferrocene/criticalup/releases/download/v1.1.0/criticalup-installer.sh | sh

- name: Find slug name
- name: Execute
env:
CRITICALUP_TOKEN: ${{ secrets.CRITICALUP_TOKEN }}
run: |
slug=$(./describe.sh "${GITHUB_REF}")
echo "Building with slug '${slug}'"
echo "slug=${slug}" >> "${GITHUB_ENV}"
./localbuild.sh ferrocene-qemu-aarch64v8a

ferrocene-qemu-aarch32v8r:
name: Build qemu-aarch32v8r with Ferrocene
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Critical Up
run: |
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ferrocene/criticalup/releases/download/v1.1.0/criticalup-installer.sh | sh

- name: Build example code
- name: Execute
env:
CRITICALUP_TOKEN: ${{ secrets.CRITICALUP_TOKEN }}
run: |
cd ./example-code && ./build-ferrocene.sh

- name: Assemble Artifacts
./localbuild.sh ferrocene-qemu-aarch32v8r

ferrocene-qemu-thumbv7em:
name: Build qemu-thumbv7em with Ferrocene
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Critical Up
run: |
echo "Making ./rust-training-${{ env.slug }}..."
mkdir -p ./rust-training-${{ env.slug }}
cp -r ./example-code ./rust-training-${{ env.slug }}
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ferrocene/criticalup/releases/download/v1.1.0/criticalup-installer.sh | sh

- name: Upload Artifacts
uses: actions/upload-artifact@v4
if: ${{success()}}
- name: Execute
env:
CRITICALUP_TOKEN: ${{ secrets.CRITICALUP_TOKEN }}
run: |
./localbuild.sh ferrocene-qemu-thumbv7em

eg-native-ffi-use-c-in-rust:
name: Build Example ffi-use-c-in-rust
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Add Rust Targets and Tools
run: rustup set profile minimal

- name: Set up cache
uses: Swatinem/rust-cache@v2
with:
name: Ferrocene Examples
if-no-files-found: error
path: |
./rust-training-*/
workspaces: example-code/native/ffi/use-c-in-rust

- name: Execute
run: |
./localbuild.sh eg-native-ffi-use-c-in-rust

eg-native-ffi-use-rust-in-c:
name: Build Example ffi-use-rust-in-c
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Add Rust Targets and Tools
run: rustup set profile minimal

- name: Set up cache
uses: Swatinem/rust-cache@v2
with:
workspaces: example-code/native/ffi/use-rust-in-c

- name: Execute
run: |
./localbuild.sh eg-native-ffi-use-rust-in-c

eg-native-stdout:
name: Build Example native-stdout
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Add Rust Targets and Tools
run: rustup set profile minimal

- name: Set up cache
uses: Swatinem/rust-cache@v2
with:
workspaces: example-code/native/stdout

- name: Execute
run: |
./localbuild.sh eg-native-stdout

build-examples:
eg-nrf52-bsp-demo:
name: Build Example nrf52-bsp-demo
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4

- name: Checkout
uses: actions/checkout@v4

- name: Add Rust Targets and Tools
run: |
rustup set profile minimal
rustup target add thumbv7em-none-eabihf
rustup target add thumbv7em-none-eabi

- name: Set up cache
uses: Swatinem/rust-cache@v2
with:
workspaces: example-code/nrf52/bsp_demo

- name: Execute
run: |
./localbuild.sh eg-nrf52-bsp-demo

eg-qemu-aarch64v8a:
name: Build Example qemu-aarch64v8a
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Add Rust Targets and Tools
run: |
rustup set profile minimal
rustup target add aarch64-unknown-none
rustup component add llvm-tools-preview
rustup component add rust-src

- name: Find slug name
- name: Set up cache
uses: Swatinem/rust-cache@v2
with:
workspaces: example-code/qemu-aarch64v8a

- name: Execute
run: |
slug=$(./describe.sh "${GITHUB_REF}")
echo "Building with slug '${slug}'"
echo "slug=${slug}" >> "${GITHUB_ENV}"
./localbuild.sh eg-qemu-aarch64v8a

eg-qemu-aarch32v8r:
name: Build Example qemu-aarch32v8r
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Build example code
- name: Add Rust Targets and Tools
run: |
cd ./example-code && ./build.sh

- name: Assemble Artifacts
rustup set profile minimal
rustup component add rust-src

- name: Set up cache
uses: Swatinem/rust-cache@v2
with:
workspaces: example-code/qemu-aarch32v8r

- name: Execute
run: |
echo "Making ./rust-training-${{ env.slug }}..."
mkdir -p ./rust-training-${{ env.slug }}
cp -r ./example-code ./rust-training-${{ env.slug }}
./localbuild.sh eg-qemu-aarch32v8r

- name: Upload Artifacts
uses: actions/upload-artifact@v4
if: ${{success()}}
eg-qemu-thumbv7em:
name: Build Example qemu-thumbv7em
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Add Rust Targets and Tools
run: |
rustup set profile minimal
rustup target add thumbv7em-none-eabihf

- name: Set up cache
uses: Swatinem/rust-cache@v2
with:
name: Examples
if-no-files-found: error
path: |
./rust-training-*/
workspaces: example-code/qemu-thumbv7em

- name: Execute
run: |
./localbuild.sh eg-qemu-thumbv7em

build-windows-examples:
name: Build Example ffi-use-rust-in-c on Windows
runs-on: windows-2022
steps:
- uses: actions/checkout@v4
- name: Update Rust
run: |
rustup update stable
- name: Checkout
uses: actions/checkout@v4

- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Build FFI Example

- name: Execute
run: |
cd example-code\native\ffi\use-rust-in-c\windows-example
msbuild.exe windows-example.sln /p:Configuration=Debug
Expand Down
6 changes: 0 additions & 6 deletions .github/workflows/weekly-canary-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,6 @@ jobs:
rustup update ${{ matrix.rust-channel }} --no-self-update
rustup default ${{ matrix.rust-channel }}

- name: Find slug name
run: |
slug=$(./describe.sh "${GITHUB_REF}")
echo "Building with slug '${slug}'"
echo "slug=${slug}" >> "${GITHUB_ENV}"

- name: Build book-and-slides
run: |
cd ./training-slides && ./build.sh
Expand Down
20 changes: 0 additions & 20 deletions example-code/build-ferrocene.sh

This file was deleted.

Loading