diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml deleted file mode 100644 index 9b8ae2e..0000000 --- a/.github/workflows/release-please.yml +++ /dev/null @@ -1,82 +0,0 @@ -on: - push: - branches: - - main -name: build and release-please -env: - ACTION_NAME: deploy-cloud-functions -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: install - run: npm ci - - name: build - run: npm run build - - name: commit - run: |- - set -e - # get current commit hash - CURRENT_HASH=$(git rev-parse HEAD) - # get last commit hash of last build dist - LAST_BUILD_HASH=$(git log --author=google-github-actions-bot -1 --pretty=format:"%H") - DIFF="" - # build and commit dist if diff - git config --global user.name "actions-bot" - git config user.email 'github-actions-bot@google.com' - git add dist/ - git diff-index --quiet HEAD || git commit -m "chore: build dist ${ACTION_NAME}" - # if last commit hash of last build dist was found, get logs of commits in btw for PR body - if [ -z "$LAST_BUILD_HASH" ] - then - echo "Unable to find last commit by bot, skipping diff gen" - else - DIFF=$(git log ${LAST_BUILD_HASH}...${CURRENT_HASH} --oneline) - echo $DIFF - fi - # set env vars - echo "CURRENT_HASH=${CURRENT_HASH}" >> $GITHUB_ENV - echo "LAST_BUILD_HASH=${LAST_BUILD_HASH}" >> $GITHUB_ENV - echo 'DIFF<> $GITHUB_ENV - echo "${DIFF}" >> $GITHUB_ENV - echo 'EOF' >> $GITHUB_ENV - - name: Create Pull Request - uses: peter-evans/create-pull-request@v3 - with: - token: ${{ secrets.ACTIONS_BOT_TOKEN }} - commit-message: Build dist - author: "actions-bot " - title: "chore: build dist" - body: | - Build dist PR - ${{env.DIFF}} - labels: automated pr - branch: create-pull-request/build-dist - delete-branch: true - push-to-fork: google-github-actions-bot/${{env.ACTION_NAME}} - release-please-pr: - runs-on: ubuntu-latest - needs: [build] - steps: - - uses: google-github-actions/release-please-action@main - with: - token: ${{ secrets.ACTIONS_BOT_TOKEN }} - release-type: node - fork: true - bump-minor-pre-major: true - package-name: ${{env.ACTION_NAME}} - command: release-pr - release-please-release: - runs-on: ubuntu-latest - needs: [build] - steps: - - uses: google-github-actions/release-please-action@main - with: - token: ${{ secrets.GITHUB_TOKEN }} - release-type: node - package-name: ${{env.ACTION_NAME}} - bump-minor-pre-major: true - command: github-release diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..5b91c39 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,94 @@ +name: 'release' + +on: + push: + branches: + - 'main' + workflow_dispatch: + +jobs: + # build compiles the code and creates a pull request of the compiled result if + # there is a diff. + build: + runs-on: 'ubuntu-latest' + steps: + - uses: 'actions/checkout@v2' + + - uses: 'actions/setup-node@v2' + with: + node-version: '12.x' + + - name: 'npm build' + run: 'npm ci && npm run build' + + - name: 'Create pull request' + uses: 'peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a' + with: + token: '${{ secrets.ACTIONS_BOT_TOKEN }}' + add-paths: 'dist/' + committer: 'google-github-actions-bot ' + author: 'google-github-actions-bot ' + signoff: 'google-github-actions-bot ' + commit-message: 'Build dist' + title: 'chore: build dist' + body: 'Build compiled Typescript' + base: 'main' + branch: 'actions/build' + push-to-fork: 'google-github-actions-bot/deploy-cloud-functions' + delete-branch: true + + # create-pull-request creates a release pull request if there are any + # convential commit changes since the last release. + create-pull-request: + runs-on: 'ubuntu-latest' + steps: + - uses: 'google-github-actions/release-please-action@v2' + with: + token: '${{ secrets.ACTIONS_BOT_TOKEN }}' + release-type: 'node' + bump-minor-pre-major: true + command: 'release-pr' + fork: true + + # release does a release on the merge of the release pull request. It also + # updates the floating tag alias for the major version. + release: + runs-on: 'ubuntu-latest' + steps: + - id: 'release' + uses: 'google-github-actions/release-please-action@v2' + with: + release-type: 'node' + bump-minor-pre-major: true + command: 'github-release' + + - name: 'Update floating tag' + if: '${{ steps.release.outputs.release_created }}' + uses: 'actions/github-script@v5' + with: + script: |- + const sha = '${{ steps.release.outputs.sha }}' + const major = 'v${{ steps.release.outputs.major }}'; + + // Try to update the ref first. If that fails, it probably does not + // exist yet, and we should create it. + try { + await github.rest.git.updateRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: `tags/${major}`, + sha: sha, + force: true, + }); + core.info(`Updated ${major} to ${sha}`); + } catch(err) { + core.warning(`Failed to create ${major}: ${err}`); + + await github.rest.git.createRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: `refs/tags/${major}`, + sha: sha, + }); + core.info(`Created ${major} at ${sha}`); + } diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml deleted file mode 100644 index 9c92638..0000000 --- a/.github/workflows/tag.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: 'tag' - -on: - push: - tags: - # match vx.y and v x.y.z.w... but not vx - - 'v[0-9]+.*' - -jobs: - # pointer parses the incoming tag value and updates the "vX" pointer to the - # same SHA as this tag. - pointer: - name: 'pointer' - runs-on: 'ubuntu-latest' - steps: - - uses: 'actions/github-script@v5' - with: - script: |- - const tag = process.env.GITHUB_REF_NAME; - if(!tag) { - core.setFailed(`Missing tag!`) - return - } - core.info(`Using tag "${tag}"`) - - const matches = tag.match(/(v[0-9]+).*/) - if(!matches || matches.length < 2) { - core.setFailed(`Invalid tag "${tag}"`) - return - } - const major = matches[1]; - core.info(`Matched to major tag "${major}"`) - - // Try to update the ref first. If that fails, it probably does not - // exist yet, and we should create it. - try { - await github.rest.git.updateRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: `tags/${major}`, - sha: context.sha, - force: true, - }) - - core.info(`Updated "${major}" to "${tag}" (${context.sha})`) - } catch { - core.warning(`Failed to update "${major}" tag (it may not `+ - `exist). Trying to create "${major}" now.`) - - await github.rest.git.createRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: `refs/tags/${major}`, - sha: context.sha, - }) - - core.info(`Created "${major}" at "${tag}" (${context.sha})`) - }