Skip to content

Build - Linux x64 (.rpm/.deb/.pkg) #12

Build - Linux x64 (.rpm/.deb/.pkg)

Build - Linux x64 (.rpm/.deb/.pkg) #12

name: Build - Linux x64 (.rpm/.deb/.pkg)
on:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
env:
FORCE_COLOR: "1"
defaults:
run:
shell: bash
jobs:
ci:
name: Package
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
target: [ "Ubuntu-24.04", "Fedora-40", "Arch-Linux" ]
include:
- target: "Ubuntu-24.04"
platform: "Linux"
output-format: "system"
runs-on: "ubuntu-latest"
pre-command: "sudo apt -y install socat"
briefcase-args: "--target ubuntu:24.04"
python-version: "3.12"
- target: "Fedora-40"
platform: "Linux"
output-format: "system"
runs-on: "ubuntu-latest"
pre-command: "sudo apt -y install socat"
briefcase-args: "--target fedora:40"
python-version: "3.12"
- target: "Arch-Linux"
platform: "Linux"
output-format: "system"
runs-on: "ubuntu-latest"
pre-command: "sudo apt -y install socat"
briefcase-args: "--target archlinux:latest"
python-version: "3.14"
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install Briefcase
run: |
python -m pip install -U pip setuptools wheel
python -m pip install briefcase
- name: Setup Environment
run: |
${{ matrix.pre-command }}
- name: Prepare Changelog for Arch Linux
if: matrix.target == 'Arch-Linux'
run: |
if [ -f "CHANGELOG.md" ]; then
cp CHANGELOG.md CHANGELOG
else
touch CHANGELOG
fi
- name: Build App
run: |
briefcase build \
${{ matrix.platform }} \
${{ matrix.output-format }} \
--test --no-input --log \
${{ matrix.briefcase-args }}
- name: Package App
run: |
briefcase package \
${{ matrix.platform }} \
${{ matrix.output-format }} \
--update --adhoc-sign --no-input --log \
${{ matrix.briefcase-args }}
- name: Upload App
uses: actions/upload-artifact@v7
with:
name: App-${{ matrix.target }}
path: dist
if-no-files-found: error
- name: Upload Log
if: failure()
uses: actions/upload-artifact@v7
with:
name: Log-Failure-${{ matrix.target }}
path: logs/*