name: Deploy to GitHub on: push: tags: - '*-r[0-9]+' workflow_dispatch: inputs: tag: description: tag required: true jobs: package-win64: name: Build win64 release uses: ./.github/workflows/build-windows.yml with: artifact-name: win64-release ref: ${{ github.event.inputs.tag }} cache-id: release cache-readonly: true stonesense: true docs: true launchdf: true secrets: inherit package-linux64: name: Build linux64 release uses: ./.github/workflows/build-linux.yml with: artifact-name: linux64-release ref: ${{ github.event.inputs.tag }} cache-id: release cache-readonly: true stonesense: true docs: true secrets: inherit create-update-release: name: Draft GitHub release needs: - package-win64 - package-linux64 runs-on: ubuntu-latest permissions: contents: write steps: - name: Clone DFHack uses: actions/checkout@v3 with: ref: ${{ github.event.inputs.tag }} submodules: true - name: Get tag id: gettag run: echo name=$(git describe --tags --abbrev=0 --exact-match) >> $GITHUB_OUTPUT - name: Generate release text run: | python docs/gen_changelog.py -a TOKEN_LINE=$(grep -Fhne '%RELEASE_NOTES%' .github/release_template.md | sed 's/:.*//') head -n $((TOKEN_LINE - 1)) .github/release_template.md > release_body.md CHANGELOG_LINES=$(wc -l > release_body.md tail -n 2 .github/release_template.md >> release_body.md cat release_body.md - name: Stage win64 release uses: actions/download-artifact@v3 with: name: win64-release path: win64 - name: Create win64 release archive run: | cd win64 zip -r ../dfhack-${{ steps.gettag.outputs.name }}-Windows-64bit.zip . - name: Stage linux64 release uses: actions/download-artifact@v3 with: name: linux64-release path: linux64 - name: Create linux64 release archive run: | cd linux64 tar cjf ../dfhack-${{ steps.gettag.outputs.name }}-Linux-64bit.tar.bz2 . - name: Create or update GitHub release uses: ncipollo/release-action@v1 with: artifacts: "dfhack-*" bodyFile: "release_body.md" allowUpdates: true artifactErrorsFailBuild: true draft: true name: "DFHack ${{ steps.gettag.outputs.name }}" omitBodyDuringUpdate: true omitDraftDuringUpdate: true omitNameDuringUpdate: true omitPrereleaseDuringUpdate: true replacesArtifacts: true tag: ${{ steps.gettag.outputs.name }}