docs(changeset): mermaid #517
This file contains hidden or 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: CI | |
| on: | |
| push: | |
| branches: | |
| - 'main' | |
| pull_request: | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }} | |
| jobs: | |
| main-job: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| packages: write | |
| attestations: write | |
| id-token: write | |
| # Update the Production/Preview environment with the Vercel deployed URL | |
| environment: | |
| name: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && 'Production' || 'Preview' }} | |
| url: ${{ steps.vercel-deploy.outputs.deployment_url }} | |
| steps: | |
| # | |
| # βββββββ βββββββ ββββββββ ββ ββ ββββββ | |
| # ββ ββ ββ ββ ββ ββ ββ | |
| # βββββββ βββββ ββ ββ ββ ββββββ | |
| # ββ ββ ββ ββ ββ ββ | |
| # βββββββ βββββββ ββ ββββββ ββ | |
| # | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - uses: pnpm/action-setup@v4 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.nvmrc' | |
| cache: 'pnpm' | |
| - run: pnpm install --frozen-lockfile | |
| # | |
| # ββββββ ββ ββ βββββ βββ ββ ββββββ βββββββ βββββββ βββββββ ββββββββ | |
| # ββ ββ ββ ββ ββ ββββ ββ ββ ββ ββ ββ ββ | |
| # ββ βββββββ βββββββ ββ ββ ββ ββ βββ βββββ βββββββ βββββ ββ | |
| # ββ ββ ββ ββ ββ ββ ββ ββ ββ ββ ββ ββ ββ ββ | |
| # ββββββ ββ ββ ββ ββ ββ ββββ ββββββ βββββββ βββββββ βββββββ ββ | |
| # | |
| - name: Create Release Pull Request or Publish | |
| id: changesets | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
| uses: changesets/action@v1 | |
| with: | |
| publish: pnpm run release # dummy release | |
| createGithubReleases: true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Check version bump | |
| id: check | |
| uses: EndBug/version-check@v2 | |
| with: | |
| diff-search: true | |
| - id: get-version | |
| if: steps.check.outputs.changed == 'true' | |
| run: | | |
| VERSION="${{ steps.check.outputs.version }}" | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| MAJOR_VERSION=$(echo "$VERSION" | cut -d. -f1) | |
| echo "major_version=$MAJOR_VERSION" >> $GITHUB_OUTPUT | |
| echo "Using version: $VERSION (major: $MAJOR_VERSION)" | |
| # | |
| # ββ ββ βββββββ ββββββ ββββββ βββββββ ββ | |
| # ββ ββ ββ ββ ββ ββ ββ ββ | |
| # ββ ββ βββββ ββββββ ββ βββββ ββ | |
| # ββ ββ ββ ββ ββ ββ ββ ββ | |
| # ββββ βββββββ ββ ββ ββββββ βββββββ βββββββ | |
| # | |
| # Whatever "published", we deploy to Vercel (preview for PRs, production for main) | |
| # | |
| - id: vercel-deploy | |
| run: | | |
| npx -y vercel deploy --token=${{ secrets.VERCEL_TOKEN }} \ | |
| --target=${{ github.event_name == 'push' && 'production' || 'preview' }} \ | |
| --build-env MDX=docs \ | |
| --build-env NEXT_PUBLIC_LIBNAME="Poimandres" \ | |
| --build-env NEXT_PUBLIC_LIBNAME_SHORT="pmndrs" \ | |
| --build-env NEXT_PUBLIC_LIBNAME_DOTSUFFIX_LABEL="docs" \ | |
| --build-env NEXT_PUBLIC_LIBNAME_DOTSUFFIX_HREF="https://pmnd.rs" \ | |
| --build-env BASE_PATH= \ | |
| --build-env DIST_DIR= \ | |
| --build-env OUTPUT= \ | |
| --build-env HOME_REDIRECT= \ | |
| --build-env MDX_BASEURL="https://github.com/${{ github.repository }}/raw/${{ github.head_ref || github.ref_name }}/docs" \ | |
| --build-env EDIT_BASEURL="https://github.com/${{ github.repository }}/edit/${{ github.head_ref || github.ref_name }}/docs" \ | |
| --build-env SOURCECODE_BASEURL="https://github.com/${{ github.repository }}/tree/${{ github.head_ref || github.ref_name }}" \ | |
| --build-env NEXT_PUBLIC_URL="$VERCEL_PROJECT_PRODUCTION_URL" \ | |
| --build-env ICON= \ | |
| --build-env LOGO=gutenberg.jpg \ | |
| --build-env GITHUB="https://github.com/${{ github.repository }}" \ | |
| --build-env DISCORD="${{ secrets.DISCORD }}" \ | |
| --build-env THEME_PRIMARY="#323e48" \ | |
| --build-env THEME_SCHEME="tonalSpot" \ | |
| --build-env THEME_CONTRAST="0" \ | |
| --build-env THEME_NOTE="#1f6feb" \ | |
| --build-env THEME_TIP="#238636" \ | |
| --build-env THEME_IMPORTANT="#8957e5" \ | |
| --build-env THEME_WARNING="#d29922" \ | |
| --build-env THEME_CAUTION="#da3633" \ | |
| --build-env CONTRIBUTORS_PAT="${{ secrets.GITHUB_TOKEN }}" \ | |
| > deployment-url.txt | |
| echo "deployment_url=$(cat deployment-url.txt)" >> $GITHUB_OUTPUT | |
| env: | |
| VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} | |
| VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} | |
| # | |
| # ββββββ ββββββ ββββββ ββ ββ βββββββ ββββββ | |
| # ββ ββ ββ ββ ββ ββ ββ ββ ββ ββ | |
| # ββ ββ ββ ββ ββ βββββ βββββ ββββββ | |
| # ββ ββ ββ ββ ββ ββ ββ ββ ββ ββ | |
| # ββββββ ββββββ ββββββ ββ ββ βββββββ ββ ββ | |
| # | |
| - uses: docker/login-action@v3 | |
| if: steps.check.outputs.changed == 'true' | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: docker/metadata-action@v5 | |
| if: steps.check.outputs.changed == 'true' | |
| id: meta | |
| with: | |
| images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
| tags: | | |
| type=ref,event=branch | |
| type=raw,value=latest | |
| type=raw,value=${{ steps.get-version.outputs.major_version }} | |
| type=raw,value=${{ steps.get-version.outputs.version }} | |
| - uses: docker/build-push-action@v6 | |
| id: push | |
| with: | |
| context: . | |
| # Push only if a new version was published | |
| push: ${{ steps.check.outputs.changed == 'true' }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| - uses: actions/attest-build-provenance@v3 | |
| if: steps.check.outputs.changed == 'true' | |
| with: | |
| subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
| subject-digest: ${{ steps.push.outputs.digest }} | |
| push-to-registry: true | |
| - name: git tags | |
| if: steps.check.outputs.changed == 'true' | |
| run: | | |
| git config --global user.email "${{ github.actor }}@users.noreply.github.com" | |
| git config --global user.name "${{ github.actor }}" | |
| # Set version variables | |
| VERSION=${{ steps.get-version.outputs.version }} | |
| MAJOR_VERSION=${{ steps.get-version.outputs.major_version }} | |
| # vX.Y.Z tag | |
| git tag -fa v$VERSION -m "Update version tag to v$VERSION" | |
| # vX tag | |
| git tag -fa v$MAJOR_VERSION -m "Update major version tag to v$MAJOR_VERSION" | |
| git push origin v$MAJOR_VERSION v$VERSION --force |