Skip to content

Expand troubleshooting guide to cover HMR and dev server slowness (#3… #2212

Expand troubleshooting guide to cover HMR and dev server slowness (#3…

Expand troubleshooting guide to cover HMR and dev server slowness (#3… #2212

name: Changesets
on:
push:
branches:
- main
concurrency: ${{ github.workflow }}-${{ github.ref }}
permissions:
id-token: write # Required for OIDC
contents: write # Required to push tags and create releases
pull-requests: write # Required for changesets to create PRs
issues: write # Required for changesets to comment on issues about the release in which they were fixed
jobs:
changesets:
name: Make a PR or publish
runs-on: ubuntu-latest
outputs:
published: ${{ steps.changesets.outputs.published }}
sync_service_release_tag: ${{ steps.sync_service_release_tag.outputs.tag }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version-file: '.tool-versions'
cache: pnpm
- uses: erlef/setup-beam@v1
with:
version-type: strict
version-file: '.tool-versions'
- run: pnpm install --frozen-lockfile
- run: pnpm run -r --filter './packages/**' build
- name: Create Release Pull Request or Publish
id: changesets
uses: changesets/action@v1
with:
version: pnpm ci:version
publish: pnpm ci:publish
title: 'chore: publish new package versions'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HEX_API_KEY: ${{ secrets.HEX_API_KEY }}
- name: Capture the new sync-service release as an output (if any)
id: sync_service_release_tag
if: steps.changesets.outputs.published == 'true'
run: |
# Assign publishedPackages to a variable first to avoid any interpretation of JSON special chars by the shell
PUBLISHED_PACKAGES='${{ steps.changesets.outputs.publishedPackages }}'
# Use jq to pick the relevant package from the JSON array and format it into a <package>@<version> output
TAGS=$(echo "$PUBLISHED_PACKAGES" | jq -r '.[] | select(.name == "@core/sync-service") | .name + "@" + .version')
echo "tag=$TAGS" >> "$GITHUB_OUTPUT"
- name: Add latest tag to published packages
if: steps.changesets.outputs.published == 'true'
run: node scripts/tag-latest.mjs
- name: Comment on PRs about release
if: steps.changesets.outputs.published == 'true'
run: node scripts/comment-on-release.mjs
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PUBLISHED_PACKAGES: ${{ steps.changesets.outputs.publishedPackages }}
publish-to-dockerhub:
needs: changesets
if: ${{ needs.changesets.outputs.published == 'true' && needs.changesets.outputs.sync_service_release_tag != '' }}
uses: ./.github/workflows/sync_service_dockerhub_image.yml
secrets: inherit
with:
release_tag: ${{ needs.changesets.outputs.sync_service_release_tag }}
update-cloud:
name: Update Electric version used by Cloud
runs-on: ubuntu-latest
needs: changesets
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Get the Electric version of the Docker image
- name: Get Electric version
id: sync_version
run: |
VERSION=$(jq -r '.version' packages/sync-service/package.json)
echo "version=${VERSION}" >> $GITHUB_OUTPUT
- name: Trigger cloud update
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.CROSSREPO_PAT }}
repository: electric-sql/stratovolt
event-type: update-electric
client-payload: |
{
"electric_commit_sha": "${{ github.sha }}",
"electric_docker_version": "${{ steps.sync_version.outputs.version }}"
}