ci: Also check whether all commits build #2895
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
on: | |
push: | |
branches: [main] | |
tags: | |
- "v*" | |
pull_request: | |
name: CI | |
jobs: | |
check-commit-style: | |
name: Check Commit Style | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: webiny/action-conventional-commits@v1.2.0 | |
typos: | |
name: Typos | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: crate-ci/typos@master | |
with: | |
config: ./.typos.toml | |
rustfmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
override: true | |
components: rustfmt | |
- name: Create blank versions of configured file | |
run: echo -e "" >> src/config.rs | |
- name: Run cargo fmt | |
run: cargo fmt --all -- --check | |
code-analysis: | |
name: Code Analysis | |
runs-on: ubuntu-latest | |
container: | |
image: bilelmoussaoui/flatpak-github-actions:gnome-45 | |
options: --privileged | |
needs: [check-commit-style, typos, rustfmt] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Cache flatpak | |
id: cache-flatpak | |
uses: actions/cache@v3 | |
with: | |
path: .flatpak-builder | |
key: ${{ runner.os }}-flatpak-${{ hashFiles('build-aux/com.github.marhkb.Pods.Devel.json') }} | |
restore-keys: ${{ runner.os }}-flatpak- | |
- name: Cache cargo | |
id: cache-cargo | |
uses: actions/cache@v3 | |
with: | |
path: /github/home/.cargo | |
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo- | |
- name: Create dummy versions of configured file | |
run: | | |
sed \ | |
-e 's/str =.*;/str = "";/g' \ | |
-e 's/i32 =.*;/i32 = 0;/g' \ | |
src/config.rs.in \ | |
> src/config.rs | |
- name: Build dependencies | |
run: | | |
flatpak-builder \ | |
--disable-rofiles-fuse \ | |
--install-deps-from=flathub \ | |
--keep-build-dirs \ | |
--stop-at=pods \ | |
flatpak_app build-aux/com.github.marhkb.Pods.Devel.json | |
- name: Retrieve rustc version | |
id: rustc-version | |
run: | | |
echo "RUSTC_VERSION=$(flatpak-builder --run flatpak_app build-aux/com.github.marhkb.Pods.Devel.json rustc -V)" >> $GITHUB_OUTPUT | |
- name: Cache target | |
id: cache-target | |
uses: actions/cache@v3 | |
with: | |
path: target | |
key: ${{ runner.os }}-target-${{ steps.rustc-version.outputs.RUSTC_VERSION }}-${{ hashFiles('Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-target-${{ steps.rustc-version.outputs.RUSTC_VERSION }} | |
- name: Test if all commits build | |
run: | | |
git config --global --add safe.directory /__w/pods/pods | |
for commit in $(git rev-list ${{ github.base_ref }}..${{ github.head_ref }}); do | |
git checkout $commit | |
flatpak-builder \ | |
--run \ | |
flatpak_app build-aux/com.github.marhkb.Pods.Devel.json \ | |
cargo build | |
done | |
flatpak: | |
name: Flatpak | |
runs-on: ubuntu-latest | |
container: | |
image: bilelmoussaoui/flatpak-github-actions:gnome-45 | |
options: --privileged | |
strategy: | |
matrix: | |
arch: [x86_64] | |
# Don't fail the whole workflow if one architecture fails | |
fail-fast: false | |
needs: [code-analysis] | |
steps: | |
- uses: actions/checkout@v4 | |
# Docker is required by the docker/setup-qemu-action which enables emulation | |
- name: Install dependencies | |
if: ${{ matrix.arch != 'x86_64' }} | |
run: dnf -y install docker | |
- name: Set up QEMU | |
if: ${{ matrix.arch != 'x86_64' }} | |
id: qemu | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: arm64 | |
- uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v6 | |
with: | |
bundle: pods.flatpak | |
manifest-path: build-aux/com.github.marhkb.Pods.Devel.json | |
run-tests: true | |
arch: ${{ matrix.arch }} | |
release: | |
if: startsWith(github.ref, 'refs/tags/') | |
name: Release | |
runs-on: ubuntu-latest | |
needs: [flatpak] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Create vendored sources | |
run: build-aux/dist-vendor.sh ../ src | |
shell: bash | |
- name: Archive repository | |
run: git archive --format tar HEAD > pods-${{ github.ref_name }}.tar | |
- name: Add vendored sources and cargo config to tarball | |
run: tar -rf pods-${{ github.ref_name }}.tar .cargo vendor | |
- name: Compress tarball | |
run: xz -z pods-${{ github.ref_name }}.tar | |
- name: Generate checksum | |
run: sha256sum pods-${{ github.ref_name }}.tar.xz > pods-${{ github.ref_name }}.tar.xz.sha256sum | |
- name: Install xmllint | |
run: sudo apt-get install -y libxml2-utils | |
- name: Extract release notes | |
run: | | |
echo 'RELEASE_NOTES<<EOF' >> $GITHUB_ENV | |
xmllint --xpath '//release[1]/description' data/com.github.marhkb.Pods.metainfo.xml.in.in | xmllint --format - >> $GITHUB_ENV | |
echo 'EOF' >> $GITHUB_ENV | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
draft: true | |
body: ${{ env.RELEASE_NOTES }} | |
prerelease: ${{ contains(github.ref, 'beta') }} | |
files: | | |
pods-${{ github.ref_name }}.tar.xz | |
pods-${{ github.ref_name }}.tar.xz.sha256sum |