name: "release" on: workflow_call: inputs: dry-run-flag: description: 'enable dry-run on artifact push' required: false type: boolean default: true pull_request: types: [closed] branches: - develop - master - develop-patch* - master-patch* concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: false env: BASE_REF: ${{ github.base_ref }} HEAD_REF: ${{ github.head_ref }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} GITHUB_BRANCH: ${{ github.ref_name }} GH_BUILD_DIR: ${{ github.workspace }} GH_COMMIT: ${{ github.sha }} BUILD_ID: ${{ github.run_id }} GH_RUN_NUMBER: ${{ github.run_attempt }} GH_BUILD_NUMBER: ${{ github.run_id }} JOB_ID: ${{ github.run_id }} E2E_ADMIN_EMAIL_IDENTITY: ${{ secrets.E2E_ADMIN_EMAIL_IDENTITY }} E2E_ADMIN_PASSWORD_IDENTITY: ${{ secrets.E2E_ADMIN_PASSWORD_IDENTITY }} LOG_LEVEL: "ERROR" S3_BUILD_BUCKET_SHORT_NAME: ${{ secrets.S3_BUILD_BUCKET_SHORT_NAME }} NODE_OPTIONS: "--max-old-space-size=5120" DOCKER_REPOSITORY_DOMAIN: ${{ secrets.DOCKER_REPOSITORY_DOMAIN }} DOCKER_REPOSITORY_USER: ${{ secrets.DOCKER_REPOSITORY_USER }} DOCKER_REPOSITORY_PASSWORD: ${{ secrets.DOCKER_REPOSITORY_PASSWORD }} DOCKER_REPOSITORY_STORYBOOK: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/storybook" GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} REPO_OWNER: "Alfresco" REPO_NAME: "alfresco-ng2-components" STORYBOOK_DIR: "./dist/storybook/stories" BUILT_LIBS_DIR: "./dist/libs" NODE_MODULES_DIR: "./node_modules" REDIRECT_URI: / jobs: setup: timeout-minutes: 20 if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*' name: "Setup" runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - uses: ./.github/actions/setup with: enable-cache: false enable-node-modules-cache: false - name: install run: | npm ci npx nx run js-api:bundle npx nx run cli:bundle - uses: ./.github/actions/upload-node-modules-and-artifacts release-storybook: needs: [setup] timeout-minutes: 15 if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*' runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 1 - run: git fetch --all - id: set-dryrun uses: ./.github/actions/enable-dryrun with: dry-run-flag: ${{ inputs.dry-run-flag }} - uses: ./.github/actions/setup with: enable-cache: false enable-node-modules-cache: false act: ${{ inputs.dry-run-flag }} - uses: ./.github/actions/download-node-modules-and-artifacts - name: release Storybook docker run: | npx nx run stories:build-storybook --configuration ci . ./scripts/github/release/docker-tag.sh ./scripts/github/release/release-storybook-docker.sh ${{ steps.set-dryrun.outputs.dryrun }} release-npm: needs: [setup] outputs: release_version: ${{ steps.set-version.outputs.release_version }} timeout-minutes: 30 if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*' runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - uses: ./.github/actions/setup with: enable-cache: false enable-node-modules-cache: false - id: set-dryrun uses: ./.github/actions/enable-dryrun with: dry-run-flag: ${{ inputs.dry-run-flag }} - uses: ./.github/actions/download-node-modules-and-artifacts - name: Set libraries versions id: set-version run: | set -u; ./scripts/github/build/bumpversion.sh - name: Set migrations uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const setMigrations = require('./scripts/github/release/set-migrations.js'); setMigrations(); - name: build libraries run: | npx nx run-many -t build --prod --skip-nx-cache npx nx run-many -t build-schematics - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 name: release libraries GH registry with: node-version-file: '.nvmrc' registry-url: 'https://npm.pkg.github.com' scope: '@alfresco' - run: npx nx run-many -t npm-publish --tag=$TAG_NPM || exit 1 env: NODE_AUTH_TOKEN: ${{ secrets.PAT_WRITE_PKG }} - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 name: release libraries Npm registry with: node-version-file: '.nvmrc' registry-url: 'https://${{ vars.NPM_REGISTRY_ADDRESS }}' scope: '@alfresco' - run: npx nx run-many -t npm-publish --tag=$TAG_NPM || exit 1 env: NODE_AUTH_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }} create-git-tag: runs-on: ubuntu-latest needs: [setup, release-npm] name: Create github tag permissions: contents: write steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 1 - uses: './.github/actions/create-git-tag' with: tagName: ${{ needs.release-npm.outputs.release_version }} propagate: needs: [release-npm] if: ${{ contains(toJson(github.event.pull_request.labels.*.name), 'hxp-upstream') }} runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: HxP upstream invoke uses: the-actions-org/workflow-dispatch@3133c5d135c7dbe4be4f9793872b6ef331b53bc7 # v4.0.0 with: repo: Alfresco/hxp-frontend-apps ref: develop workflow: upstream-adf.yml token: ${{ secrets.ALFRESCO_BUILD_GH_TOKEN }} wait-for-completion: false inputs: > { "tag_version": "alpha" } npm-check-bundle: needs: [release-npm] timeout-minutes: 15 if: github.event.pull_request.merged == true || github.ref_name == 'master' || github.ref_name == 'master-patch-*' runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/npm-check-bundle push-translation-keys-to-crowdin: name: Push translations keys to Crowdin if: ${{ github.ref == 'refs/heads/develop' }} runs-on: ubuntu-latest needs: [setup] permissions: contents: read packages: read actions: read steps: - name: Checkout uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Push Source Files to Crowdin uses: crowdin/github-action@9fd07c1c5b36b15f082d1d860dc399f16f849bd7 # v2.9.0 with: upload_sources: true upload_sources_args: --delete-obsolete env: CROWDIN_TOKEN: ${{ secrets.CROWDIN_TRANSLATIONS_TOKEN }} finalize: if: always() runs-on: ubuntu-latest name: Final Results needs: [release-storybook, release-npm, npm-check-bundle] steps: - name: Check job execution status if: >- ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }} run: exit 1