Build and Upload release package #5
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: Build and Upload release package | |
on: | |
workflow_dispatch: | |
permissions: | |
contents: write | |
jobs: | |
build: | |
runs-on: [ self-hosted, debian-12, pkg ] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Build packages | |
run: | | |
sudo apt-get update | |
sudo apt-get build-dep --no-install-recommends -y . | |
sudo apt-get install --no-install-recommends -y git-buildpackage debhelper devscripts | |
debuild --no-lintian -us -uc | |
- name: Workaround actions | |
run: | | |
echo "artifacts_path=$(realpath ..)" >> $GITHUB_ENV | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ github.event.repository.name }} | |
path: | | |
${{ env.artifacts_path }}/*.deb | |
release: | |
needs: build | |
runs-on: [ self-hosted, ubuntu-24.04, pkg ] | |
if: ${{ github.event_name != 'pull_request' && github.ref_name == 'main' }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
repository: ameridroid/apt-repo | |
path: repo | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y reprepro gnupg git unzip openssh-client | |
- uses: actions/download-artifact@v4 | |
with: | |
name: ${{ github.event.repository.name }} | |
- name: Extract artifacts | |
run: | | |
ls *.deb | |
- name: Import GPG and ssh key | |
env: | |
GPG_KEY: ${{ secrets.GPG_PRIVATE_KEY }} | |
SSH_KEY: ${{ secrets.APT_SSH_KEY }} | |
run: | | |
echo "$GPG_KEY" | gpg --import | |
gpg --list-keys | |
mkdir -p ~/.ssh | |
echo "$SSH_KEY" > ~/.ssh/id_ed25519 | |
chmod 600 ~/.ssh/id_ed25519 | |
ssh-keyscan github.com >> ~/.ssh/known_hosts | |
- name: Upload packages to APT repository | |
run: | | |
cd ./repo/stable/ | |
for package in ../../*.deb; do | |
for codename in bookworm trixie sid oracular; do | |
reprepro --ignore=wrongdistribution includedeb $codename $package | |
done | |
done | |
- name: Push updated repository to main branch | |
run: | | |
cd ./repo | |
git config --global user.name "GitHub Actions" | |
git config --global user.email "[email protected]" | |
git add -A | |
git commit -m "Update ${{ github.event.repository.name}}" || echo "No changes to commit" | |
git remote set-url origin [email protected]:ameriDroid/apt-repo.git | |
git push origin main | |
- name: Release notes | |
run: | | |
version="$(dpkg-parsechangelog -S Version)" | |
# replace ~ with - to match tag format | |
version="${version//\~/\-}" | |
echo "version=$version" >> $GITHUB_ENV | |
echo "changes<<EOF" >> $GITHUB_ENV | |
echo '```' >> $GITHUB_ENV | |
echo "$(dpkg-parsechangelog -S Changes)" >> $GITHUB_ENV | |
echo '```' >> $GITHUB_ENV | |
echo "EOF" >> $GITHUB_ENV | |
- name: Release | |
uses: softprops/[email protected] | |
with: | |
files: | | |
./*.deb | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag_name: ${{ env.version }} | |
body: | | |
## Changelog for ${{ env.version }} | |
${{ env.changes }} | |
draft: false | |
prerelease: false | |