Include all generated files in release artifacts #80
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 | |
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 }} |