# ~~ Generated by projen. To modify, edit .projenrc.ts 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 pnpm uses: pnpm/action-setup@v2.2.4 with: version: "8" - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: 20.10.0 - name: Install dependencies run: pnpm i --frozen-lockfile - name: release run: npx projen release - name: Check for new commits id: git_remote run: echo "latest_commit=$(git ls-remote origin -h ${{ github.ref }} | cut -f1)" >> $GITHUB_OUTPUT - 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@v3 with: name: build-artifact path: dist major-release: needs: release_github runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - uses: rickstaa/action-create-tag@v1 with: force_push_tag: true tag: v2 - uses: ncipollo/release-action@v1 with: allowUpdates: true generateReleaseNotes: true tag: v2 token: ${{ secrets.GITHUB_TOKEN }} release_github: name: Publish to GitHub Releases needs: release runs-on: ubuntu-latest permissions: contents: write if: needs.release.outputs.latest_commit == github.sha steps: - uses: actions/setup-node@v3 with: node-version: 20.10.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