# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". name: release on: push: branches: - main workflow_dispatch: {} jobs: release: runs-on: ubuntu-latest permissions: contents: write outputs: latest_commit: ${{ steps.git_remote.outputs.latest_commit }} env: CI: "true" steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set git identity run: |- git config user.name "github-actions" git config user.email "github-actions@github.com" - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: 14.0.0 - name: Install dependencies run: npm ci - name: release run: npx projen release - name: Check for new commits id: git_remote run: echo ::set-output name=latest_commit::"$(git ls-remote origin -h ${{ github.ref }} | cut -f1)" - name: Backup artifact permissions if: ${{ steps.git_remote.outputs.latest_commit == github.sha }} run: cd dist && getfacl -R . > permissions-backup.acl continue-on-error: true - name: Upload artifact if: ${{ steps.git_remote.outputs.latest_commit == github.sha }} uses: actions/upload-artifact@v2.1.1 with: name: build-artifact path: dist release_github: name: Publish to GitHub Releases needs: release runs-on: ubuntu-latest permissions: contents: write issues: write if: needs.release.outputs.latest_commit == github.sha steps: - uses: actions/setup-node@v3 with: node-version: 14.0.0 - name: Download build artifacts uses: actions/download-artifact@v3 with: name: build-artifact path: dist - name: Restore build artifact permissions run: cd dist && setfacl --restore=permissions-backup.acl continue-on-error: true - name: Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_REPOSITORY: ${{ github.repository }} GITHUB_REF: ${{ github.ref }} run: errout=$(mktemp); gh release create $(cat dist/releasetag.txt) -R $GITHUB_REPOSITORY -F dist/changelog.md -t $(cat dist/releasetag.txt) --target $GITHUB_REF 2> $errout && true; exitcode=$?; if [ $exitcode -ne 0 ] && ! grep -q "Release.tag_name already exists" $errout; then cat $errout; exit $exitcode; fi - name: Extract Version id: extract-version if: ${{ failure() }} run: echo "::set-output name=VERSION::$(cat dist/version.txt)" - name: Create Issue if: ${{ failure() }} uses: imjohnbo/issue-bot@v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: labels: failed-release title: Publishing v${{ steps.extract-version.outputs.VERSION }} to GitHub Releases failed body: See https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}