Deploy docs using actions instead of a gh-pages branch #147
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | ||
on: | ||
pull_request: | ||
push: | ||
branches: [master] | ||
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | ||
permissions: | ||
contents: read | ||
pages: write | ||
id-token: write | ||
checks: write | ||
jobs: | ||
ci: | ||
name: CI | ||
needs: [test, clippy, docs] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Done | ||
run: exit 0 | ||
test: | ||
name: Tests | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest] | ||
rust: [1.77.2, nightly] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Install rust | ||
uses: dtolnay/rust-toolchain@stable | ||
with: | ||
toolchain: ${{ matrix.rust }} | ||
- name: Install packages for gtk-test | ||
run: |- | ||
sudo apt-get update | ||
sudo apt-get install xvfb | ||
sudo apt-get install libgtk-4-dev | ||
sudo apt-get install libxdo-dev | ||
- name: Ready cache | ||
if: matrix.os == 'ubuntu-latest' | ||
run: sudo chown -R $(whoami):$(id -ng) ~/.cargo/ | ||
- name: Cache cargo | ||
uses: actions/cache@v1 | ||
id: cache | ||
with: | ||
path: ~/.cargo | ||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | ||
- name: Test WoAB | ||
env: | ||
RUST_TEST_NOCAPTURE: 1 | ||
RUST_TEST_THREADS: 1 | ||
run: xvfb-run cargo test --verbose | ||
fmt: | ||
name: Rustfmt | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: dtolnay/rust-toolchain@stable | ||
with: | ||
profile: minimal | ||
toolchain: nightly | ||
components: rustfmt | ||
- name: Run fmt --all -- --check | ||
run: cargo fmt --all -- --check | ||
clippy: | ||
name: Clippy | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: dtolnay/rust-toolchain@stable | ||
with: | ||
profile: minimal | ||
toolchain: nightly | ||
components: clippy | ||
- name: Install packages for testing GTK | ||
run: |- | ||
sudo apt-get update | ||
sudo apt-get install libgtk-4-dev | ||
- name: Cache cargo | ||
uses: actions/cache@v1 | ||
id: cache | ||
with: | ||
path: ~/.cargo | ||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | ||
- name: Run clippy --all-targets -- | ||
uses: actions-rs/clippy-check@v1 | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
args: --all-targets -- | ||
docs: | ||
name: Docs | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: dtolnay/rust-toolchain@stable | ||
with: | ||
profile: minimal | ||
toolchain: nightly | ||
- name: Install packages for testing GTK | ||
run: |- | ||
sudo apt-get update | ||
sudo apt-get install libgtk-4-dev | ||
- name: Cache cargo | ||
uses: actions/cache@v1 | ||
id: cache | ||
with: | ||
path: ~/.cargo | ||
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | ||
- name: Run doc tests | ||
run: cargo test --doc | ||
- name: Check WoAB docs | ||
run: cargo doc --no-deps | ||
docs-ghpages: | ||
name: Update Docs in GitHub Pages | ||
runs-on: ubuntu-latest | ||
if: github.ref == 'refs/heads/master' | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Install packages for testing GTK | ||
run: |- | ||
sudo apt-get update | ||
sudo apt-get install libgtk-4-dev | ||
- name: Build docs | ||
run: |- | ||
cargo doc --verbose && | ||
echo "<meta http-equiv=refresh content=0;url=woab/index.html>" > target/doc/index.html | ||
- name: Add read permissions | ||
run: |- | ||
chmod --recursive +r target/doc | ||
- name: Upload artifact | ||
uses: actions/upload-pages-artifact@v1 | ||
with: | ||
path: target/doc | ||
deploy-ghpages: | ||
environment: | ||
name: github-pages | ||
url: ${{ steps.deployment.outputs.page_url }} | ||
runs-on: ubuntu-latest | ||
needs: docs-and-demos-ghpages | ||
if: github.ref == 'refs/heads/main' | ||
steps: | ||
- name: Deploy to GitHub Pages | ||
id: deployment | ||
uses: actions/deploy-pages@v2 |