Skip to content

Require sha in snapshot releases for forks #878

Require sha in snapshot releases for forks

Require sha in snapshot releases for forks #878

name: Snapshot Release
on:
workflow_dispatch:
issue_comment:
types:
- created
jobs:
publish:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
if: |
github.repository == 'apollographql/apollo-client-nextjs' &&
(
github.event_name == 'workflow_dispatch' ||
(
github.event.issue.pull_request &&
(
github.event.sender.login == 'benjamn' ||
github.event.sender.login == 'alessbell' ||
github.event.sender.login == 'bignimbus' ||
github.event.sender.login == 'hwillson' ||
github.event.sender.login == 'jerelmiller' ||
github.event.sender.login == 'phryneas'
) &&
startsWith(github.event.comment.body, '/release:pr')
)
)
steps:
- uses: alessbell/[email protected]
if: github.event_name == 'issue_comment'
id: comment-branch
- name: Checkout head ref (comment trigger)
if: github.event_name == 'issue_comment'
uses: actions/checkout@v4
with:
## specify the owner + repository in order to checkout the fork
## for community PRs
repository: ${{ steps.comment-branch.outputs.head_owner }}/${{ steps.comment-branch.outputs.head_repo }}
ref: ${{ steps.comment-branch.outputs.head_ref }}
fetch-depth: 0
- name: Checkout head ref (dispatch trigger)
if: github.event_name == 'workflow_dispatch'
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20.11.0"
registry-url: "https://registry.npmjs.org"
cache: "yarn"
- run: yarn install --immutable
# 0.0.0 : to sort lower than any other release
# -commit-release : to sort higher than the already released 0.0.0-commit-<hash>,
# .0 : format specifier (if the following identifiers will change format, increase this number)
# .%ct : commit timestamp (to sort releases by commit date, not by hash)
# .%h : commit shorthash
- run: echo PKG_VERSION="$(git show --no-patch --format=0.0.0-commit-release.0.%ct.%h)" >> $GITHUB_ENV
- name: "@apollo/client-react-streaming: update version"
run: |
yarn workspace @apollo/client-react-streaming exec npm pkg set "version=${{ env.PKG_VERSION }}"
yarn workspace @apollo/client-react-streaming exec jq '{ version: .version, dependencies: .dependencies, peerDependencies: .peerDependencies }' package.json
- name: "@apollo/client-react-streaming: publish"
run: yarn workspace @apollo/client-react-streaming exec npm publish --access public --tag snapshot --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: "@apollo/experimental-nextjs-app-support: update version and dependencies"
run: |
yarn workspace @apollo/experimental-nextjs-app-support exec npm pkg set "dependencies[@apollo/client-react-streaming]=${{ env.PKG_VERSION }}" "version=${{ env.PKG_VERSION }}"
yarn workspace @apollo/experimental-nextjs-app-support exec jq '{ version: .version, dependencies: .dependencies, peerDependencies: .peerDependencies }' package.json
- name: "@apollo/experimental-nextjs-app-support: publish"
run: yarn workspace @apollo/experimental-nextjs-app-support exec npm publish --access public --tag snapshot --provenance
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Create comment
if: github.event_name == 'issue_comment'
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: ${{ github.event.issue.number }}
body: |
A new release has been made for this PR. You can install the package you need using one of
* `npm i @apollo/experimental-nextjs-app-support@${{ env.PKG_VERSION }}`
* `npm i @apollo/client-react-streaming@${{ env.PKG_VERSION }}`