From 827664c217df34a8aadfc378ecc679d365874cd1 Mon Sep 17 00:00:00 2001 From: MichalKinas Date: Wed, 25 Feb 2026 12:49:07 +0100 Subject: [PATCH] Temp fix for release from a branch --- .github/actions/before-install/action.yml | 12 +- .github/actions/set-npm-tag/action.yml | 50 ++++--- .github/actions/setup/action.yml | 24 ++-- .github/workflows/release.yml | 156 +++++++++++++++------- 4 files changed, 146 insertions(+), 96 deletions(-) diff --git a/.github/actions/before-install/action.yml b/.github/actions/before-install/action.yml index c2197103b4..15a8ba7099 100644 --- a/.github/actions/before-install/action.yml +++ b/.github/actions/before-install/action.yml @@ -9,12 +9,6 @@ inputs: runs: using: "composite" steps: - - name: Before install - if: ${{ ! env.ACT }} - shell: bash - run: | - pip install --user --quiet awscli - - name: base vars shell: bash run: | @@ -51,11 +45,13 @@ runs: - name: RELEASE on master/develop patch branch if: ${{ env.BREAK_ACTION == false && github.event.pull_request.merged }} shell: bash + env: + REF_NAME: ${{ github.ref_name }} run: | - if [[ "${{ github.ref_name }}" =~ ^master(-patch.*)?$ ]]; then + if [[ "$REF_NAME" =~ ^master(-patch.*)?$ ]]; then # into master(-patch*) echo "Setting up CI flags for Push on master patch" - elif [[ "${{ github.ref_name }}" =~ ^develop-patch.*$ ]]; then + elif [[ "$REF_NAME" =~ ^develop-patch.*$ ]]; then # into develop-patch* echo "Setting up CI flags for Push develop patch" else diff --git a/.github/actions/set-npm-tag/action.yml b/.github/actions/set-npm-tag/action.yml index 7776148628..cbcc3a2195 100644 --- a/.github/actions/set-npm-tag/action.yml +++ b/.github/actions/set-npm-tag/action.yml @@ -2,36 +2,44 @@ name: "set npm tag" description: "se NPM tag" inputs: - event_name: - description: "override github.event_name" - required: false - default: ${{ github.event_name }} branch_name: description: "override GITHUB_REF_NAME" required: false - default: $GITHUB_REF_NAME + default: ${{ github.ref_name }} + +outputs: + npm-tag: + description: "NPM tag" + value: ${{ steps.set-npm-tag.outputs.npm-tag }} runs: using: "composite" steps: - name: set TAG_NPM + id: set-npm-tag shell: bash + env: + BRANCH_NAME: ${{ inputs.branch_name }} run: | - TAG_NPM="alpha" - VERSION_IN_PACKAGE_JSON=$(node -p "require('./package.json')".version) - echo "version in package.json=${VERSION_IN_PACKAGE_JSON}" - if [[ ${{ inputs.branch_name }} =~ ^master(-patch.*)?$ ]]; then - # Pre-release versions - if [[ $VERSION_IN_PACKAGE_JSON =~ ^[0-9]*\.[0-9]*\.[0-9]*-A\.[0-9]*$ ]]; - then - TAG_NPM=next - # Stable major versions - else - TAG_NPM=latest - fi + if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then + TAG_NPM="branch" + else + TAG_NPM="alpha" + VERSION_IN_PACKAGE_JSON=$(node -p "require('./package.json')".version) + echo "version in package.json=${VERSION_IN_PACKAGE_JSON}" + if [[ $BRANCH_NAME =~ ^master(-patch.*)?$ ]]; then + # Pre-release versions + if [[ $VERSION_IN_PACKAGE_JSON =~ ^[0-9]*\.[0-9]*\.[0-9]*-A\.[0-9]*$ ]]; then + TAG_NPM=next + # Stable major versions + else + TAG_NPM=latest + fi + fi + if [[ $BRANCH_NAME =~ ^develop(-patch.*)?$ ]]; then + TAG_NPM=alpha + fi fi - if [[ ${{ inputs.branch_name }} =~ ^develop(-patch.*)?$ ]]; then - TAG_NPM=alpha - fi - echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV + echo "npm-tag=$TAG_NPM" >> $GITHUB_OUTPUT + echo "Computed tag: $TAG_NPM" diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 6f43ccb5b2..de9c56019c 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -1,11 +1,6 @@ name: 'Setup' description: 'Initialize cache, env var load' inputs: - enable-cache: - description: 'enable caching' - required: false - type: boolean - default: 'true' enable-node-modules-cache: description: 'enable caching for node modules' required: false @@ -16,22 +11,26 @@ inputs: required: false type: boolean default: 'false' +outputs: + npm-tag: + description: 'NPM tag' + value: ${{ steps.set-npm-tag.outputs.npm-tag }} runs: using: "composite" steps: - name: install NPM - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version-file: '.nvmrc' cache-dependency-path: package-lock.json - name: get latest tag sha id: tag-sha - uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@691c1d16c90c88a92d2438a001acdefc0efa7d2a # v8.26.0 + uses: Alfresco/alfresco-build-tools/.github/actions/git-latest-tag@7e6cfc6dc78dd63baf3e7193e85f6a630e46c41e # v15.2.0 # CACHE - name: Node Modules cache id: node-modules-cache if: ${{ inputs.enable-node-modules-cache == 'true' }} - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 + uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3 env: cache-name: node-modules-cache with: @@ -42,15 +41,8 @@ runs: node_modules-${{ runner.os }}-build-${{ env.cache-name }}- node_modules-${{ runner.os }}-build- node_modules-${{ runner.os }}- - - name: pip cache - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 - if: ${{ inputs.enable-cache == 'true' }} - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip- - restore-keys: | - ${{ runner.os }} - name: load "NPM TAG" + id: set-npm-tag uses: ./.github/actions/set-npm-tag - name: before install script uses: ./.github/actions/before-install diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0da492b2a6..3447e3f754 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,13 @@ name: "release" on: + workflow_call: + inputs: + dry-run-flag: + description: 'enable dry-run on artifact push' + required: false + type: boolean + default: true workflow_dispatch: inputs: dry-run-flag: @@ -8,81 +15,70 @@ on: required: false type: boolean default: true - npm-tag: - description: 'NPM tag to use for publishing' - required: false - type: string - default: 'branch' + pull_request: + types: [closed] + branches: + - develop + - master + - develop-patch* + - master-patch* + +permissions: + id-token: write # Required for OIDC + contents: read + +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 }} 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-*' || github.event_name == 'workflow_dispatch' name: "Setup" runs-on: ubuntu-latest steps: - - name: set TAG_NPM BRANCH - shell: bash - run: | - TAG_NPM=${{ inputs.npm-tag }} - echo "Set TAG with name: ${TAG_NPM}" - echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.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 + npm run bundle:js-api + npm run bundle:cli - uses: ./.github/actions/upload-node-modules-and-artifacts 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-*' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest permissions: + id-token: write # Required for OIDC contents: read packages: write steps: - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 - - uses: ./.github/actions/setup + - id: setup + uses: ./.github/actions/setup with: - enable-cache: false enable-node-modules-cache: false - id: set-dryrun uses: ./.github/actions/enable-dryrun @@ -90,44 +86,102 @@ jobs: dry-run-flag: ${{ inputs.dry-run-flag }} - uses: ./.github/actions/download-node-modules-and-artifacts - name: Set libraries versions - if: ${{ inputs.npm-tag == 'branch' }} + id: set-version run: | set -u; - ./scripts/update-version.sh -gnu || exit 1; + ./scripts/github/build/bumpversion.sh - name: Set migrations - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | const setMigrations = require('./scripts/github/release/set-migrations.js'); setMigrations(); - - name: Build libraries + - name: build libraries run: | - npx nx run-many --target=build --prod --skip-nx-cache - npx nx run-many --target=build-schematics - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + npm run build:libs + npm run build:schematics + - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.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 --target=npm-publish --tag=branch|| exit 1 + - run: npm run publish -- --tag=${{ steps.setup.outputs.npm-tag }} env: - NODE_AUTH_TOKEN: ${{ secrets.PAT_WRITE_PKG }} - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.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 --target=npm-publish --tag=branch || exit 1 - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_REGISTRY_TOKEN }} + - run: npm run publish -- --tag=${{ steps.setup.outputs.npm-tag }} + + create-git-tag: + runs-on: ubuntu-latest + needs: [setup, release-npm] + if: github.event_name != 'workflow_dispatch' + name: Create github tag + permissions: + contents: write + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 1 + - uses: './.github/actions/create-git-tag' + with: + tagName: ${{ needs.release-npm.outputs.release_version }} 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-*' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - uses: ./.github/actions/npm-check-bundle + + push-translation-keys-to-crowdin: + name: Push translations keys to Crowdin + if: github.ref_name == 'develop' && github.event_name != 'workflow_dispatch' + runs-on: ubuntu-latest + needs: [setup] + permissions: + contents: read + packages: read + actions: read + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Push Source Files to Crowdin + uses: crowdin/github-action@5587c43063e52090026857d386174d2599ad323b # v2.14.1 + with: + upload_sources: true + upload_sources_args: --delete-obsolete + env: + CROWDIN_TOKEN: ${{ secrets.CROWDIN_TRANSLATIONS_TOKEN }} + + pull-translation-keys-from-crowdin: + needs: push-translation-keys-to-crowdin + name: Run Crowdin pull pipeline for up-to-date sync + uses: ./.github/workflows/pull-from-crowdin.yml + secrets: + BOT_GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} + CROWDIN_TRANSLATIONS_TOKEN: ${{ secrets.CROWDIN_TRANSLATIONS_TOKEN }} + + finalize: + if: always() + runs-on: ubuntu-latest + name: Final Results + needs: [release-npm, npm-check-bundle] + steps: + - name: Check job execution status + if: >- + ${{ + contains(needs.*.result, 'failure') + || contains(needs.*.result, 'cancelled') + }} + run: exit 1