ci: Add support for Fedora 41 #253
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": { | |
"push": { | |
"tags": [ | |
"**", | |
], | |
"branches": [ | |
"**", | |
], | |
}, | |
}, | |
"env": { | |
"NAME": "iptsd", | |
"SCRIPTS": "./.github/scripts", | |
"BRANCH_STAGING": "u/staging", | |
}, | |
"jobs": { | |
"checkout": { | |
"name": "Prepare workspace", | |
"runs-on": "ubuntu-latest", | |
"steps": [ | |
{ | |
"name": "Checkout code", | |
"uses": "actions/checkout@v4", | |
"with": { | |
"fetch-depth": 0, | |
}, | |
}, | |
{ | |
"name": "Archive workspace", | |
"uses": "actions/upload-artifact@v4", | |
"with": { | |
"name": "workspace", | |
"path": ".", | |
}, | |
}, | |
], | |
}, | |
"check": { | |
"name": "Check code quality", | |
"container": "fedora:40", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"checkout", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Install build dependencies", | |
"run": "bash $SCRIPTS/pkg-fedora.sh install && dnf install -y clang clang-tools-extra", | |
}, | |
{ | |
"name": "Setup meson", | |
"env": { | |
"CC": "clang", | |
"CXX": "clang++", | |
}, | |
"run": "meson setup build", | |
}, | |
{ | |
"name": "Run clang-format", | |
"run": "bash $SCRIPTS/check-format.sh", | |
}, | |
{ | |
"name": "Run clang-tidy", | |
"run": "bash $SCRIPTS/check-tidy.sh", | |
}, | |
], | |
}, | |
"build-arch": { | |
"name": "Build Arch Linux Package", | |
"container": "archlinux/archlinux", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"check", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Install build dependencies", | |
"run": "bash $SCRIPTS/pkg-arch.sh install", | |
}, | |
{ | |
"name": "Build package", | |
"run": "bash $SCRIPTS/pkg-arch.sh build", | |
}, | |
{ | |
"name": "Sign package", | |
"env": { | |
"GPG_KEY_ID": "56C464BAAC421453", | |
"GPG_KEY": "${{ secrets.LINUX_SURFACE_GPG_KEY }}", | |
}, | |
"run": "bash $SCRIPTS/pkg-arch.sh sign", | |
}, | |
{ | |
"name": "Prepare release", | |
"run": "bash $SCRIPTS/pkg-arch.sh release", | |
}, | |
{ | |
"name": "Upload artifacts", | |
"uses": "actions/upload-artifact@v4", | |
"with": { | |
"name": "arch-latest", | |
"path": "release", | |
}, | |
}, | |
], | |
}, | |
"build-deb": { | |
"name": "Build Debian Package", | |
"container": "debian:bullseye", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"check", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Install build dependencies", | |
"run": "bash $SCRIPTS/pkg-debian.sh install", | |
}, | |
{ | |
"name": "Build package", | |
"run": "bash $SCRIPTS/pkg-debian.sh build", | |
}, | |
{ | |
"name": "Sign package", | |
"env": { | |
"GPG_KEY_ID": "56C464BAAC421453", | |
"GPG_KEY": "${{ secrets.LINUX_SURFACE_GPG_KEY }}", | |
}, | |
"run": "bash $SCRIPTS/pkg-debian.sh sign", | |
}, | |
{ | |
"name": "Prepare release", | |
"run": "bash $SCRIPTS/pkg-debian.sh release", | |
}, | |
{ | |
"name": "Upload artifacts", | |
"uses": "actions/upload-artifact@v4", | |
"with": { | |
"name": "debian-latest", | |
"path": "release", | |
}, | |
}, | |
], | |
}, | |
"build-f39": { | |
"name": "Build Fedora 39 package", | |
"container": "fedora:39", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"check", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Install build dependencies", | |
"run": "bash $SCRIPTS/pkg-fedora.sh install", | |
}, | |
{ | |
"name": "Build package", | |
"run": "bash $SCRIPTS/pkg-fedora.sh build", | |
}, | |
{ | |
"name": "Sign package", | |
"env": { | |
"GPG_KEY_ID": "56C464BAAC421453", | |
"GPG_KEY": "${{ secrets.LINUX_SURFACE_GPG_KEY }}", | |
}, | |
"run": "bash $SCRIPTS/pkg-fedora.sh sign", | |
}, | |
{ | |
"name": "Prepare release", | |
"run": "bash $SCRIPTS/pkg-fedora.sh release", | |
}, | |
{ | |
"name": "Upload artifacts", | |
"uses": "actions/upload-artifact@v4", | |
"with": { | |
"name": "fedora-39-latest", | |
"path": "release", | |
}, | |
}, | |
], | |
}, | |
"build-f40": { | |
"name": "Build Fedora 40 package", | |
"container": "fedora:40", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"check", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Install build dependencies", | |
"run": "bash $SCRIPTS/pkg-fedora.sh install", | |
}, | |
{ | |
"name": "Build package", | |
"run": "bash $SCRIPTS/pkg-fedora.sh build", | |
}, | |
{ | |
"name": "Sign package", | |
"env": { | |
"GPG_KEY_ID": "56C464BAAC421453", | |
"GPG_KEY": "${{ secrets.LINUX_SURFACE_GPG_KEY }}", | |
}, | |
"run": "bash $SCRIPTS/pkg-fedora.sh sign", | |
}, | |
{ | |
"name": "Prepare release", | |
"run": "bash $SCRIPTS/pkg-fedora.sh release", | |
}, | |
{ | |
"name": "Upload artifacts", | |
"uses": "actions/upload-artifact@v4", | |
"with": { | |
"name": "fedora-40-latest", | |
"path": "release", | |
}, | |
}, | |
], | |
}, | |
"build-f41": { | |
"name": "Build Fedora 41 package", | |
"container": "fedora:41", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"check", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Install build dependencies", | |
"run": "bash $SCRIPTS/pkg-fedora.sh install", | |
}, | |
{ | |
"name": "Build package", | |
"run": "bash $SCRIPTS/pkg-fedora.sh build", | |
}, | |
{ | |
"name": "Sign package", | |
"env": { | |
"GPG_KEY_ID": "56C464BAAC421453", | |
"GPG_KEY": "${{ secrets.LINUX_SURFACE_GPG_KEY }}", | |
}, | |
"run": "bash $SCRIPTS/pkg-fedora.sh sign", | |
}, | |
{ | |
"name": "Prepare release", | |
"run": "bash $SCRIPTS/pkg-fedora.sh release", | |
}, | |
{ | |
"name": "Upload artifacts", | |
"uses": "actions/upload-artifact@v4", | |
"with": { | |
"name": "fedora-41-latest", | |
"path": "release", | |
}, | |
}, | |
], | |
}, | |
"release": { | |
"name": "Publish release", | |
"if": "github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/')", | |
"needs": [ | |
"build-arch", | |
"build-deb", | |
"build-f39", | |
"build-f40", | |
"build-f41", | |
], | |
"runs-on": "ubuntu-latest", | |
"steps": [ | |
{ | |
"name": "Download Arch Linux artifacts", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "arch-latest", | |
"path": "arch-latest", | |
}, | |
}, | |
{ | |
"name": "Download Debian artifacts", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "debian-latest", | |
"path": "debian-latest", | |
}, | |
}, | |
{ | |
"name": "Download Fedora 39 artifacts", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "fedora-39-latest", | |
"path": "fedora-39-latest", | |
}, | |
}, | |
{ | |
"name": "Download Fedora 40 artifacts", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "fedora-40-latest", | |
"path": "fedora-40-latest", | |
}, | |
}, | |
{ | |
"name": "Download Fedora 41 artifacts", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "fedora-41-latest", | |
"path": "fedora-41-latest", | |
}, | |
}, | |
{ | |
"name": "Upload assets", | |
"uses": "svenstaro/upload-release-action@v2", | |
"with": { | |
"repo_token": " ${{ secrets.GITHUB_TOKEN }}", | |
"file": "./*-latest/*", | |
"tag": "${{ github.ref }}", | |
"overwrite": true, | |
"file_glob": true, | |
}, | |
}, | |
], | |
}, | |
"repo-arch": { | |
"name": "Update Arch Linux package repository", | |
"container": "archlinux/archlinux", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"release", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Download artifacts", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "arch-latest", | |
"path": "arch-latest", | |
}, | |
}, | |
{ | |
"name": "Update repository", | |
"env": { | |
"SURFACEBOT_TOKEN": "${{ secrets.LINUX_SURFACE_BOT_TOKEN }}", | |
"GIT_REF": "${{ github.ref }}", | |
}, | |
"run": "bash $SCRIPTS/repo-arch.sh $NAME", | |
}, | |
], | |
}, | |
"repo-deb": { | |
"name": "Update Debian package repository", | |
"container": "debian:bullseye", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"release", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Download artifacts", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "debian-latest", | |
"path": "debian-latest", | |
}, | |
}, | |
{ | |
"name": "Update repository", | |
"env": { | |
"SURFACEBOT_TOKEN": "${{ secrets.LINUX_SURFACE_BOT_TOKEN }}", | |
"GIT_REF": "${{ github.ref }}", | |
}, | |
"run": "bash $SCRIPTS/repo-debian.sh $NAME", | |
}, | |
], | |
}, | |
"repo-f39": { | |
"name": "Update Fedora 39 package repository", | |
"container": "fedora:39", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"release", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Download artifacts", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "fedora-39-latest", | |
"path": "fedora-39-latest", | |
}, | |
}, | |
{ | |
"name": "Update repository", | |
"env": { | |
"SURFACEBOT_TOKEN": "${{ secrets.LINUX_SURFACE_BOT_TOKEN }}", | |
"GIT_REF": "${{ github.ref }}", | |
}, | |
"run": "bash $SCRIPTS/repo-fedora.sh $NAME 39", | |
}, | |
], | |
}, | |
"repo-f40": { | |
"name": "Update Fedora 40 package repository", | |
"container": "fedora:40", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"release", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Download artifacts", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "fedora-40-latest", | |
"path": "fedora-40-latest", | |
}, | |
}, | |
{ | |
"name": "Update repository", | |
"env": { | |
"SURFACEBOT_TOKEN": "${{ secrets.LINUX_SURFACE_BOT_TOKEN }}", | |
"GIT_REF": "${{ github.ref }}", | |
}, | |
"run": "bash $SCRIPTS/repo-fedora.sh $NAME 40", | |
}, | |
], | |
}, | |
"repo-f41": { | |
"name": "Update Fedora 41 package repository", | |
"container": "fedora:41", | |
"runs-on": "ubuntu-latest", | |
"needs": [ | |
"release", | |
], | |
"steps": [ | |
{ | |
"name": "Restore workspace", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "workspace", | |
}, | |
}, | |
{ | |
"name": "Download artifacts", | |
"uses": "actions/download-artifact@v4", | |
"with": { | |
"name": "fedora-41-latest", | |
"path": "fedora-41-latest", | |
}, | |
}, | |
{ | |
"name": "Update repository", | |
"env": { | |
"SURFACEBOT_TOKEN": "${{ secrets.LINUX_SURFACE_BOT_TOKEN }}", | |
"GIT_REF": "${{ github.ref }}", | |
}, | |
"run": "bash $SCRIPTS/repo-fedora.sh $NAME 41", | |
}, | |
], | |
}, | |
}, | |
} |