forked from Boria138/PortProtonQt
161 lines
5.2 KiB
YAML
161 lines
5.2 KiB
YAML
name: Build AppImage, Arch and Fedora Packages
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
tags:
|
|
- 'v[0-9]+.[0-9]+.[0-9]+'
|
|
|
|
env:
|
|
# Common version, will be used for tagging the release
|
|
VERSION: v0.1.1
|
|
PKGDEST: "/tmp/portprotonqt"
|
|
PACKAGE: "portprotonqt"
|
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
|
|
jobs:
|
|
build-appimage:
|
|
name: Build AppImage
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: https://gitea.com/actions/checkout@v4
|
|
|
|
- name: Install required dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install -y binutils coreutils desktop-file-utils gtk-update-icon-cache fakeroot fuse libgdk-pixbuf2.0-dev patchelf python3-pip python3-dev python3-setuptools squashfs-tools strace util-linux zsync
|
|
|
|
- name: Install tools
|
|
run: pip3 install appimage-builder uv
|
|
|
|
- name: Build AppImage
|
|
run: |
|
|
cd build-aux
|
|
appimage-builder
|
|
|
|
- name: Upload AppImage
|
|
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
|
with:
|
|
name: PortProtonQt-AppImage
|
|
path: build-aux/PortProtonQt*.AppImage*
|
|
|
|
build-arch:
|
|
name: Build Arch Package
|
|
runs-on: ubuntu-22.04
|
|
container:
|
|
image: archlinux:base-devel
|
|
volumes:
|
|
- /usr:/usr-host
|
|
- /opt:/opt-host
|
|
options: --privileged
|
|
|
|
steps:
|
|
- name: Prepare container
|
|
run: |
|
|
pacman -Sy --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm
|
|
sed -i 's/#MAKEFLAGS="-j2"/MAKEFLAGS="-j$(nproc) -l$(nproc)"/g' /etc/makepkg.conf
|
|
sed -i 's/OPTIONS=(.*)/OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge lto)/g' /etc/makepkg.conf
|
|
yes | pacman -Scc
|
|
pacman-key --init
|
|
pacman -S --noconfirm archlinux-keyring
|
|
mkdir -p /__w/portproton-repo
|
|
pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
|
|
pacman-key --lsign-key 3056513887B78AEB
|
|
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
|
|
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
|
|
cat << EOM >> /etc/pacman.conf
|
|
|
|
[chaotic-aur]
|
|
Include = /etc/pacman.d/chaotic-mirrorlist
|
|
EOM
|
|
pacman -Syy
|
|
useradd -m user -G wheel && echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
|
echo "PACKAGER=\"Boris Yumankulov <boria138@altlinux.org>\"" >> /etc/makepkg.conf
|
|
chown user -R /tmp
|
|
chown user -R ..
|
|
|
|
- name: Build
|
|
run: |
|
|
cd /__w/portproton-repo
|
|
git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git
|
|
cd /__w/portproton-repo/PortProtonQt/build-aux
|
|
chown user -R ..
|
|
su user -c "yes '' | makepkg --noconfirm -s"
|
|
|
|
- name: Checkout
|
|
uses: https://gitea.com/actions/checkout@v4
|
|
|
|
- name: Upload Arch package
|
|
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
|
with:
|
|
name: PortProtonQt-Arch
|
|
path: ${{ env.PKGDEST }}/*
|
|
|
|
build-fedora:
|
|
name: Build Fedora RPM
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
fedora_version: [40, 41, 42, rawhide]
|
|
|
|
container:
|
|
image: fedora:${{ matrix.fedora_version }}
|
|
options: --privileged
|
|
|
|
steps:
|
|
- name: Install build dependencies
|
|
run: |
|
|
dnf install -y git rpmdevtools python3-devel python3-wheel python3-pip \
|
|
python3-build pyproject-rpm-macros python3-setuptools \
|
|
redhat-rpm-config nodejs npm
|
|
|
|
- name: Setup rpmbuild environment
|
|
run: |
|
|
useradd rpmbuild -u 5002 -g users || true
|
|
mkdir -p /home/rpmbuild/{BUILD,RPMS,SPECS,SRPMS,SOURCES}
|
|
chown -R rpmbuild:users /home/rpmbuild
|
|
echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros
|
|
|
|
- name: Checkout repo
|
|
uses: https://gitea.com/actions/checkout@v4
|
|
|
|
- name: Copy fedora.spec
|
|
run: |
|
|
cp build-aux/fedora.spec /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec
|
|
chown -R rpmbuild:users /home/rpmbuild
|
|
|
|
- name: Build RPM
|
|
run: |
|
|
su rpmbuild -c "rpmbuild -ba /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec"
|
|
|
|
- name: Upload RPM package
|
|
uses: https://gitea.com/actions/gitea-upload-artifact@v4
|
|
with:
|
|
name: PortProtonQt-RPM-Fedora-${{ matrix.fedora_version }}
|
|
path: /home/rpmbuild/RPMS/**/*.rpm
|
|
|
|
release:
|
|
name: Create and Publish Release
|
|
needs: [build-appimage, build-arch, build-fedora]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Download all artifacts
|
|
uses: https://gitea.com/actions/download-artifact@v4
|
|
with:
|
|
path: release/
|
|
|
|
- name: Get Changes between Tags
|
|
id: changes
|
|
uses: https://github.com/simbo/changes-between-tags-action@v1
|
|
|
|
- name: Release
|
|
uses: https://gitea.com/actions/gitea-release-action@v1
|
|
with:
|
|
body: ${{ steps.changes.outputs.changes }}
|
|
token: ${{ env.GITEA_TOKEN }}
|
|
tag_name: ${{ env.VERSION }}
|
|
prerelease: true
|
|
files: release/**/*
|
|
sha256sum: true
|