feat(tooling-ci): Improved explorer release process #5992
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: Hierarchy | ||
on: | ||
push: | ||
branches: | ||
- "develop" | ||
- "devnet" | ||
- "testnet" | ||
- "mainnet" | ||
- "releases/iota-*-release" | ||
pull_request: | ||
types: [opened, synchronize, reopened, ready_for_review] | ||
jobs: | ||
diff: | ||
runs-on: [self-hosted] | ||
concurrency: | ||
group: diff-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | ||
cancel-in-progress: ${{ github.ref != 'refs/heads/develop' }} | ||
outputs: | ||
isRust: ${{ steps.diff.outputs.isRust }} | ||
isMove: ${{ steps.diff.outputs.isMove }} | ||
isDoc: ${{ steps.diff.outputs.isDoc }} | ||
isReleaseNotesEligible: ${{ steps.diff.outputs.isReleaseNotesEligible }} | ||
isWallet: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), 'iota-wallet')) }} | ||
isExplorer: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), 'iota-explorer')) }} | ||
isTypescriptSDK: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), '@iota/iota-sdk')) }} | ||
isAppsBackend: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), 'apps-backend')) }} | ||
isAppsUiKit: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), '@iota/apps-ui-kit')) }} | ||
isWalletDashboard: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), 'wallet-dashboard')) }} | ||
isGraphQlTransport: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), '@iota/graphql-transport')) }} | ||
isLedgerjs: ${{ (steps.turbo.outputs.packages && contains(fromJson(steps.turbo.outputs.packages), '@iota/ledgerjs-hw-app-iota')) }} | ||
steps: | ||
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4 | ||
- name: Detect Changes (turbo) | ||
uses: "./.github/actions/turbo-diffs" | ||
id: turbo | ||
- name: Detect Changes (diff) | ||
uses: "./.github/actions/diffs" | ||
Check failure on line 39 in .github/workflows/hierarchy.yml GitHub Actions / HierarchyInvalid workflow file
|
||
id: diff | ||
dprint-format: | ||
runs-on: [self-hosted] | ||
concurrency: | ||
group: dprint-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | ||
cancel-in-progress: true | ||
steps: | ||
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4 | ||
- name: Check dprint formatting | ||
run: dprint check | ||
typos: | ||
uses: ./.github/workflows/_typos.yml | ||
license-check: | ||
name: license-check | ||
concurrency: | ||
group: license-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | ||
cancel-in-progress: true | ||
needs: diff | ||
if: (!cancelled() && needs.diff.outputs.isRust == 'true') | ||
runs-on: [self-hosted] | ||
steps: | ||
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4 | ||
- name: Run license check | ||
run: cargo ci-license | ||
docusaurus: | ||
needs: diff | ||
if: (!cancelled() && needs.diff.outputs.isDoc == 'true' && !github.event.pull_request.draft) | ||
uses: ./.github/workflows/_docusaurus.yml | ||
docs-lint: | ||
needs: diff | ||
if: (!cancelled() && needs.diff.outputs.isDoc == 'true') | ||
uses: ./.github/workflows/_docs_lint.yml | ||
release-notes-description-check: | ||
name: release-notes-check | ||
concurrency: | ||
group: release-notes-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | ||
cancel-in-progress: true | ||
needs: diff | ||
if: (!cancelled() && needs.diff.outputs.isReleaseNotesEligible == 'true') | ||
runs-on: [self-hosted] | ||
steps: | ||
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4 | ||
- name: Check Pull Request Description | ||
shell: bash | ||
run: | | ||
export PR_NUMBER=$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH") | ||
export DESCRIPTION=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ | ||
"https://api.github.com/repos/iotaledger/iota/pulls/${PR_NUMBER}" \ | ||
| jq --raw-output .body) | ||
if [[ "${DESCRIPTION}" == *"[x]"* ]]; then | ||
if [[ "${DESCRIPTION}" =~ Release[[:space:]]notes[[:space:]]+.* ]]; then | ||
exit 0 | ||
else | ||
echo "At least one '[x]' was checked under 'Type of Change (Check all that apply)', you need to add a blob under the 'Release Notes' section." | ||
exit 1 | ||
fi | ||
fi | ||
turborepo: | ||
needs: | ||
- dprint-format | ||
- typos | ||
uses: ./.github/workflows/_turborepo.yml | ||
move-tests: | ||
needs: | ||
- diff | ||
- dprint-format | ||
- license-check | ||
- typos | ||
if: | | ||
!cancelled() && !failure() && | ||
needs.diff.outputs.isRust == 'false' && | ||
needs.diff.outputs.isMove == 'true' && | ||
github.event.pull_request.draft == false | ||
uses: ./.github/workflows/_move_tests.yml | ||
rust: | ||
needs: | ||
- diff | ||
- dprint-format | ||
- license-check | ||
- typos | ||
if: (!cancelled() && !failure()) | ||
uses: ./.github/workflows/_rust.yml | ||
secrets: inherit | ||
with: | ||
isRust: ${{ needs.diff.outputs.isRust == 'true' }} | ||
e2e: | ||
if: (!cancelled() && !failure() && (!github.event.pull_request.draft || github.ref_name == 'develop')) | ||
needs: | ||
- diff | ||
- dprint-format | ||
- license-check | ||
- typos | ||
uses: ./.github/workflows/_e2e.yml | ||
with: | ||
isRust: ${{ needs.diff.outputs.isRust == 'true' }} | ||
isWallet: ${{ needs.diff.outputs.isWallet == 'true' }} | ||
isExplorer: ${{ needs.diff.outputs.isExplorer == 'true' }} | ||
isTypescriptSDK: ${{ needs.diff.outputs.isTypescriptSDK == 'true' }} | ||
isGraphQlTransport: ${{ needs.diff.outputs.isGraphQlTransport == 'true' }} | ||
isDevelop: ${{ github.ref_name == 'develop' }} | ||
vercel-deploy: | ||
if: (!cancelled() && !failure()) | ||
needs: | ||
- diff | ||
- dprint-format | ||
- license-check | ||
- typos | ||
uses: ./.github/workflows/_vercel_deploy.yml | ||
secrets: inherit | ||
with: | ||
shouldDeployPreview: ${{github.event_name == 'pull_request' && github.event.pull_request.draft == false}} | ||
isExplorer: ${{ needs.diff.outputs.isExplorer == 'true' }} | ||
isTypescriptSDK: ${{ needs.diff.outputs.isTypescriptSDK == 'true' }} | ||
isAppsBackend: ${{ needs.diff.outputs.isAppsBackend == 'true' }} | ||
isAppsUiKit: ${{ needs.diff.outputs.isAppsUiKit == 'true' }} | ||
isWalletDashboard: ${{ needs.diff.outputs.isWalletDashboard == 'true' }} | ||
isDevelop: ${{ github.ref_name == 'develop' }} | ||
githubRef: ${{ github.event.pull_request.number || github.ref }} | ||
ledgernano: | ||
if: (!cancelled() && !failure()) && needs.diff.outputs.isLedgerjs == 'true' && github.event.pull_request.draft == false | ||
needs: | ||
- diff | ||
- dprint-format | ||
- license-check | ||
- typos | ||
uses: ./.github/workflows/_ledgernano.yml | ||
secrets: inherit |