Skip to content

Package for bookworm #7

Package for bookworm

Package for bookworm #7

Workflow file for this run

name: Create GitHub Release
on:
workflow_dispatch:
branches:
- master
pull_request:
branches:
- master
types: [closed]
env:
DEB_BUILD_DOCKER_IMAGE: "pitop/pi-top-os-deb-build"
DEB_BUILD_DOCKER_BRANCH: "master"
PACKAGECLOUD_REPO: "pi-top-os-unstable"
OS: "debian"
DISTROS: "\"distro\":[\"bookworm\", \"bullseye\"]"
HOST_COMPILE: "\"architecture\":[\"amd64\"]"
X_COMPILE: "\"architecture\":[\"armhf\", \"arm64\"]" # ARM 32 and 64 bit
jobs:
check-architecture:
runs-on: ubuntu-20.04
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: true
- name: Determine target architecture
id: set-matrix
# If any packages define architecture as other than 'all'
# then it can't be compiled on host architecture
run: |
architecture=$HOST_COMPILE
if grep '^Architecture:' debian/control | grep -q -v 'all'; then
architecture=$X_COMPILE
fi
echo "matrix={$architecture, $DISTROS}">>$GITHUB_OUTPUT
check-versions:
runs-on: ubuntu-20.04
outputs:
CURRENT_VERSION: ${{ steps.current_version.outputs.CURRENT_VERSION }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: true
fetch-depth: 0
- name: Get latest semver tag and latest version in changelog
run: |
set -x
sudo apt update
sudo apt install -y --no-install-recommends dpkg-dev npm
npm install -g git-latest-semver-tag
latest_tag=$(git-latest-semver-tag)
changelog_version=$(dpkg-parsechangelog -Sversion)
echo "LATEST_TAG=${latest_tag#v}" >> $GITHUB_ENV
echo "CURRENT_VERSION=${changelog_version}" >> $GITHUB_ENV
- name: Confirm version is higher than last tagged version
if: ${{ env.LATEST_TAG != '' }}
run: dpkg --compare-versions ${{ env.CURRENT_VERSION }} gt ${{ env.LATEST_TAG }}
- name: Set current version as output
id: current_version
run:
echo "CURRENT_VERSION=${{ env.CURRENT_VERSION }}">>"$GITHUB_OUTPUT"
release:
needs: [check-architecture, check-versions]
runs-on: ubuntu-20.04
if: github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged && github.head_ref == 'bump-changelog')
strategy:
fail-fast: false
matrix: ${{fromJSON(needs.check-architecture.outputs.matrix)}}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: true
fetch-depth: 0
- name: Patch lintian-overrides
if: matrix.distro == 'bullseye'
run:
cp -r debian/bullseye-overrides/* debian/ || true
- name: Build Debian package
uses: pi-top/debian-package-build-action@master
with:
# https://github.com/pi-top/debian-package-build-action/pull/19
# lintian_check_changelog_spelling: false
target_architecture: ${{ matrix.architecture }}
docker_image: ${{ env.DEB_BUILD_DOCKER_IMAGE }}:${{ matrix.distro }}-${{ env.DEB_BUILD_DOCKER_BRANCH }}
signing_key: ${{ secrets.DEB_SIGNING_GPG_KEY }}
signing_passphrase: ${{ secrets.DEB_SIGNING_GPG_PASSPHRASE }}
build_directory: ./artifacts
LINTIAN_SHOW_OVERRIDES: 0
# Optional, repo-specific build environment variables
additional_env: |
DATA="${{ secrets.DATA }}"
TLS_KEY="${{ secrets.CERT_PRIVATE_KEY }}"
PYTHON_PACKAGE_VERSION="${{ needs.check-versions.outputs.CURRENT_VERSION }}"
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: "dsc"
path: "./artifacts"
- name: Upload .dsc to PackageCloud
uses: pi-top/ghaction-packagecloud@main
# Only 1 .dsc is required for source so take armhf if there's multiple
if: |
(
github.ref == 'refs/heads/master' &&
(
matrix.architecture == 'amd64' ||
matrix.architecture == 'armhf'
)
)
with:
repository: ${{ env.PACKAGECLOUD_REPO }}/${{ env.OS }}/${{ matrix.distro }}
files: |
./artifacts/*.dsc
env:
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
- name: Upload .deb to PackageCloud
uses: pi-top/ghaction-packagecloud@main
with:
repository: ${{ env.PACKAGECLOUD_REPO }}/${{ env.OS }}/${{ matrix.distro }}
files: |
./artifacts/*.deb
env:
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
- name: Install zip
uses: montudor/action-zip@v1
- name: Zip distro artifacts
run: |
ls -l ./artifacts
zip ${{ matrix.distro }}-${{ matrix.architecture }}.deb.zip ./artifacts/*
- name: Create release and upload package
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.PAT_GITHUB }}
file: ./${{ matrix.distro}}-${{ matrix.architecture }}.deb.zip
tag: "v${{ needs.check-versions.outputs.CURRENT_VERSION }}"