[pre-commit.ci] pre-commit autoupdate #1419
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: Debian Package Build | |
on: | |
pull_request: | |
push: | |
branches: | |
- master | |
- bullseye | |
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" | |
HOST_COMPILE: "\"architecture\":[\"amd64\"]" | |
X_COMPILE: "\"architecture\":[\"armhf\", \"arm64\"]" # ARM 32 and 64 bit | |
jobs: | |
check-architecture: | |
runs-on: ubuntu-20.04 | |
outputs: | |
architecture: ${{ steps.set-arch.outputs.architecture }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Determine target architecture | |
id: set-arch | |
# 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 "Building for $architecture" | |
echo "architecture=$architecture">>$GITHUB_OUTPUT | |
check-distro: | |
runs-on: ubuntu-20.04 | |
outputs: | |
distros: ${{ steps.set-distros.outputs.distros }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Determine build distro | |
id: set-distros | |
run: | | |
distros="\"distro\":[\"bookworm\", \"bullseye\"]" | |
# if bullseye branch exists, build for bookworm only | |
if git branch -r | grep -Eq "origin/bullseye$"; then | |
distros="\"distro\":[\"bookworm\"]" | |
fi | |
# if pull request to bullseye branch or current branch is bullseye, build only for bullseye | |
if [ $(echo ${{ github.head_ref }} | grep -qE "bullseye$") ] || [ ${{ github.ref }} = 'refs/heads/bullseye' ]; then | |
distros="\"distro\":[\"bullseye\"]" | |
fi | |
echo "Building for $distros" | |
echo "distros=$distros">>$GITHUB_OUTPUT | |
set-build-matrix: | |
needs: [check-distro, check-architecture] | |
runs-on: ubuntu-20.04 | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- name: Determine build matrix | |
id: set-matrix | |
run: | | |
matrix='{${{needs.check-distro.outputs.distros}}, ${{needs.check-architecture.outputs.architecture}}}' | |
echo "Building for $matrix" | |
echo "matrix=$matrix">>$GITHUB_OUTPUT | |
build-debian-package: | |
runs-on: ubuntu-20.04 | |
needs: set-build-matrix | |
strategy: | |
fail-fast: false | |
matrix: ${{fromJSON(needs.set-build-matrix.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' || | |
github.ref == 'refs/heads/bullseye' | |
) && | |
( | |
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' || github.ref == 'refs/heads/bullseye' | |
with: | |
repository: ${{ env.PACKAGECLOUD_REPO }}/${{ env.OS }}/${{ matrix.distro }} | |
files: | | |
./artifacts/*.deb | |
env: | |
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }} |