name: Hyperion APT Build on: push: branches: - '**' tags: - '*' jobs: setup: name: Setup APT build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set APT matrix id: apt-ppa run: | APT=$(echo $(cat .github/workflows/apt.json) | jq --compact-output .) echo "::set-output name=apt::$APT" outputs: apt-matrix: ${{ steps.apt-ppa.outputs.apt }} build: name: ${{ matrix.description }} needs: [setup] runs-on: ubuntu-latest strategy: matrix: ${{ fromJson(needs.setup.outputs.apt-matrix) }} steps: - uses: actions/checkout@v2 with: submodules: true - name: Build package shell: bash run: | tr -d '\n' < version > temp && mv temp version mkdir -p "${GITHUB_WORKSPACE}/deploy" docker run --rm \ -v "${GITHUB_WORKSPACE}/deploy:/deploy" \ -v "${GITHUB_WORKSPACE}:/source:rw" \ ghcr.io/hyperion-project/${{ matrix.architecture }}:$(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]') \ /bin/bash -c "cd /source && \ mkdir -p debian/source && echo '3.0 (quilt)' > debian/source/format && \ dch --create --distribution $(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]') --package 'hyperion' -v '$(cat version)~$(echo ${{ matrix.distribution }} | tr '[:upper:]' '[:lower:]')' '${{ github.event.commits[0].message }}' && \ cp -fr LICENSE debian/copyright && \ sed 's/@BUILD_DEPENDS@/${{ matrix.build-depends }}/g; s/@DEPENDS@/${{ matrix.package-depends }}/g; s/@ARCHITECTURE@/${{ matrix.architecture }}/g' debian/control.in > debian/control && \ tar cf ../hyperion_2.0.0.orig.tar . && \ xz -9 ../hyperion_2.0.0.orig.tar && \ debuild --no-lintian -uc -us && \ cp ../hyperion_* /deploy" - name: Upload package artifact if: startsWith(github.event.ref, 'refs/tags') uses: actions/upload-artifact@v2.2.4 with: path: deploy retention-days: 1 publish: name: Publish APT packages if: startsWith(github.event.ref, 'refs/tags') needs: [setup, build] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Import GPG key uses: crazy-max/ghaction-import-gpg@v3.1.0 with: gpg-private-key: ${{ secrets.APT_GPG }} - name: Install reprepro run: sudo apt -y install reprepro - name: Make build folders, export public GPG key and copy distributions file run: | mkdir -p apt/{conf,dists,db} gpg --armor --output apt/hyperion.pub.key --export 'admin@hyperion-project.org' cp debian/distributions apt/conf/distributions - name: Create initial structure/packages files and symbolic links run: | reprepro -Vb apt createsymlinks reprepro -Vb apt export - name: Download artifacts uses: actions/download-artifact@v2.0.10 - name: Include artifacts into the package source run: | for file in artifact/*.deb; do if [ -f "$file" ]; then dist=${file#*~} dist=${dist%_*} reprepro -Vb apt/ includedeb "$dist" "$file" fi done - name: Upload packages to APT server uses: SamKirkland/FTP-Deploy-Action@4.0.0 with: server: apt.hyperion-project.org username: ${{ secrets.APT_USER }} password: ${{ secrets.APT_PASSWORD }} local-dir: "./apt/" server-dir: "./" hyperbian: name: Update HyperBian Release if: startsWith(github.event.ref, 'refs/tags') needs: [setup, build, publish] runs-on: ubuntu-latest steps: # Dispatch event to build new HyperBian image - name: Dispatch HyperBian build uses: peter-evans/repository-dispatch@v1 if: ${{ github.repository_owner == 'hyperion-project'}} with: repository: hyperion-project/HyperBian token: ${{ secrets.HYPERION_BOT_TOKEN }} event-type: hyperion_push