UNPKG

@next-boilerplate/cli

Version:
103 lines (97 loc) 3.82 kB
name: Release on: push: branches: - main - main-release - rec - rec-release workflow_dispatch: permissions: contents: read # for checkout jobs: # This job is used to sync the main branch to the main:release branch and the rec branch to the rec:release branch sync: name: Sync runs-on: ubuntu-latest permissions: contents: write # to be able to push to the main:release and rec:release branches id-token: write # to enable use of OIDC for npm provenance if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/rec' steps: - name: Generate token id: generate_token uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.MYBOT_APP_ID }} private_key: ${{ secrets.MYBOT_PRIVATE_KEY }} - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ steps.generate_token.outputs.token }} - name: Setup Git Config run: | git config user.name "GitHub Actions" git config user.email "github-actions@example.com" - name: Sync Branch run: | SOURCE_BRANCH="${GITHUB_REF_NAME}" TARGET_BRANCH="${GITHUB_REF_NAME}-release" MAIN_RELEASE_BRANCH="main-release" # Fetch all git fetch origin # Create the main-release branch from main if it doesn't exist if ! git show-ref --verify --quiet "refs/remotes/origin/${MAIN_RELEASE_BRANCH}"; then echo "Target branch ${MAIN_RELEASE_BRANCH} does not exist. Creating it from main." git checkout -b ${MAIN_RELEASE_BRANCH} origin/main git push --set-upstream origin ${MAIN_RELEASE_BRANCH} fi # Check if the target branch exists and checkout to it if git show-ref --verify --quiet "refs/remotes/origin/${TARGET_BRANCH}"; then git checkout ${TARGET_BRANCH} else echo "Target branch ${TARGET_BRANCH} does not exist. Creating it from ${SOURCE_BRANCH}." git checkout -b ${TARGET_BRANCH} origin/${SOURCE_BRANCH} git push --set-upstream origin ${TARGET_BRANCH} fi # Merge changes from SOURCE_BRANCH to TARGET_BRANCH, favoring 'theirs' for conflicts git merge -X theirs origin/${SOURCE_BRANCH} # Push changes to TARGET_BRANCH git push origin ${TARGET_BRANCH} env: GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} release: name: Release runs-on: ubuntu-latest permissions: contents: write # to be able to publish a GitHub release issues: write # to be able to comment on released issues pull-requests: write # to be able to comment on released pull requests id-token: write # to enable use of OIDC for npm provenance if: (github.ref == 'refs/heads/main-release' || github.ref == 'refs/heads/rec-release') steps: - name: Generate token id: generate_token uses: tibdex/github-app-token@v2 with: app_id: ${{ secrets.MYBOT_APP_ID }} private_key: ${{ secrets.MYBOT_PRIVATE_KEY }} - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ steps.generate_token.outputs.token }} - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20.x" cache: "npm" - name: Install dependencies run: npm install # - name: Verify the integrity of provenance attestations and registry signatures for installed dependencies # run: npm audit signatures - name: Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: npx semantic-release