Skip to content

Package for bookworm (#16) #68

Package for bookworm (#16)

Package for bookworm (#16) #68

Workflow file for this run

name: Debian Package Build
on:
pull_request:
push:
branches:
- master
workflow_dispatch:
env:
DEB_BUILD_DOCKER_IMAGE: "pitop/pi-top-os-deb-build"
DEB_BUILD_DOCKER_BRANCH: "master"
CHANGELOG_AUTHOR_NAME: "pi-top"
CHANGELOG_AUTHOR_EMAIL: "deb-maintainers@pi-top.com"
PACKAGECLOUD_REPO: "experimental"
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
build-debian-package:
needs: check-architecture
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix: ${{fromJSON(needs.check-architecture.outputs.matrix)}}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: true
- id: version
uses: docker://lpenz/ghaction-version-gen:0.11.0
- name: Add changelog entry for latest snapshot version
uses: pi-top/git-debian-changelog-bump-action@master
with:
release: false
author_name: ${{ env.CHANGELOG_AUTHOR_NAME }}
author_email: ${{ env.CHANGELOG_AUTHOR_EMAIL }}
snapshot_number: ${{ steps.version.outputs.distance }}
since: ${{ steps.version.outputs.tag_latest }}
- 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="${{ steps.version.outputs.tag_latest_ltrimv }}"
- name: Generate artifact name
run: |
echo "ARTIFACT_PREFIX=$(basename -s .dsc "$(find . -name "*.dsc")")" >> $GITHUB_ENV
- name: Upload binary package artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.distro }}-${{ env.ARTIFACT_PREFIX }}.deb
path: ./artifacts/*.deb
- name: Upload source package artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.distro }}-${{ env.ARTIFACT_PREFIX }}.deb-src
path: ./artifacts/*.tar.xz
- name: Upload package build metadata artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ env.ARTIFACT_PREFIX }}.metadata
path: |
./artifacts/**
!./artifacts/*.deb
!./artifacts/*.tar.xz
- 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
if: github.ref == 'refs/heads/master'
with:
repository: ${{ env.PACKAGECLOUD_REPO }}/${{ env.OS }}/${{ matrix.distro }}
files: |
./artifacts/*.deb
env:
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}