📦️ Release #62
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: 🤖 PR Commands | |
on: | |
issue_comment: | |
types: [created] | |
pull_request: | |
types: [opened, closed] | |
jobs: | |
createIssueBranch: | |
name: 📝 Create Issue Branch | |
runs-on: ubuntu-latest | |
steps: | |
- uses: robvanderleek/create-issue-branch@main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
snapshot: | |
name: 🚚 Create Snapshot | |
if: github.event.issue.pull_request && contains(github.event.comment.body, '/snapshot') | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
steps: | |
- name: Get Action URL | |
id: action-url | |
run: echo "url=https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" >> $GITHUB_OUTPUT | |
- name: Create comment | |
uses: peter-evans/create-or-update-comment@v4 | |
with: | |
comment-id: ${{ github.event.comment.id }} | |
edit-mode: replace | |
body: | | |
**🚚 Snapshot Version in Progress...** | |
[Check out the release on GitHub ↗︎](${{ steps.action-url.outputs.url }}) | |
- name: Get Branch Name | |
id: get-branch | |
run: | | |
COMMITS_URL="${{ github.event.issue.pull_request.url }}" | |
BRANCH=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" $COMMITS_URL | jq -r '.head.ref') | |
echo "branch=$BRANCH" >> $GITHUB_OUTPUT | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ steps.get-branch.outputs.branch }} | |
fetch-depth: 0 | |
- uses: ./.github/workflows/actions/setup | |
- name: get-npm-version | |
id: package-version | |
uses: martinbeentjes/[email protected] | |
with: | |
path: packages/core | |
- name: Get Last Commit SHA | |
id: last-commit | |
run: | | |
COMMITS_URL="https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.issue.number }}/commits" | |
LAST_COMMIT_SHA=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" $COMMITS_URL | jq -r '.[-1].sha') | |
echo "sha=$LAST_COMMIT_SHA" >> $GITHUB_OUTPUT | |
- name: Shorten Commit Sha | |
id: short-sha | |
run: echo "value=$(git rev-parse --short ${{ steps.last-commit.outputs.sha }})" >> $GITHUB_OUTPUT | |
- name: Create version | |
id: set-version | |
run: echo "version=${{ steps.package-version.outputs.current-version}}-snapshot.${{ github.event.issue.number }}-${{ steps.short-sha.outputs.value }}" >> $GITHUB_OUTPUT | |
- name: Print version | |
run: echo "${{steps.set-version.outputs.version}}" | |
- uses: ./.github/workflows/actions/release-setup | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
npm-token: ${{ secrets.NPM_PUBLISH_TOKEN }} | |
- name: Define version | |
run: npx nx release version --git-commit=false --git-tag=false --preid=snapshot --specifier=${{steps.set-version.outputs.version}} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build | |
run: npx nx run-many -t build --projects=tag:scope:release | |
- name: Pre-Publish | |
run: npx nx run pre-publish | |
- name: Publish | |
run: npx nx release publish --tag=snapshot | |
- name: Create comment | |
if: success() | |
uses: peter-evans/create-or-update-comment@v4 | |
with: | |
comment-id: ${{ github.event.comment.id }} | |
edit-mode: replace | |
body: | | |
**🚀 Snapshot Version Released!** | |
Version: `${{ steps.set-version.outputs.version }}` | |
[Check out the release on GitHub ↗︎](${{ steps.action-url.outputs.url }}) | |
- name: Create comment | |
if: failure() | |
uses: peter-evans/create-or-update-comment@v4 | |
with: | |
comment-id: ${{ github.event.comment.id }} | |
edit-mode: replace | |
body: | | |
**🚨 Snapshot Version Failed!** | |
Version: `${{ steps.set-version.outputs.version }}` | |
[Check out the release on GitHub ↗︎](${{ steps.action-url.outputs.url }}) | |
- name: Git Reset | |
run: git reset --hard | |
visual: | |
name: 📸 Create Base Image | |
if: github.event.issue.pull_request && contains(github.event.comment.body, '/create-base-image') | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
steps: | |
- name: Get Action URL | |
id: action-url | |
run: echo "url=https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" >> $GITHUB_OUTPUT | |
- name: Check for /create-base-image command | |
uses: actions/github-script@v7 | |
id: command | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
result-encoding: string | |
script: | | |
const comment = context.payload.comment.body.trim(); | |
const regex = /\/create-base-image(?:\s+(.*))?/; | |
if (regex.test(comment)) { | |
const match = comment.match(regex); | |
const imageName = match[1] ? match[1].trim() : ''; | |
if(imageName !== ''){ | |
return imageName | |
} | |
return 'all' | |
} | |
return 'none' | |
- name: Filter specs | |
uses: actions/github-script@v7 | |
id: specs | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
result-encoding: string | |
script: | | |
const comment = context.payload.comment.body.trim(); | |
const regex = /\/create-base-image(?:\s+(.*))?/; | |
if (regex.test(comment)) { | |
const match = comment.match(regex); | |
const imageName = match[1] ? match[1].trim() : ''; | |
if(imageName !== ''){ | |
return imageName.split(',').map(v => `cypress/e2e/visual/${v}`); | |
} | |
return 'all' | |
} | |
return 'none' | |
- name: Get results | |
run: | | |
echo "${{ steps.command.outputs.result }}" | |
echo "${{ steps.specs.outputs.result }}" | |
- name: Create comment | |
uses: peter-evans/create-or-update-comment@v4 | |
with: | |
comment-id: ${{ github.event.comment.id }} | |
edit-mode: replace | |
body: | | |
**📸 Create Base Image in Progress...** | |
Specs: `${{ steps.command.outputs.result }}` | |
[Check out the action on GitHub ↗︎](${{ steps.action-url.outputs.url }}) | |
- name: Get Branch Name | |
id: get-branch | |
run: | | |
COMMITS_URL="${{ github.event.issue.pull_request.url }}" | |
BRANCH=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" $COMMITS_URL | jq -r '.head.ref') | |
echo "branch=$BRANCH" >> $GITHUB_OUTPUT | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ steps.get-branch.outputs.branch }} | |
token: ${{ secrets.PRE_RELEASE_GITHUB_TOKEN }} | |
fetch-depth: 0 | |
- uses: ./.github/workflows/actions/e2e-build | |
with: | |
build: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run All Cypress | |
if: steps.specs.outputs.result == 'all' | |
uses: cypress-io/github-action@v6 | |
with: | |
start: node ./web-server.js | |
wait-on: 'http://localhost:3333' | |
working-directory: e2e | |
install: false | |
browser: chrome | |
env: | |
CYPRESS_visualRegressionType: base | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run Cypress by files | |
if: steps.specs.outputs.result != 'all' && steps.specs.outputs.result != 'none' | |
uses: cypress-io/github-action@v6 | |
with: | |
start: node ./web-server.js | |
wait-on: 'http://localhost:3333' | |
working-directory: e2e | |
install: false | |
browser: chrome | |
spec: ${{ steps.specs.outputs.result }} | |
env: | |
CYPRESS_visualRegressionType: base | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Upload snapshots | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cypress-snapshots | |
path: e2e/cypress/snapshots | |
- name: Commit base images | |
if: success() | |
uses: EndBug/add-and-commit@v9 | |
with: | |
message: 'update base images' | |
env: | |
GITHUB_TOKEN: ${{ secrets.PRE_RELEASE_GITHUB_TOKEN }} | |
- name: Create comment | |
if: success() | |
uses: peter-evans/create-or-update-comment@v4 | |
with: | |
comment-id: ${{ github.event.comment.id }} | |
edit-mode: replace | |
body: | | |
**📸 Create Base Image finished!** | |
Specs: `${{ steps.command.outputs.result }}` | |
[Check out the action on GitHub ↗︎](${{ steps.action-url.outputs.url }}) | |
- name: Create comment | |
if: failure() | |
uses: peter-evans/create-or-update-comment@v4 | |
with: | |
comment-id: ${{ github.event.comment.id }} | |
edit-mode: replace | |
body: | | |
**🚨 Create Base Image Failed!** | |
Specs: `${{ steps.command.outputs.result }}` | |
[Check out the action on GitHub ↗︎](${{ steps.action-url.outputs.url }}) |