name: Publish Release ๐Ÿท๏ธ on: push: tags: - "v?[0-9]+.[0-9]+.[0-9]+*" workflow_dispatch: inputs: tag: description: "The existing tag to publish" type: "string" required: true jobs: version-check: name: "Check versions โš–๏ธ" runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v5 with: fetch-depth: 0 - name: "Compare App and Git versions ๐ŸŸฐ" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | APP_VERSION=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2) GIT_VERSION=$(git describe --tags | cut -d'-' -f1) echo "App version: ${REL_VERSION}" echo "Git version: ${GIT_VERSION}" if [ "${APP_VERSION}" != "${GIT_VERSION}" ]; then echo "ERROR! Version mismatch."; exit 1 fi draft-release: needs: [version-check] name: "Draft Release ๐Ÿ“ฅ๏ธ" runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v5 - name: Create release ${{ github.ref }} as a draft env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh release create "${{ github.ref }}" --draft --generate-notes build-release: needs: [draft-release] name: "Build Release ๐Ÿ‘จโ€๐Ÿ”ง" runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v5 - name: Build and Upload .deb env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | sudo apt-get -y update sudo apt-get -y install debhelper devscripts REL_VER=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2) rm debian/changelog dch --package quickemu --newversion="${REL_VER}-1" --distribution=unstable "New upstream release." --create dpkg-buildpackage --build=binary --no-check-builddeps --compression=gzip gh release upload "${{ github.ref }}" "../quickemu_${REL_VER}-1_all.deb" --clobber publish-release: needs: [build-release] name: "Publish Release ๐Ÿ“ค๏ธ" runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v5 - name: Publish release ${{ github.ref }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | if [ "$(gh release view "${{ github.ref }}" --json assets --template '{{len .assets}}')" -lt 0 ]; then exit 1 fi gh release edit "${{ github.ref }}" --draft=false publish-flakehub: needs: [version-check] name: "Publish FlakeHub โ„๏ธ" runs-on: "ubuntu-22.04" permissions: id-token: "write" contents: "read" steps: - uses: "actions/checkout@v5" with: ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}" - uses: "DeterminateSystems/nix-installer-action@main" - uses: "DeterminateSystems/magic-nix-cache-action@main" - uses: "DeterminateSystems/flakehub-push@main" with: visibility: "public" name: "quickemu-project/quickemu" tag: "${{ inputs.tag }}" publish-ppa: needs: [version-check] name: "Publish PPA ๐Ÿ“ฆ๏ธ" runs-on: ubuntu-22.04 steps: - name: "Checkout ๐Ÿฅก" uses: actions/checkout@v5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: "Import gpg key ๐Ÿ”‘" uses: crazy-max/ghaction-import-gpg@v6 with: gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }} passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }} - name: "Install dependencies ๐Ÿ’พ" run: | sudo apt-get -y update sudo apt-get -y install debhelper-compat distro-info dput devscripts - name: "Upload to PPA โคด๏ธ" env: DEBEMAIL: ${{ secrets.DEBEMAIL }} DEBFULLNAME: ${{ secrets.DEBFULLNAME }} run: | REL_VER=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2) STAMP=$(date +%y%j.%H%M) for CODENAME in $(distro-info --supported); do rm debian/changelog dch --package quickemu --newversion="${REL_VER}-1~${CODENAME}${STAMP}" --distribution=${CODENAME} "New upstream release." --create dpkg-buildpackage -d -S -sa dput ppa:flexiondotorg/quickemu ../quickemu_${REL_VER}-1~${CODENAME}${STAMP}_source.changes done