Skip to content

v0.4.9.5 - BETA

v0.4.9.5 - BETA #19

Workflow file for this run

name: Build and publish AppImages
on:
release:
types: [published]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
target:
- platform: linux/amd64
arch: amd64
- platform: linux/arm64
arch: arm64
base:
- os: ubuntu
codename: focal
pubkey: 871920D1991BC93C
recipe: AppImageBuilder.ubuntu-focal.yml
- os: ubuntu
codename: jammy
pubkey: 871920D1991BC93C
recipe: AppImageBuilder.yml
- os: ubuntu
codename: noble
pubkey: 871920D1991BC93C
recipe: AppImageBuilder.yml
- os: debian
codename: bullseye
pubkey: 0E98404D386FA1D9
pubkey_security: 54404762BBB6E853
recipe: AppImageBuilder.debian-bullseye.yml
- os: debian
codename: bookworm
pubkey: 0E98404D386FA1D9
pubkey_security: 54404762BBB6E853
recipe: AppImageBuilder.debian.yml
- os: debian
codename: trixie
pubkey: 0E98404D386FA1D9
pubkey_security: 54404762BBB6E853
recipe: AppImageBuilder.debian.yml
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: rlespinasse/github-slug-action@v4
- name: Setup qemu for docker
uses: docker/setup-qemu-action@v3
if: matrix.target.platform != 'linux/amd64'
- name: Setup buildx for docker
uses: docker/setup-buildx-action@v3
- name: Compile in docker
uses: docker/build-push-action@v5
with:
context: .
platforms: ${{ matrix.target.platform }}
outputs: build
build-args: |
BASE_OS=${{ matrix.base.os }}
BASE_CODENAME=${{ matrix.base.codename }}
- name: Prepare environment to build AppImage
env:
TARGET_PLATFORM: ${{ matrix.target.platform }}
shell: bash
run: |
set -eua
if [ -r build/.build-metadata.env ]; then
. build/.build-metadata.env
rm build/.build-metadata.env
fi
APPIMAGE_SOURCE=build
APPIMAGE_VERSION="${VERSION}-${{ matrix.base.codename }}"
APPIMAGE_APT_ARCH="${TARGETARCH}"
APPIMAGE_APT_DISTRO="${{ matrix.base.codename }}"
APPIMAGE_APT_PUBKEY="${{ matrix.base.pubkey }}"
APPIMAGE_APT_PUBKEY_SECURITY="${{ matrix.base.pubkey_security }}"
APPIMAGE_ARCH="${TARGETMACHINE}"
printenv | grep ^APPIMAGE_ >>"${GITHUB_ENV}"
- name: Build AppImage
uses: git-developer/[email protected]
with:
command: ${{
format('sh -c "set -eu; {0}; {1}; {2}; appimage-builder --recipe {3}"',
'pip install --upgrade setuptools packaging packaging-legacy',
'pip install --extra-index-url https://lief.s3-website.fr-par.scw.cloud/latest \"lief>=0.16.0.dev0\"',
'find /usr/local/lib -name package.py | while read -r file; do sed -i -e \"s/^from.packaging/&_legacy/\" \"${file}\"; done',
matrix.base.recipe)
}}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: appimage-${{ matrix.base.codename }}-${{ matrix.target.arch }}
path: |
./*.AppImage
./*.AppImage.zsync
if-no-files-found: error
test:
runs-on: ubuntu-latest
needs:
- build
strategy:
fail-fast: false
matrix:
target:
- platform: linux/amd64
arch: amd64
base:
- os: ubuntu
codename: focal
- os: ubuntu
codename: jammy
- os: ubuntu
codename: noble
- os: debian
codename: bullseye
- os: debian
codename: bookworm
- os: debian
codename: trixie
- os: fedora
codename: "39"
- os: fedora
codename: "40"
- os: archlinux
codename: base
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v4
with:
pattern: appimage-*-${{ matrix.target.arch }}
path: appimages
merge-multiple: true
- name: Setup qemu for docker
uses: docker/setup-qemu-action@v3
if: matrix.target.platform != 'linux/amd64'
- name: Setup buildx for docker
uses: docker/setup-buildx-action@v3
- name: Test AppImages
uses: docker/build-push-action@v5
with:
file: AppImageBuilder.test.Dockerfile
context: appimages
platforms: ${{ matrix.target.platform }}
build-args: |
BASE_OS=${{ matrix.base.os }}
BASE_CODENAME=${{ matrix.base.codename }}
release:
runs-on: ubuntu-latest
needs:
- build
- test
permissions:
contents: write
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
pattern: appimage-*
path: assets
merge-multiple: true
- name: Create checksum for release assets
shell: bash
run: |
algo="${SHA_ALGORITHM:-256}"
find assets -type f | while read -r asset; do
shasum --binary --algorithm "${algo}" "${asset}" >"${asset}.sha${algo}"
done
- name: Upload artifacts to GitHub release
uses: softprops/action-gh-release@v2
with:
draft: ${{ !startsWith(github.ref, 'refs/tags/') }}
files: assets/*