Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run GitHub actions for pull requests; build docs #11

Merged
merged 10 commits into from
Oct 30, 2024
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
95 changes: 95 additions & 0 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Licensed under the Apache-2.0 license

name: Build and Test

on:
push:
branches: ["main"]
pull_request:
workflow_call:
workflow_dispatch:

jobs:
build_and_test:
runs-on: ubuntu-24.04

env:
CARGO_INCREMENTAL: 0
SCCACHE_VERSION: 0.8.2
SCCACHE_GHA_CACHE_TO: sccache-caliptra-mcu-sw
SCCACHE_GHA_CACHE_FROM: sccache-caliptra-mcu-sw
# CPTRA_COVERAGE_PATH: /tmp

# Change this to a new random value if you suspect the cache is corrupted
SCCACHE_C_CUSTOM_CACHE_BUSTER: 8b42a6e70ec4

# Compiler warnings should fail to compile
EXTRA_CARGO_CONFIG: "target.'cfg(all())'.rustflags = [\"-Dwarnings\"]"

steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
submodules: recursive

- name: Test commit name
run: |
echo "Build-Test: release_ref=$(git rev-parse HEAD)"

- name: Install required packages
run: |
sudo apt-get update -qy && \
sudo apt-get install build-essential curl gcc-multilib gcc-riscv64-unknown-elf git \
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh
rustup update

- name: Restore sccache binary
uses: actions/cache/restore@v3
id: sccache_bin_restore
with:
path: ~/.cargo/bin/sccache
key: sccache-bin-${{ env.SCCACHE_VERSION }}-${{ env.SCCACHE_C_CUSTOM_CACHE_BUSTER }}

- name: Install sccache
if: steps.sccache_bin_restore.outputs.cache-hit != 'true'
run: |
cargo install sccache --version ${SCCACHE_VERSION} --no-default-features --features=gha --locked

# Save the sccache binary immediately so we can reuse it in future runs
# even if the rest of the current run fails.
- name: Save sccache binary
uses: actions/cache/save@v3
if: steps.sccache_bin_restore.outputs.cache-hit != 'true'
with:
path: ~/.cargo/bin/sccache
key: ${{ steps.sccache_bin_restore.outputs.cache-primary-key }}

- name: Configure sccache
uses: actions/github-script@v6
with:
script: |
core.exportVariable('RUSTC_WRAPPER', process.env.HOME + '/.cargo/bin/sccache');
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');

- name: Check that Cargo.lock doesn't need to be updated
# Note: this isn't the same as checking that Cargo.lock is up to date
# (cargo update --locked), which makes sure that every package is the
# latest published version. This is just ensuring that every
# dependency has an entry in Cargo.lock that is compatible with the
# version requirements in all Cargo.toml files.
run: |
# This works because cargo tree requires a Cargo.lock with no required updates
cargo tree --locked > /dev/null || (
echo "Please include required changes to Cargo.lock in your pull request"
# Without the --locked flag, cargo will do the minimal possible update to Cargo.lock
cargo tree > /dev/null 2> /dev/null
# Print out the differences to ease debugging
git diff Cargo.lock
exit 1
)

- name: Run precheckin
run: |
cargo --config "$EXTRA_CARGO_CONFIG" xtask precheckin
sccache --show-stats
63 changes: 63 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Licensed under the Apache-2.0 license

# Sample workflow for building and deploying a mdBook site to GitHub Pages
#
# To get started with mdBook see: https://rust-lang.github.io/mdBook/index.html
#
name: Deploy docs

on:
# Runs on pushes targeting the default branch
push:
branches: [main]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
# Build job
build:
runs-on: ubuntu-latest
env:
MDBOOK_VERSION: 0.4.40
steps:
- uses: actions/checkout@v4
- name: Install mdBook
run: |
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh
rustup update
cargo install --version ${MDBOOK_VERSION} mdbook
cargo install mdbook-mermaid
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build with mdBook
run: cd docs && mdbook build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./docs/book

# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
Loading