Skip to content

Release

Release #56

Workflow file for this run

# Workflow to create a release when a new tag is created
# It will generate the release on GitHub and attach the packages
name: Release
on:
push:
tags:
- '*'
jobs:
deb-package:
runs-on: ubuntu-22.04
env:
target_docker_image: debian:bookworm-backports
target_distribution: bookworm
strategy:
matrix:
target_arch: ["amd64", "armhf", "arm64"]
steps:
- name: GitHub Environment Variables Action
uses: FranzDiebold/github-env-vars-action@v1.2.1
- name: Checkout code
uses: actions/checkout@v3
- name: Patch target distribution in Debian changelog
# touchegg (x.y.z) DISTRO; urgency=medium
# -z to replace only the first occurrence
# -i to update the file
# ([)] ) - Group 0, find the first ") "
# (\w+) - Group 1, find a word (DISTRO)
# \1${{ env.target_distribution }} - Replace group 1 with the target distribution name
run: |
sed -zri "s/([)] )(\w+)/\1${{ env.target_distribution }}/" ${{ github.workspace }}/debian/changelog
- name: Build Debian package
uses: pi-top/action-debian-package@v0.2.2
with:
source_directory: "${{ github.workspace }}"
artifacts_directory: "${{ github.workspace }}/artifacts"
docker_image: ${{ env.target_docker_image }}
distribution: ${{ env.target_distribution }}
target_architecture: ${{ matrix.target_arch }}
lintian_opts: "-profile debian --dont-check-part nmu --no-tag-display-limit --display-info --show-overrides"
# Package uses latest packaging syntax and Lintian opts/tags
dpkg_buildpackage_opts: "--no-sign --no-check-builddeps --post-clean"
- name: Upload Debian package artifacts
uses: "actions/upload-artifact@v2"
with:
name: "${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_${{matrix.target_arch}}.deb"
path: "${{ github.workspace }}/artifacts/${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_${{matrix.target_arch}}.deb"
rpm-package-rhel:
runs-on: ubuntu-22.04
container:
image: almalinux:9
steps:
- name: Install dependencies
run: |
su
dnf upgrade -y
dnf install -y dnf-plugins-core
dnf config-manager --set-enabled powertools
dnf install -y epel-release
dnf groupinstall -y "Development Tools"
dnf install -y gcc gcc-c++ cmake rpm-build libudev-devel libinput-devel pugixml-devel cairo-devel libX11-devel libXtst-devel libXrandr-devel libXi-devel glib2-devel gtk3-devel
- name: GitHub Environment Variables Action
uses: FranzDiebold/github-env-vars-action@v1.2.1
- name: Checkout code
uses: actions/checkout@v3
with:
path: ${{ env.GITHUB_REPOSITORY_NAME }}
- name: Create rpmbuild directories
run: |
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
- name: Generate tarball
run: |
tar -czvf ~/rpmbuild/SOURCES/${{ env.GITHUB_REPOSITORY_NAME }}.tar.gz ${{ env.GITHUB_REPOSITORY_NAME }} --transform s/^touchegg/touchegg-${{ env.GITHUB_REF_NAME }}/
- name: Build RPM package
run: |
rpmbuild -ba ${{ env.GITHUB_REPOSITORY_NAME }}/rpm/${{ env.GITHUB_REPOSITORY_NAME }}.spec
- name: Upload RPM package
uses: "actions/upload-artifact@v2"
with:
name: "rhel8_${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_REF_NAME }}-1.x86_64.rpm"
path: "~/rpmbuild/RPMS/x86_64/${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_REF_NAME }}-1.x86_64.rpm"
rpm-package-fedora:
runs-on: ubuntu-22.04
container:
image: fedora:38
steps:
- name: Install dependencies
run: |
dnf upgrade -y
dnf groupinstall -y "Development Tools"
dnf install -y gcc gcc-c++ cmake rpm-build libudev-devel libinput-devel pugixml-devel cairo-devel libX11-devel libXtst-devel libXrandr-devel libXi-devel glib2-devel gtk3-devel
- name: GitHub Environment Variables Action
uses: FranzDiebold/github-env-vars-action@v1.2.1
- name: Checkout code
uses: actions/checkout@v3
with:
path: ${{ env.GITHUB_REPOSITORY_NAME }}
- name: Create rpmbuild directories
run: |
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
- name: Generate tarball
run: |
tar -czvf ~/rpmbuild/SOURCES/${{ env.GITHUB_REPOSITORY_NAME }}.tar.gz ${{ env.GITHUB_REPOSITORY_NAME }} --transform s/^touchegg/touchegg-${{ env.GITHUB_REF_NAME }}/
- name: Build RPM package
run: |
rpmbuild -ba ${{ env.GITHUB_REPOSITORY_NAME }}/rpm/${{ env.GITHUB_REPOSITORY_NAME }}.spec
- name: Upload RPM package
uses: "actions/upload-artifact@v2"
with:
name: "fedora34_${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_REF_NAME }}-1.x86_64.rpm"
path: "~/rpmbuild/RPMS/x86_64/${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_REF_NAME }}-1.x86_64.rpm"
create-release:
runs-on: ubuntu-22.04
needs: [ deb-package, rpm-package-rhel, rpm-package-fedora ]
steps:
- name: GitHub Environment Variables Action
uses: FranzDiebold/github-env-vars-action@v1.2.1
- name: Download packages
uses: "actions/download-artifact@v2"
with:
path: ./
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.GITHUB_REF_NAME }}
release_name: ${{ env.GITHUB_REF_NAME }}
draft: true
prerelease: false
- name: Upload Debian package (amd64)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: "${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_amd64.deb/${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_amd64.deb"
asset_name: "${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_amd64.deb"
asset_content_type: application/vnd.debian.binary-package
- name: Upload Debian package (armhf)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: "${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_armhf.deb/${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_armhf.deb"
asset_name: "${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_armhf.deb"
asset_content_type: application/vnd.debian.binary-package
- name: Upload Debian package (arm64)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: "${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_arm64.deb/${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_arm64.deb"
asset_name: "${{ env.GITHUB_REPOSITORY_NAME }}_${{ env.GITHUB_REF_NAME }}_arm64.deb"
asset_content_type: application/vnd.debian.binary-package
- name: Upload RPM package (RHEL)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: "rhel8_${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_REF_NAME }}-1.x86_64.rpm/${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_REF_NAME }}-1.x86_64.rpm"
asset_name: "rhel8_${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_REF_NAME }}-1.x86_64.rpm"
asset_content_type: application/octet-stream
- name: Upload RPM package (Fedora)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: "fedora34_${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_REF_NAME }}-1.x86_64.rpm/${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_REF_NAME }}-1.x86_64.rpm"
asset_name: "fedora34_${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_REF_NAME }}-1.x86_64.rpm"
asset_content_type: application/octet-stream