Update changelog
for 2024.4 (#1980)
#938
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Changesets | |
on: | |
push: | |
branches: | |
- main | |
concurrency: | |
group: changeset-${{ github.head_ref }} | |
cancel-in-progress: true | |
jobs: | |
changelog: | |
runs-on: ubuntu-latest | |
if: github.repository_owner == 'shopify' | |
name: Changelog PR or Release | |
outputs: | |
published: ${{ steps.changesets.outputs.published }} | |
latest: ${{ env.latest }} | |
latestBranch: ${{ env.latestBranch }} | |
steps: | |
- name: Flags | |
id: flags | |
run: | | |
# IMPORTANT: Update this latestBranch whenever we move to a new major version: | |
echo "latestBranch=2024-04" >> $GITHUB_ENV | |
echo "latest=${{ github.ref_name == 'main' }}" >> $GITHUB_ENV | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
# This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits | |
with: | |
fetch-depth: 0 | |
- name: ⎔ Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
- name: Install the packages | |
run: npm ci --legacy-peer-deps | |
- name: Format release with Prettier | |
run: npm run format | |
- name: Build the dist code | |
run: npm run build | |
- name: Create Release Pull Request or Publish (for latest release) | |
if: env.latest == 'true' | |
id: changesets | |
uses: changesets/action@v1 | |
with: | |
version: npm run version | |
publish: npm run changeset publish | |
# we use the commit message in next release workflow file. This avoid a next release when an actual release is happening | |
commit: '[ci] release ${{ env.latestBranch }}' | |
title: '[ci] release ${{ env.latestBranch }}' | |
env: | |
GITHUB_TOKEN: ${{ secrets.SHOPIFY_GH_ACCESS_TOKEN }} | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
compile: | |
needs: changelog | |
# Only compile templates if a release was published, and we're on the "latest" release branch | |
if: needs.changelog.outputs.published == 'true' && needs.changelog.outputs.latest == 'true' | |
runs-on: ubuntu-latest | |
name: Compile the typescript templates and push them to main | |
steps: | |
- name: Checkout the code | |
uses: actions/checkout@v4 | |
- name: Install the packages | |
run: npm install --frozen-lockfile --ignore-engines | |
- name: Build the dist code | |
run: npm run build | |
- name: Compile skeleton | |
run: | | |
node scripts/compile-template-for-dist.mjs skeleton | |
(cd templates/skeleton-js && npm i --package-lock-only --workspaces false) | |
(cd templates/skeleton-ts && npm i --package-lock-only --workspaces false) | |
- name: Compile hello-world | |
run: | | |
node scripts/compile-template-for-dist.mjs hello-world | |
- name: Update templates in the dist branch | |
run: | | |
git add . | |
git status | |
git config user.email "hydrogen@shopify.com" | |
git config user.name "Hydrogen Bot" | |
git show-ref | |
git commit -m "Update templates for dist" | |
git push origin HEAD:dist --force | |
# sync_latest: | |
# needs: changelog | |
# # Only update package-lock.json if a release was published, and we're on the "latest" release branch | |
# if: needs.changelog.outputs.published == 'true' && needs.changelog.outputs.latest == 'true' | |
# runs-on: ubuntu-latest | |
# name: Sync latest to version branch | |
# steps: | |
# - name: Checkout the code | |
# uses: actions/checkout@v4 | |
# - name: Update package-lock.json | |
# run: npm install --package-lock-only --ignore-engines | |
# TODO: Figure out how to push to protected branch | |
# - name: Push commit to main branch | |
# run: | | |
# git add . | |
# git status | |
# git config user.email "hydrogen@shopify.com" | |
# git config user.name "Hydrogen Bot" | |
# git show-ref | |
# git commit -m "[ci] Update package-lock.json" | |
# git push origin HEAD:main | |
# - name: Sync latest to version branch | |
# run: | | |
# git config user.email "hydrogen@shopify.com" | |
# git config user.name "Hydrogen Bot" | |
# git show-ref | |
# git commit -m "[ci] release ${{ needs.changelog.outputs.latestBranch }}" | |
# git push origin main:${{ needs.changelog.outputs.latestBranch }} --force | |
discord_announcement: | |
needs: changelog | |
# Only announce if a release was published, and we're on the "latest" release branch | |
if: needs.changelog.outputs.published == 'true' && needs.changelog.outputs.latest == 'true' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out the code | |
uses: actions/checkout@v4 | |
- name: Read Hydrogen version from package.json | |
id: read_package_json | |
working-directory: ./packages/hydrogen | |
run: | | |
content=`cat ./package.json` | |
# the following lines are required for multi line json | |
content="${content//'%'/'%25'}" | |
content="${content//$'\n'/'%0A'}" | |
content="${content//$'\r'/'%0D'}" | |
# end of handling multi line json | |
echo "packageJson=$content" >> "$GITHUB_OUTPUT" | |
- run: | | |
echo "HYDROGEN_VERSION=${{fromJSON(steps.read_package_json.outputs.packageJson).version}}" >> $GITHUB_ENV | |
- name: Discord notification | |
env: | |
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} | |
DISCORD_USERNAME: Shopify Devs | |
DISCORD_AVATAR: https://cdn.discordapp.com/avatars/905537246990590012/0f6a687b93ef3f81a036c817fb02ccbf.webp | |
uses: Ilshidur/action-discord@08d9328877d6954120eef2b07abbc79249bb6210 | |
with: | |
args: "Hydrogen ${{ env.HYDROGEN_VERSION }} has been released.\nhttps://github.com/Shopify/hydrogen/releases/tag/@shopify/hydrogen@${{ env.HYDROGEN_VERSION }}" |