Merge pull request #5979 from signalco-io/renovate/storybook-monorepo #2505
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
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json | |
name: 'CI' | |
on: | |
pull_request: | |
paths: | |
- 'web/**' | |
- 'cloud/**' | |
- 'infra/**' | |
- "station/**" | |
- '.github/workflows/ci.yml' | |
- '.github/workflows/web-nextjs_ci_reusable.yml' | |
- '.github/workflows/cloud-deploy-preview_reusable.yml' | |
- '.github/workflows/web-vercel-deploy_reusable.yml' | |
push: | |
branches: | |
- main | |
- next | |
paths: | |
- 'web/**' | |
- 'cloud/**' | |
- 'infra/**' | |
- "station/**" | |
- '.github/workflows/ci.yml' | |
- '.github/workflows/web-nextjs_ci_reusable.yml' | |
- '.github/workflows/cloud-deploy-preview_reusable.yml' | |
- '.github/workflows/web-vercel-deploy_reusable.yml' | |
workflow_dispatch: | |
jobs: | |
changes: | |
name: "Detect changes" | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: read | |
contents: read | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: | | |
infrastructure: | |
- cloud/** | |
- infra/** | |
- .github/workflows/ci.yml | |
- .github/workflows/cloud-deploy-preview_reusable.yml | |
web: | |
- web/** | |
- .github/workflows/ci.yml | |
- .github/workflows/web-nextjs_ci_reusable.yml | |
- .github/workflows/web-vercel-deploy_reusable.yml | |
station: | |
- station/** | |
- .github/workflows/ci.yml | |
app_app: | |
- web/apps/app/** | |
- web/packages/** | |
app_web: | |
- web/apps/web/** | |
- web/packages/** | |
app_brandgrab: | |
- web/apps/brandgrab/** | |
- web/packages/** | |
app_blog: | |
- web/apps/blog/** | |
- web/packages/** | |
app_slco: | |
- web/apps/slco/** | |
- web/packages/** | |
app_doprocess: | |
- web/apps/doprocess/** | |
- web/packages/** | |
app_ui_docs: | |
- web/apps/ui-docs/** | |
- web/packages/** | |
app_uier: | |
- web/apps/uier/** | |
- web/packages/** | |
app_workingparty: | |
- web/apps/workingparty/** | |
- web/packages/** | |
outputs: | |
infra: ${{ steps.filter.outputs.infrastructure }} | |
web: ${{ steps.filter.outputs.web }} | |
station: ${{ steps.filter.outputs.station }} | |
app_app: ${{ steps.filter.outputs.app_app }} | |
app_web: ${{ steps.filter.outputs.app_web }} | |
app_brandgrab: ${{ steps.filter.outputs.app_brandgrab }} | |
app_blog: ${{ steps.filter.outputs.app_blog }} | |
app_slco: ${{ steps.filter.outputs.app_slco }} | |
app_doprocess: ${{ steps.filter.outputs.app_doprocess }} | |
app_ui_docs: ${{ steps.filter.outputs.app_ui_docs }} | |
app_uier: ${{ steps.filter.outputs.app_uier }} | |
app_workingparty: ${{ steps.filter.outputs.app_workingparty }} | |
station_ci: | |
strategy: | |
matrix: | |
kind: ["arm-x64", "windows-x64"] | |
include: | |
- kind: arm-x64 | |
os: ubuntu-latest | |
target: linux-arm64 | |
- kind: windows-x64 | |
os: ubuntu-latest | |
target: win-x64 | |
runs-on: ${{ matrix.os }} | |
needs: changes | |
if: success() && github.event_name == 'pull_request' && needs.changes.outputs.station == 'true' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 8.0.x | |
- name: Build | |
shell: bash | |
run: | | |
dotnet build ./Signal.Beacon.WorkerService/Signal.Beacon.csproj -r "${{ matrix.target }}" --self-contained true | |
working-directory: ./station | |
cloud_infra_preview: | |
name: "Cloud Primary infrastructure (preview)" | |
uses: ./.github/workflows/infra-deploy_reusable.yml | |
needs: changes | |
if: success() && github.event_name == 'pull_request' && needs.changes.outputs.infra == 'true' | |
with: | |
project: "cloud-primary" | |
packageName: "@infra/cloud-primary" | |
baseRef: ${{ github.base_ref }} | |
command: "preview" | |
secrets: inherit | |
uier_infra_preview: | |
name: "uier infrastructure (preview)" | |
uses: ./.github/workflows/infra-deploy_reusable.yml | |
needs: changes | |
if: success() && github.event_name == 'pull_request' && needs.changes.outputs.infra == 'true' | |
with: | |
project: "uier" | |
packageName: "@infra/uier" | |
baseRef: ${{ github.base_ref }} | |
command: "preview" | |
secrets: inherit | |
workingparty_infra_preview: | |
name: "WorkingParty infrastructure (preview)" | |
uses: ./.github/workflows/infra-deploy_reusable.yml | |
needs: changes | |
if: success() && github.event_name == 'pull_request' && needs.changes.outputs.infra == 'true' | |
with: | |
project: "workingparty" | |
packageName: "@infra/workingparty" | |
baseRef: ${{ github.base_ref }} | |
command: "preview" | |
secrets: inherit | |
doprocess_infra_preview: | |
name: "DoProcess infrastructure (preview)" | |
uses: ./.github/workflows/infra-deploy_reusable.yml | |
needs: changes | |
if: success() && github.event_name == 'pull_request' && needs.changes.outputs.infra == 'true' | |
with: | |
project: "doprocess" | |
packageName: "@infra/doprocess" | |
baseRef: ${{ github.base_ref }} | |
command: "preview" | |
secrets: inherit | |
analyze_blog: | |
name: "Blog (analysis)" | |
needs: changes | |
if: success() && needs.changes.outputs.web == 'true' && needs.changes.outputs.app_blog == 'true' | |
uses: ./.github/workflows/web-nextjs_ci_reusable.yml | |
with: | |
workflowName: 'ci.yml' | |
name: 'blog' | |
path: 'web/apps/blog' | |
vercelProjectId: 'prj_VT7qOjkcEvkAsZH7MtSxWcVDWVpr' | |
secrets: inherit | |
deploy_blog: | |
name: "Blog (preview)" | |
needs: analyze_blog | |
if: ${{ success() }} | |
uses: ./.github/workflows/web-vercel-deploy_reusable.yml | |
with: | |
name: 'blog' | |
path: 'web/apps/blog' | |
vercelProjectId: 'prj_VT7qOjkcEvkAsZH7MtSxWcVDWVpr' | |
secrets: inherit | |
analyze_app: | |
name: "App (analysis)" | |
needs: changes | |
if: success() && needs.changes.outputs.web == 'true' && needs.changes.outputs.app_app == 'true' | |
uses: ./.github/workflows/web-nextjs_ci_reusable.yml | |
with: | |
workflowName: 'ci.yml' | |
name: 'app' | |
path: 'web/apps/app' | |
vercelProjectId: 'prj_q8N5ElZfzvq4BjEMBIsyEfqe4jsI' | |
secrets: inherit | |
deploy_app: | |
name: "App (preview)" | |
needs: analyze_app | |
if: ${{ success() }} | |
uses: ./.github/workflows/web-vercel-deploy_reusable.yml | |
with: | |
name: 'app' | |
path: 'web/apps/app' | |
vercelProjectId: 'prj_q8N5ElZfzvq4BjEMBIsyEfqe4jsI' | |
secrets: inherit | |
analyze_brandgrab: | |
name: "BrandGrab (analysis)" | |
needs: changes | |
if: success() && needs.changes.outputs.web == 'true' && needs.changes.outputs.app_brandgrab == 'true' | |
uses: ./.github/workflows/web-nextjs_ci_reusable.yml | |
with: | |
workflowName: 'ci.yml' | |
name: 'brandgrab' | |
path: 'web/apps/brandgrab' | |
vercelProjectId: 'prj_QHQO9V4WwYqlcpXNufZ4SU3Ryftx' | |
secrets: inherit | |
deploy_brandgrab: | |
name: "BrandGrab (preview)" | |
needs: analyze_brandgrab | |
if: ${{ success() }} | |
uses: ./.github/workflows/web-vercel-deploy_reusable.yml | |
with: | |
name: 'brandgrab' | |
path: 'web/apps/brandgrab' | |
vercelProjectId: 'prj_QHQO9V4WwYqlcpXNufZ4SU3Ryftx' | |
secrets: inherit | |
analyze_web: | |
name: "Web (analysis)" | |
needs: changes | |
if: success() && needs.changes.outputs.web == 'true' && needs.changes.outputs.app_web == 'true' | |
uses: ./.github/workflows/web-nextjs_ci_reusable.yml | |
with: | |
workflowName: 'ci.yml' | |
name: 'web' | |
path: 'web/apps/web' | |
vercelProjectId: 'prj_PYE8WwpynTfjD6rVMiCp7sZoCPYw' | |
secrets: inherit | |
deploy_web: | |
name: "Web (preview)" | |
needs: analyze_web | |
if: ${{ success() }} | |
uses: ./.github/workflows/web-vercel-deploy_reusable.yml | |
with: | |
name: 'web' | |
path: 'web/apps/web' | |
vercelProjectId: 'prj_PYE8WwpynTfjD6rVMiCp7sZoCPYw' | |
secrets: inherit | |
analyze_slco: | |
name: "slco (analysis)" | |
needs: changes | |
if: success() && needs.changes.outputs.web == 'true' && needs.changes.outputs.app_slco == 'true' | |
uses: ./.github/workflows/web-nextjs_ci_reusable.yml | |
with: | |
workflowName: 'ci.yml' | |
name: 'slco' | |
path: 'web/apps/slco' | |
vercelProjectId: 'prj_GNETZANB7evyT5coH7gptur1G1sN' | |
secrets: inherit | |
deploy_slco: | |
name: "slco (preview)" | |
needs: analyze_slco | |
if: ${{ success() }} | |
uses: ./.github/workflows/web-vercel-deploy_reusable.yml | |
with: | |
name: 'slco' | |
path: 'web/apps/slco' | |
vercelProjectId: 'prj_GNETZANB7evyT5coH7gptur1G1sN' | |
secrets: inherit | |
analyze_doprocess: | |
name: "doprocess (analysis)" | |
needs: changes | |
if: success() && needs.changes.outputs.web == 'true' && needs.changes.outputs.app_doprocess == 'true' | |
uses: ./.github/workflows/web-nextjs_ci_reusable.yml | |
with: | |
workflowName: 'ci.yml' | |
name: 'doprocess' | |
path: 'web/apps/doprocess' | |
vercelProjectId: 'prj_UoJ8CHr3RAlOya6A9fpJ4oKzQhCJ' | |
secrets: inherit | |
deploy_doprocess: | |
name: "doprocess (preview)" | |
needs: analyze_doprocess | |
if: ${{ success() }} | |
uses: ./.github/workflows/web-vercel-deploy_reusable.yml | |
with: | |
name: 'doprocess' | |
path: 'web/apps/doprocess' | |
vercelProjectId: 'prj_UoJ8CHr3RAlOya6A9fpJ4oKzQhCJ' | |
secrets: inherit | |
deploy_uidocs: | |
name: "ui-docs (preview)" | |
needs: changes | |
if: success() && needs.changes.outputs.web == 'true' && needs.changes.outputs.app_ui_docs == 'true' | |
uses: ./.github/workflows/web-vercel-deploy_reusable.yml | |
with: | |
name: 'ui-docs' | |
path: 'web/apps/ui-docs' | |
vercelProjectId: 'prj_JTG4EUX7sXFIbDmgRxaNarffnq9E' | |
secrets: inherit | |
analyze_uier: | |
name: "uier (analysis)" | |
needs: changes | |
if: success() && needs.changes.outputs.web == 'true' && needs.changes.outputs.app_uier == 'true' | |
uses: ./.github/workflows/web-nextjs_ci_reusable.yml | |
with: | |
workflowName: 'ci.yml' | |
name: 'uier' | |
path: 'web/apps/uier' | |
vercelProjectId: 'prj_0uRTXTGHFdN9SlHnFfNiahIgX3mc' | |
secrets: inherit | |
deploy_uier: | |
name: "uier (preview)" | |
needs: analyze_uier | |
if: ${{ success() }} | |
uses: ./.github/workflows/web-vercel-deploy_reusable.yml | |
with: | |
name: 'uier' | |
path: 'web/apps/uier' | |
vercelProjectId: 'prj_0uRTXTGHFdN9SlHnFfNiahIgX3mc' | |
secrets: inherit | |
analyze_workingparty: | |
name: "WorkingParty (analysis)" | |
needs: changes | |
if: success() && needs.changes.outputs.web == 'true' && needs.changes.outputs.app_workingparty == 'true' | |
uses: ./.github/workflows/web-nextjs_ci_reusable.yml | |
with: | |
workflowName: 'ci.yml' | |
name: 'workingparty' | |
path: 'web/apps/workingparty' | |
vercelProjectId: 'prj_0uRTXTGHFdN9SlHnFfNiahIgX3mc' | |
secrets: inherit | |
deploy_workingparty: | |
name: "WorkingParty (preview)" | |
needs: analyze_workingparty | |
if: ${{ success() }} | |
uses: ./.github/workflows/web-vercel-deploy_reusable.yml | |
with: | |
name: 'workingparty' | |
path: 'web/apps/workingparty' | |
vercelProjectId: 'prj_0uRTXTGHFdN9SlHnFfNiahIgX3mc' | |
secrets: inherit | |
ci_ok: | |
name: "[CI] OK" | |
needs: [station_ci, cloud_infra_preview, doprocess_infra_preview, uier_infra_preview, workingparty_infra_preview, deploy_blog, deploy_app, deploy_brandgrab, deploy_web, deploy_slco, deploy_doprocess, deploy_uidocs, deploy_uier, deploy_workingparty] | |
if: ${{ always() }} | |
runs-on: ubuntu-latest | |
steps: | |
- run: exit 1 | |
if: ${{ always() && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }} |