chore(storm-ops): Resolve merge conflicts in main branch #1832
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
# Note: this pipelines is for the `storm-ops` repository, it should be used to build and release the Storm Nx-Plugin packages. | |
name: "CI/CD" | |
on: | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: override release tag | |
required: false | |
push: | |
branches: | |
- "main" | |
- "next" | |
- "alpha" | |
- "beta" | |
env: | |
CI: true | |
NX_DAEMON: false | |
NX_VERBOSE_LOGGING: true | |
STORM_BOT: Stormie-Bot | |
STORM_REPOSITORY: ${{ github.repositoryUrl }} | |
STORM_WORKSPACE_ROOT: ${{ github.workspace }} | |
NX_BASE: ${{ github.base_ref }} | |
NX_HEAD: ${{ github.head_ref }} | |
GITHUB_ACTOR: ${{ github.actor }} | |
GITHUB_TOKEN: ${{ github.token }} | |
NPM_TOKEN: ${{ secrets.STORM_BOT_NPM_TOKEN }} | |
CARGO_REGISTRY_TOKEN: ${{ secrets.STORM_BOT_CARGO_TOKEN }} | |
jobs: | |
release: | |
if: | |
github.repository == 'storm-software/storm-ops' && (github.ref == | |
'refs/heads/main' || github.ref == 'refs/heads/next' || github.ref == | |
'refs/heads/alpha' || github.ref == 'refs/heads/beta') | |
name: "CI/CD" | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
id-token: write | |
steps: | |
- name: Send Slack notification - Deployment started | |
uses: slackapi/slack-github-action@v1.26.0 | |
with: | |
channel-id: "notifications" | |
payload: | | |
{ | |
"text": "Deployment for ${{ github.repository }} has started (In Progress)", | |
"attachments": [ | |
{ | |
"pretext": "Deployment for ${{ github.repository }} has started", | |
"color": "1fb2a6", | |
"fields": [ | |
{ | |
"title": "Status", | |
"short": true, | |
"value": "In Progress" | |
} | |
] | |
} | |
] | |
} | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.STORM_BOT_SLACK_TOKEN }} | |
- name: Send Discord notification - Deployment started | |
uses: Ilshidur/action-discord@master | |
with: | |
args: | |
"Deployment for ${{ github.repository }} has started - #${{ | |
github.run_number }}" | |
env: | |
DISCORD_WEBHOOK: ${{ secrets.STORM_BOT_DISCORD_WEBHOOK }} | |
DISCORD_USERNAME: ${{ env.STORM_BOT }} | |
DISCORD_AVATAR: "https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-stormie.png" | |
DISCORD_EMBEDS: | |
'[{"title": "Deployment #${{ github.run_number }} has started", | |
"description": "Deployment for ${{ github.repository }} is currently | |
in process - #${{ github.run_number }}", "thumbnail": { "url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-fill.png" | |
}, "image": { "url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/logo-fill.png" | |
}, "author": { "name": "${{ github.actor }}", "url": | |
"https://github.com/${{ github.actor }}", "icon_url": | |
"https://avatars.githubusercontent.com/u/${{ github.actor_id }}?v=4" | |
}, "fields": [ { "name": "Repository", "value": "${{ | |
github.repository }}" }, { "name": "Repository URL", "value": "${{ | |
github.repositoryUrl }}" }, { "name": "Pipeline Status", "value": | |
"In Progress" }], "color": 2077350, "timestamp": "${{ | |
github.event.repository.updated_at }}", "url": "${{ | |
github.event.pull_request.html_url || github.event.head_commit.url | |
}}", "footer": { "text": "Click here to see the full workflow | |
details: ${{ github.event.pull_request.html_url || | |
github.event.head_commit.url }}", "icon_url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-fill.png" | |
} }]' | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.STORM_BOT_GITHUB_TOKEN }} | |
- name: Setup workspace | |
uses: storm-software/action-setup@main | |
with: | |
packageManager: pnpm | |
packageManagerVersion: 9.1.4 | |
stormBot: ${{ env.STORM_BOT }} | |
- name: Build Storm Nx-Plugin packages | |
run: pnpm build-plugins | |
shell: bash | |
- name: Configure git | |
run: | | |
git config user.name "${{ inputs.stormBot }}" | |
git config user.email "${{ inputs.stormBot }}@users.noreply.github.com" | |
git config lfs.allowincompletepush true | |
npm config set //registry.npmjs.org/:_authToken=$NPM_TOKEN | |
shell: bash | |
- name: Get appropriate base and head commits for `nx affected` commands | |
uses: nrwl/nx-set-shas@v4 | |
with: | |
main-branch-name: "main" | |
- name: Set appropriate base and head commits for `nx affected` commands | |
run: | | |
echo "BASE: ${{ env.NX_BASE }}" | |
echo "HEAD: ${{ env.NX_HEAD }}" | |
shell: bash | |
- name: Run build script | |
run: pnpm build-all | |
shell: bash | |
- name: Run formatters scripts | |
run: pnpm nx format | |
shell: bash | |
- name: Re-run build script | |
run: pnpm build-all | |
shell: bash | |
- name: Add permissions to linting tools | |
run: chmod a=rwx dist/packages/linting-tools/bin/lint.js | |
- name: Add permissions to alex config file | |
run: chmod a=rwx dist/packages/linting-tools/alex/.alexrc | |
- name: Add permissions to alex ignore file | |
run: chmod a=rwx dist/packages/linting-tools/alex/.alexignore | |
- name: Add permissions to linting-tools package.json file | |
run: chmod a=rwx packages/linting-tools/package.json | |
- name: Add permissions to git-tools package.json file | |
run: chmod a=rwx packages/git-tools/package.json | |
- name: Add permissions to workspace-tools package.json file | |
run: chmod a=rwx packages/workspace-tools/package.json | |
- name: Add permissions to create-storm-workspace package.json file | |
run: chmod a=rwx packages/create-storm-workspace/package.json | |
- name: Add permissions to linting-tools distribution package.json file | |
run: chmod a=rwx dist/packages/linting-tools/package.json | |
- name: Add permissions to git-tools distribution package.json file | |
run: chmod a=rwx dist/packages/git-tools/package.json | |
- name: Add permissions to workspace-tools distribution package.json file | |
run: chmod a=rwx dist/packages/workspace-tools/package.json | |
- name: | |
Add permissions to create-storm-workspace distribution package.json | |
file | |
run: chmod a=rwx dist/packages/create-storm-workspace/package.json | |
- name: Build repository packages | |
run: | |
pnpm nx affected -t build --parallel=5 --base=${{ env.NX_BASE }} | |
--head=${{ env.NX_HEAD }} | |
- name: Add permissions to git tools | |
run: chmod a=rwx dist/packages/git-tools/bin/git.js | |
- name: Release Library Version Updates | |
run: pnpm release --base=${{ env.NX_BASE }} --head=${{ env.NX_HEAD }} | |
env: | |
GITHUB_ACTOR: ${{ github.actor }} | |
GITHUB_TOKEN: ${{ github.token }} | |
GH_TOKEN: ${{ github.token }} | |
NPM_TOKEN: ${{ secrets.STORM_BOT_NPM_TOKEN }} | |
CARGO_REGISTRY_TOKEN: ${{ secrets.STORM_BOT_CARGO_TOKEN }} | |
STORM_BOT: Stormie-Bot | |
STORM_WORKSPACE_ROOT: ${{ github.workspace }} | |
STORM_REPOSITORY: ${{ github.repositoryUrl }} | |
TAG: ${{ inputs.tag }} | |
success: | |
needs: | |
- release | |
if: ${{ success() }} | |
name: Send success notification | |
runs-on: ubuntu-latest | |
steps: | |
- name: Send Slack notification - Deployment successful | |
uses: slackapi/slack-github-action@v1.26.0 | |
with: | |
channel-id: "notifications" | |
update-ts: ${{ steps.release.outputs.ts }} | |
payload: | | |
{ | |
"text": "Deployment for ${{ github.repository }} has finished (Completed) \n\nPipeline Status: Success \nClick here to see the full workflow details: ${{ github.event.pull_request.html_url || github.event.head_commit.url }}", | |
"attachments": [ | |
{ | |
"pretext": "Deployment for ${{ github.repository }} has finished successfully", | |
"color": "087f5b", | |
"fields": [ | |
{ | |
"title": "Status", | |
"short": true, | |
"value": "Completed" | |
} | |
] | |
} | |
] | |
} | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.STORM_BOT_SLACK_TOKEN }} | |
- name: Send Discord notification - Deployment successful | |
uses: Ilshidur/action-discord@master | |
with: | |
args: | |
"Deployment for ${{ github.repository }} finished successfully - | |
#${{ github.run_number }}" | |
env: | |
DISCORD_WEBHOOK: ${{ secrets.STORM_BOT_DISCORD_WEBHOOK }} | |
DISCORD_USERNAME: ${{ env.STORM_BOT }} | |
DISCORD_AVATAR: "https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-stormie.png" | |
DISCORD_EMBEDS: | |
'[{"title": "Deployment #${{ github.run_number }} was successful!", | |
"description": "Deployment for ${{ github.repository }} has finished | |
successfully - #${{ github.run_number }}", "thumbnail": { "url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-fill.png" | |
}, "image": { "url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/logo-fill.png" | |
}, "author": { "name": "${{ github.actor }}", "url": | |
"https://github.com/${{ github.actor }}", "icon_url": | |
"https://avatars.githubusercontent.com/u/${{ github.actor_id }}?v=4" | |
}, "fields": [ { "name": "Repository", "value": "${{ | |
github.repository }}" }, { "name": "Repository URL", "value": "${{ | |
github.repositoryUrl }}" }, { "name": "Pipeline Status", "value": | |
"Success" }], "color": 556891, "timestamp": "${{ | |
github.event.repository.updated_at }}", "url": "${{ | |
github.event.pull_request.html_url || github.event.head_commit.url | |
}}", "footer": { "text": "Click here to see the full workflow | |
details: ${{ github.event.pull_request.html_url || | |
github.event.head_commit.url }}", "icon_url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-fill.png" | |
}}]' | |
failure: | |
needs: | |
- release | |
if: ${{ failure() }} | |
name: Send failure notification | |
runs-on: ubuntu-latest | |
steps: | |
- name: Send Slack notification - Deployment failed | |
uses: slackapi/slack-github-action@v1.26.0 | |
with: | |
channel-id: "notifications" | |
update-ts: ${{ steps.release.outputs.ts }} | |
payload: | | |
{ | |
"text": "Deployment for ${{ github.repository }} has finished (Failure) \n\nPipeline Status: Failure\nError: ${{ job.conclusion }}\nReason: ${{ job.cancelled }}\nConclusion: ${{ job.conclusion }}\nOutput: ${{ job.output }}\nLogs: ${{ job.logs }} \nSteps: ${{ job.steps }} \nActions: ${{ job.actions }} \nServices: ${{ job.services }} \nEnvironment: ${{ job.environment}} \nClick here to see the full workflow details: ${{ github.event.pull_request.html_url || github.event.head_commit.url }}", | |
"attachments": [ | |
{ | |
"pretext": "Deployment for ${{ github.repository }} has finished with failures", | |
"color": "990000", | |
"fields": [ | |
{ | |
"title": "Status", | |
"short": true, | |
"value": "Failure" | |
} | |
] | |
} | |
] | |
} | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.STORM_BOT_SLACK_TOKEN }} | |
- name: Send Discord notification - Deployment failed | |
uses: Ilshidur/action-discord@master | |
with: | |
args: | |
"Deployment for ${{ github.repository }} finished with failures - | |
#${{ github.run_number }}" | |
env: | |
DISCORD_WEBHOOK: ${{ secrets.STORM_BOT_DISCORD_WEBHOOK }} | |
DISCORD_USERNAME: ${{ env.STORM_BOT }} | |
DISCORD_AVATAR: "https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-stormie.png" | |
DISCORD_EMBEDS: | |
'[{"title": "Deployment #${{ github.run_number }} has failed", | |
"description": "Deployment for ${{ github.repository }} finished | |
with failures - #${{ github.run_number }}", "thumbnail": { "url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-fill.png" | |
}, "image": { "url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/logo-fill.png" | |
}, "author": { "name": "${{ github.actor }}", "url": | |
"https://github.com/${{ github.actor }}", "icon_url": | |
"https://avatars.githubusercontent.com/u/${{ github.actor_id }}?v=4" | |
}, "fields": [ { "name": "Repository", "value": "${{ | |
github.repository }}" }, { "name": "Repository URL", "value": "${{ | |
github.repositoryUrl }}" }, { "name": "Pipeline Status", "value": | |
"Failure" }, { "name": "Event", "value": "${{ github.event_name }}" | |
}, { "name": "Result", "value": "${{ steps.release.result }}" }, { | |
"name": "Conclusion", "value": "${{ steps.release.conclusion }}" }, | |
{ "name": "Output", "value": "${{ toJSON(steps.release.outputs) }}" | |
}], "color": 10027008, "timestamp": "${{ | |
github.event.repository.updated_at }}", "url": "${{ | |
github.event.pull_request.html_url || github.event.head_commit.url | |
}}", "footer": { "text": "Click here to see the full workflow | |
details: ${{ github.event.pull_request.html_url || | |
github.event.head_commit.url }}", "icon_url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-fill.png" | |
} }]' | |
cancelled: | |
needs: | |
- release | |
if: ${{ cancelled() }} | |
name: Send cancelled notification | |
runs-on: ubuntu-latest | |
steps: | |
- name: Send Slack notification - Deployment cancelled | |
uses: slackapi/slack-github-action@v1.26.0 | |
with: | |
channel-id: "notifications" | |
update-ts: ${{ steps.release.outputs.ts }} | |
payload: | | |
{ | |
"text": "Deployment for ${{ github.repository }} has finished (Cancelled) \n\nPipeline Status: Cancelled\nError: ${{ job.conclusion }}\nReason: ${{ job.cancelled }}\nConclusion: ${{ job.conclusion }}\nOutput: ${{ job.output }}\nLogs: ${{ job.logs }} \nSteps: ${{ job.steps }} \nActions: ${{ job.actions }} \nServices: ${{ job.services }} \nEnvironment: ${{ job.environment}} \nClick here to see the full workflow details: ${{ github.event.pull_request.html_url || github.event.head_commit.url }}", | |
"attachments": [ | |
{ | |
"pretext": "Deployment for ${{ github.repository }} has been cancelled", | |
"color": "990000", | |
"fields": [ | |
{ | |
"title": "Status", | |
"short": true, | |
"value": "Cancelled" | |
} | |
] | |
} | |
] | |
} | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.STORM_BOT_SLACK_TOKEN }} | |
- name: Send Discord notification - Deployment cancelled | |
uses: Ilshidur/action-discord@master | |
with: | |
args: | |
"Deployment for ${{ github.repository }} has been cancelled - #${{ | |
github.run_number }}" | |
env: | |
DISCORD_WEBHOOK: ${{ secrets.STORM_BOT_DISCORD_WEBHOOK }} | |
DISCORD_USERNAME: ${{ env.STORM_BOT }} | |
DISCORD_AVATAR: "https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-stormie.png" | |
DISCORD_EMBEDS: | |
'[{"title": "Deployment #${{ github.run_number }} was cancelled", | |
"description": "Deployment for ${{ github.repository }} was | |
cancelled before it could complete normal execution - #${{ | |
github.run_number }}", "thumbnail": { "url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-fill.png" | |
}, "image": { "url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/logo-fill.png" | |
}, "author": { "name": "${{ github.actor }}", "url": | |
"https://github.com/${{ github.actor }}", "icon_url": | |
"https://avatars.githubusercontent.com/u/${{ github.actor_id }}?v=4" | |
}, "fields": [ { "name": "Repository", "value": "${{ | |
github.repository }}" }, { "name": "Repository URL", "value": "${{ | |
github.repositoryUrl }}" }, { "name": "Pipeline Status", "value": | |
"Cancelled" }, { "name": "Event", "value": "${{ github.event_name | |
}}" }, { "name": "Result", "value": "${{ steps.release.result }}" }, | |
{ "name": "Conclusion", "value": "${{ steps.release.conclusion }}" | |
}, { "name": "Output", "value": "${{ toJSON(steps.release.outputs) | |
}}" }], "color": 16565273, "timestamp": "${{ | |
github.event.repository.updated_at }}", "url": "${{ | |
github.event.pull_request.html_url || github.event.head_commit.url | |
}}", "footer": { "text": "Click here to see the full workflow | |
details: ${{ github.event.pull_request.html_url || | |
github.event.head_commit.url }}", "icon_url": | |
"https://pub-761b436209f44a4d886487c917806c08.r2.dev/icon-fill.png" | |
} }]' |