name: Build and Test
on:
push:
branches: [ 'master' ]
tags: [ 'v*' ]
pull_request:
branches: [ 'master' ]
env:
BUILDX_CACHE: /tmp/buildx-cache
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
toolchain: ["", "stable", "beta"]
rustflags: ["-A warnings"]
rustdocflags: [""]
include:
- toolchain: "nightly"
rustflags: "-D warnings"
rustdocflags: "-D rustdoc::all -A rustdoc::private_doc_tests"
steps:
- name: Set up build cache
uses: actions/cache@v4
with:
path: ${{ env.BUILDX_CACHE }}
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Build Docker container
uses: docker/build-push-action@v2
with:
build-args: |
TOOLCHAIN=${{ matrix.toolchain }}
RUSTFLAGS=${{ matrix.rustflags }}
RUSTDOCFLAGS=${{ matrix.rustdocflags }}
cache-from: type=local,src=${{ env.BUILDX_CACHE }}-new
cache-to: type=local,dest=${{ env.BUILDX_CACHE }}-new
- name: Clean build cache
run: |
rm -rf ${{ env.BUILDX_CACHE }}
mv ${{ env.BUILDX_CACHE }}-new ${{ env.BUILDX_CACHE }}