mirror of
https://git.proxmox.com/git/fwupd
synced 2026-03-27 19:57:34 +00:00
This avoids having to hardcode profile targets in multiple places and also fixes the confusing entry points into scripts both by arguments and environment variables. It also makes the setup script a lot more debuggable and scalable. OS detection is a lot more robust, where it will try to use pip to set up the distro python package, and if pip is missing try to install it. If OS detection fails now, a user can use --os on contrib/setup for specifying it.
114 lines
3.3 KiB
YAML
114 lines
3.3 KiB
YAML
name: Continuous Integration
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
pull_request:
|
|
branches: [ master ]
|
|
|
|
jobs:
|
|
pre-commit:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Refresh dependencies
|
|
run: sudo apt update
|
|
- name: Install dependencies
|
|
run: sudo apt install shellcheck clang-format -y
|
|
- name: Run pre-commit hooks
|
|
run: |
|
|
./contrib/setup
|
|
source venv/bin/activate
|
|
sed -i "/no-commit-to-branch/,+1d" .pre-commit-config.yaml
|
|
pre-commit run --all-files
|
|
abi:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Refresh dependencies
|
|
run: sudo apt update
|
|
- name: Install dependencies
|
|
run: sudo ./contrib/ci/fwupd_setup_helpers.py install-dependencies -o ubuntu --yes
|
|
- name: Check ABI
|
|
run: ./contrib/ci/check-abi $(git describe --abbrev=0 --tags) $(git rev-parse HEAD)
|
|
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
os: [fedora, debian-x86_64, arch, debian-i386, void]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Docker login
|
|
run: docker login docker.pkg.github.com -u $GITHUB_ACTOR -p $GITHUB_TOKEN
|
|
env:
|
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
|
- name: Build in container
|
|
env:
|
|
CI_NETWORK: true
|
|
CI: true
|
|
run: |
|
|
echo $GITHUB_WORKSPACE
|
|
docker run --privileged -e CI=true -t -v $GITHUB_WORKSPACE:/github/workspace docker.pkg.github.com/fwupd/fwupd/fwupd-${{matrix.os}}:latest
|
|
|
|
fuzzing:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 20
|
|
steps:
|
|
- name: Build Fuzzers
|
|
id: build
|
|
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
|
|
with:
|
|
oss-fuzz-project-name: 'fwupd'
|
|
dry-run: false
|
|
- name: Run Fuzzers
|
|
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
|
|
with:
|
|
oss-fuzz-project-name: 'fwupd'
|
|
fuzz-seconds: 300
|
|
dry-run: false
|
|
- name: Upload Crash
|
|
uses: actions/upload-artifact@v1
|
|
if: failure() && steps.build.outcome == 'success'
|
|
with:
|
|
name: artifacts
|
|
path: ./out/artifacts
|
|
|
|
build-freebsd:
|
|
runs-on: macos-latest
|
|
timeout-minutes: 20
|
|
name: build-freebsd-package
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Find tag
|
|
id: tagger
|
|
uses: jimschubert/query-tag-action@v1
|
|
- name: Build
|
|
id: test
|
|
uses: vmactions/freebsd-vm@v0.1.5
|
|
with:
|
|
usesh: true
|
|
mem: 8192
|
|
prepare: |
|
|
pkg install -y git python3 glib meson pkgconf gobject-introspection \
|
|
vala gtk-doc json-glib gpgme gnutls sqlite3 curl gcab libarchive \
|
|
libelf libgpg-error gettext-tools gtk-update-icon-cache atk pango \
|
|
binutils gcc protobuf-c
|
|
sync: rsync
|
|
run: ./contrib/ci/build_freebsd_package.sh
|
|
--GITHUB_SHA=${GITHUB_SHA}
|
|
--GITHUB_REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER}
|
|
--GITHUB_REPOSITORY=${GITHUB_REPOSITORY}
|
|
--GITHUB_TAG=${{steps.tagger.outputs.tag}}
|
|
- name: Upload fwupd binary artifact
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Binary package
|
|
path: |
|
|
fwupd*.pkg
|
|
|