feat: Add proton calendar #24548
Workflow file for this run
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 Update | |
on: | |
pull_request_target: | |
branches: | |
- main | |
- gh-actions-test-branch | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
changes: | |
name: Detect changes | |
runs-on: buildjet-2vcpu-ubuntu-2204 | |
permissions: | |
pull-requests: read | |
outputs: | |
has-files-requiring-all-checks: ${{ steps.filter.outputs.has-files-requiring-all-checks }} | |
commit-sha: ${{ steps.get_sha.outputs.commit-sha }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/dangerous-git-checkout | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: | | |
has-files-requiring-all-checks: | |
- "!(**.md|.github/CODEOWNERS)" | |
- name: Get Latest Commit SHA | |
id: get_sha | |
run: | | |
echo "commit-sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT | |
check-label: | |
needs: [changes] | |
runs-on: buildjet-2vcpu-ubuntu-2204 | |
name: Check for E2E label | |
outputs: | |
run-e2e: ${{ steps.check-if-pr-has-label.outputs.run-e2e == 'true' && (github.event.action != 'labeled' || (github.event.action == 'labeled' && github.event.label.name == 'ready-for-e2e')) }} | |
steps: | |
- name: Check if PR exists with ready-for-e2e label for this SHA | |
id: check-if-pr-has-label | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
let labels = []; | |
if (context.payload.pull_request) { | |
labels = context.payload.pull_request.labels; | |
} else { | |
try { | |
const sha = '${{ needs.changes.outputs.commit-sha }}'; | |
console.log('sha', sha); | |
const { data: prs } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
commit_sha: sha | |
}); | |
if (prs.length === 0) { | |
core.setOutput('run-e2e', false); | |
console.log(`No pull requests found for commit SHA ${sha}`); | |
return; | |
} | |
const pr = prs[0]; | |
console.log(`PR number: ${pr.number}`); | |
console.log(`PR title: ${pr.title}`); | |
console.log(`PR state: ${pr.state}`); | |
console.log(`PR URL: ${pr.html_url}`); | |
labels = pr.labels; | |
} | |
catch (e) { | |
core.setOutput('run-e2e', false); | |
console.log(e); | |
} | |
} | |
const labelFound = labels.map(l => l.name).includes('ready-for-e2e'); | |
console.log('Found the label?', labelFound); | |
core.setOutput('run-e2e', labelFound); | |
type-check: | |
name: Type check | |
needs: [changes, check-label] | |
if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/check-types.yml | |
secrets: inherit | |
lint: | |
name: Linters | |
needs: [changes, check-label] | |
if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/lint.yml | |
secrets: inherit | |
unit-test: | |
name: Tests | |
needs: [changes, check-label] | |
if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/unit-tests.yml | |
secrets: inherit | |
build-api-v1: | |
name: Production builds | |
needs: [changes, check-label] | |
if: ${{ needs.check-label.outputs.run-e2e == 'true' && needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/api-v1-production-build.yml | |
secrets: inherit | |
build-api-v2: | |
name: Production builds | |
needs: [changes, check-label] | |
if: ${{ needs.check-label.outputs.run-e2e == 'true' && needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/api-v2-production-build.yml | |
secrets: inherit | |
build: | |
name: Production builds | |
needs: [changes, check-label] | |
if: ${{ needs.check-label.outputs.run-e2e == 'true' && needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/production-build-without-database.yml | |
secrets: inherit | |
integration-test: | |
name: Tests | |
needs: [changes, check-label, build, build-api-v1, build-api-v2] | |
if: ${{ needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/integration-tests.yml | |
secrets: inherit | |
e2e: | |
name: Tests | |
needs: [changes, check-label, build, build-api-v1, build-api-v2] | |
if: ${{ needs.check-label.outputs.run-e2e == 'true' && needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/e2e.yml | |
secrets: inherit | |
e2e-app-store: | |
name: Tests | |
needs: [changes, check-label, build, build-api-v1, build-api-v2] | |
if: ${{ needs.check-label.outputs.run-e2e == 'true' && needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/e2e-app-store.yml | |
secrets: inherit | |
e2e-embed: | |
name: Tests | |
needs: [changes, check-label, build, build-api-v1, build-api-v2] | |
if: ${{ needs.check-label.outputs.run-e2e == 'true' && needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/e2e-embed.yml | |
secrets: inherit | |
e2e-embed-react: | |
name: Tests | |
needs: [changes, check-label, build, build-api-v1, build-api-v2] | |
if: ${{ needs.check-label.outputs.run-e2e == 'true' && needs.changes.outputs.has-files-requiring-all-checks == 'true' }} | |
uses: ./.github/workflows/e2e-embed-react.yml | |
secrets: inherit | |
analyze: | |
name: Analyze Build | |
needs: [build] | |
uses: ./.github/workflows/nextjs-bundle-analysis.yml | |
secrets: inherit | |
required: | |
needs: [changes, lint, type-check, unit-test, integration-test, check-label, build, build-api-v1, build-api-v2, e2e, e2e-embed, e2e-embed-react, e2e-app-store] | |
runs-on: buildjet-2vcpu-ubuntu-2204 | |
steps: | |
- name: fail if conditional jobs failed | |
if: needs.changes.outputs.has-files-requiring-all-checks == 'true' && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'skipped') || contains(needs.*.result, 'cancelled')) | |
run: exit 1 |