mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-05-12 17:04:46 +00:00
[ACS-7241] Support parallel releases (#4297)
* [ACS-7241] Parallel releases support v1 * [ACS-7241] Add missing needs clauses * [ACS-7241] Proper conditional job check * [ACS-7241] Revert testing changes, namespace fix * [ACS-7241] Add improved conditions
This commit is contained in:
parent
436127edb2
commit
d88bf8ce3e
2
.github/actions/get-image-tag/action.yml
vendored
2
.github/actions/get-image-tag/action.yml
vendored
@ -12,7 +12,7 @@ runs:
|
|||||||
- name: Get docker image tag name
|
- name: Get docker image tag name
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [[ "${{ inputs.branch_name }}" == "master" ]]; then
|
if [[ "${{ inputs.branch_name }}" == "master" ]] || [[ "${{ inputs.branch_name }}" == release/* ]]; then
|
||||||
TAG_VERSION="$(jq -cr '.version' < package.json)"
|
TAG_VERSION="$(jq -cr '.version' < package.json)"
|
||||||
else
|
else
|
||||||
TAG_VERSION="${{ inputs.branch_name }}-${{ github.run_id }}"
|
TAG_VERSION="${{ inputs.branch_name }}-${{ github.run_id }}"
|
||||||
|
2
.github/actions/git-tag/action.yml
vendored
2
.github/actions/git-tag/action.yml
vendored
@ -18,7 +18,7 @@ runs:
|
|||||||
- name: publish tag
|
- name: publish tag
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [[ "${{ inputs.branch_name }}" == "master" ]]; then
|
if [[ "${{ inputs.branch_name }}" == "master" ]] || [[ "${{ inputs.branch_name }}" == release/* ]]; then
|
||||||
VERSION=$(jq -cr '.version' < package.json)
|
VERSION=$(jq -cr '.version' < package.json)
|
||||||
echo "git tag -a ${VERSION} -m ${VERSION}"
|
echo "git tag -a ${VERSION} -m ${VERSION}"
|
||||||
|
|
||||||
|
40
.github/actions/setup/action.yml
vendored
40
.github/actions/setup/action.yml
vendored
@ -1,6 +1,12 @@
|
|||||||
name: "Variables setup"
|
name: "Variables setup"
|
||||||
description: "Variables setup"
|
description: "Variables setup"
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
npm_tag:
|
||||||
|
description: 'NPM tag'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
steps:
|
steps:
|
||||||
@ -17,23 +23,27 @@ runs:
|
|||||||
- name: set TAG_NPM
|
- name: set TAG_NPM
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
TAG_NPM="alpha"
|
if [[ -n "${{ inputs.npm_tag }}" ]]; then
|
||||||
VERSION_IN_PACKAGE_JSON=$(jq -cr '.version' < package.json)
|
TAG_NPM=${{ inputs.npm_tag }}
|
||||||
|
else
|
||||||
|
TAG_NPM="alpha"
|
||||||
|
VERSION_IN_PACKAGE_JSON=$(jq -cr '.version' < package.json)
|
||||||
|
|
||||||
echo "version in package.json=${VERSION_IN_PACKAGE_JSON}"
|
echo "version in package.json=${VERSION_IN_PACKAGE_JSON}"
|
||||||
|
|
||||||
if [[ $BRANCH_NAME =~ ^master(-patch.*)?$ ]]; then
|
if [[ $BRANCH_NAME =~ ^master(-patch.*)?$ ]] || [[ $BRANCH_NAME == release/* ]]; then
|
||||||
# Pre-release versions
|
# Pre-release versions
|
||||||
if [[ $VERSION_IN_PACKAGE_JSON =~ ^[0-9]*\.[0-9]*\.[0-9]*-A\.[0-9]*$ ]];
|
if [[ $VERSION_IN_PACKAGE_JSON =~ ^[0-9]*\.[0-9]*\.[0-9]*-A\.[0-9]*$ ]];
|
||||||
then
|
then
|
||||||
TAG_NPM=next
|
TAG_NPM=next
|
||||||
# Stable major versions
|
# Stable major versions
|
||||||
else
|
else
|
||||||
TAG_NPM=latest
|
TAG_NPM=latest
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $BRANCH_NAME =~ ^develop(-patch.*)?$ ]]; then
|
if [[ $BRANCH_NAME =~ ^develop(-patch.*)?$ ]]; then
|
||||||
TAG_NPM=alpha
|
TAG_NPM=alpha
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV
|
echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV
|
||||||
|
87
.github/workflows/release-branch.yml
vendored
87
.github/workflows/release-branch.yml
vendored
@ -1,87 +0,0 @@
|
|||||||
name: Release ACA libs from branch
|
|
||||||
run-name: Release ACA libs from branch ${{ github.ref_name }}
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
dry-run-flag:
|
|
||||||
description: 'enable dry-run'
|
|
||||||
required: false
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
|
|
||||||
env:
|
|
||||||
BASE_URL: ${{ secrets.PIPELINE_ENV_URL }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint:
|
|
||||||
name: 'lint'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: node
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
cache: 'npm'
|
|
||||||
- run: npm ci
|
|
||||||
- run: npm run affected:lint -- --base=origin/develop
|
|
||||||
- run: npm run stylelint
|
|
||||||
|
|
||||||
unit-tests:
|
|
||||||
needs: [lint]
|
|
||||||
name: "Unit tests: ${{ matrix.unit-tests.name }}"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
unit-tests:
|
|
||||||
- name: "aca-content"
|
|
||||||
- name: "aca-shared"
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: node
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
cache: 'npm'
|
|
||||||
- uses: ./.github/actions/before-install
|
|
||||||
- run: npm ci
|
|
||||||
- run: npm run affected:test -- --browsers=ChromeHeadless --watch=false $TEST_OPTS --base=origin/develop
|
|
||||||
|
|
||||||
publish-libs:
|
|
||||||
needs: [lint, unit-tests]
|
|
||||||
name: "Publish libs to NPM and GitHub registry"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
packages: write
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 2
|
|
||||||
|
|
||||||
- name: Setup node
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version-file: '.nvmrc'
|
|
||||||
cache: 'npm'
|
|
||||||
|
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/get-branch-name@v8.16.0
|
|
||||||
|
|
||||||
- name: publish
|
|
||||||
uses: ./.github/actions/publish-libs
|
|
||||||
with:
|
|
||||||
branch_name: ${{ env.BRANCH_NAME }}
|
|
||||||
github_token: ${{ secrets.BOT_GITHUB_TOKEN }}
|
|
||||||
npm_registry_token: ${{ secrets.NPM_REGISTRY_TOKEN }}
|
|
||||||
npm_tag: 'branch'
|
|
||||||
dry-run: ${{ inputs.dry-run-flag }}
|
|
100
.github/workflows/release.yml
vendored
100
.github/workflows/release.yml
vendored
@ -1,10 +1,36 @@
|
|||||||
name: "Release"
|
name: Release workflow
|
||||||
|
run-name: Release workflow triggered from ${{ github.ref_name }} branch
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
|
publish-to-docker:
|
||||||
|
description: 'Publish to Docker'
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
publish-to-quay:
|
||||||
|
description: 'Publish to Quay'
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
publish-to-npm:
|
||||||
|
description: 'Publish NPM libraries'
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
publish-git-tag:
|
||||||
|
description: 'Publish Git Tag'
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
npm-tag:
|
||||||
|
description: 'NPM tag that libraries will be published with'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
dry-run-release:
|
dry-run-release:
|
||||||
description: 'enable dry-run'
|
description: 'Enable dry-run'
|
||||||
required: false
|
required: false
|
||||||
type: boolean
|
type: boolean
|
||||||
default: true
|
default: true
|
||||||
@ -12,6 +38,7 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- develop
|
- develop
|
||||||
|
- release/**
|
||||||
|
|
||||||
env:
|
env:
|
||||||
BASE_URL: ${{ secrets.PIPELINE_ENV_URL }}
|
BASE_URL: ${{ secrets.PIPELINE_ENV_URL }}
|
||||||
@ -20,7 +47,56 @@ env:
|
|||||||
PLAYWRIGHT_E2E_HOST: ${{ secrets.PLAYWRIGHT_E2E_HOST }}
|
PLAYWRIGHT_E2E_HOST: ${{ secrets.PLAYWRIGHT_E2E_HOST }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
lint:
|
||||||
|
if: github.event_name == 'workflow_dispatch'
|
||||||
|
name: 'lint'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'npm'
|
||||||
|
- run: npm ci
|
||||||
|
- run: npm run affected:lint -- --base=origin/develop
|
||||||
|
- run: npm run stylelint
|
||||||
|
|
||||||
|
unit-tests:
|
||||||
|
if: github.event_name == 'workflow_dispatch'
|
||||||
|
needs: [lint]
|
||||||
|
name: "Unit tests: ${{ matrix.unit-tests.name }}"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
unit-tests:
|
||||||
|
- name: "aca-content"
|
||||||
|
- name: "aca-shared"
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: '.nvmrc'
|
||||||
|
cache: 'npm'
|
||||||
|
- uses: ./.github/actions/before-install
|
||||||
|
- run: npm ci
|
||||||
|
- run: npm run affected:test -- --browsers=ChromeHeadless --watch=false $TEST_OPTS --base=origin/develop
|
||||||
|
|
||||||
publish-docker-registry:
|
publish-docker-registry:
|
||||||
|
if: |
|
||||||
|
always() &&
|
||||||
|
(${{ inputs.publish-to-quay == 'true' }} && (needs.unit-tests.result == 'success' || needs.unit-tests.result == 'skipped'))
|
||||||
|
needs: [lint, unit-tests]
|
||||||
name: "Publish to Quay"
|
name: "Publish to Quay"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
@ -34,6 +110,8 @@ jobs:
|
|||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
- uses: ./.github/actions/setup
|
- uses: ./.github/actions/setup
|
||||||
|
with:
|
||||||
|
npm_tag: ${{ inputs.npm-tag }}
|
||||||
|
|
||||||
- name: Get Tag
|
- name: Get Tag
|
||||||
uses: ./.github/actions/get-image-tag
|
uses: ./.github/actions/get-image-tag
|
||||||
@ -50,6 +128,10 @@ jobs:
|
|||||||
dry-run: ${{ inputs.dry-run-release }}
|
dry-run: ${{ inputs.dry-run-release }}
|
||||||
|
|
||||||
publish-to-dockerhub:
|
publish-to-dockerhub:
|
||||||
|
if: |
|
||||||
|
always() &&
|
||||||
|
(${{ inputs.publish-to-docker == 'true' }} && (needs.unit-tests.result == 'success' || needs.unit-tests.result == 'skipped'))
|
||||||
|
needs: [lint, unit-tests]
|
||||||
name: "Publish to Dockerhub"
|
name: "Publish to Dockerhub"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
@ -63,6 +145,8 @@ jobs:
|
|||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
- uses: ./.github/actions/setup
|
- uses: ./.github/actions/setup
|
||||||
|
with:
|
||||||
|
npm_tag: ${{ inputs.npm-tag }}
|
||||||
|
|
||||||
- name: Get Tag
|
- name: Get Tag
|
||||||
uses: ./.github/actions/get-image-tag
|
uses: ./.github/actions/get-image-tag
|
||||||
@ -79,6 +163,10 @@ jobs:
|
|||||||
dry-run: ${{ inputs.dry-run-release }}
|
dry-run: ${{ inputs.dry-run-release }}
|
||||||
|
|
||||||
publish-git-tag:
|
publish-git-tag:
|
||||||
|
if: |
|
||||||
|
always() &&
|
||||||
|
(${{ inputs.publish-git-tag == 'true' }} && (needs.unit-tests.result == 'success' || needs.unit-tests.result == 'skipped'))
|
||||||
|
needs: [lint, unit-tests]
|
||||||
name: "Publish Git Tag"
|
name: "Publish Git Tag"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
@ -92,6 +180,8 @@ jobs:
|
|||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
- uses: ./.github/actions/setup
|
- uses: ./.github/actions/setup
|
||||||
|
with:
|
||||||
|
npm_tag: ${{ inputs.npm-tag }}
|
||||||
- uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v8.16.0
|
- uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v8.16.0
|
||||||
with:
|
with:
|
||||||
username: ${{ vars.BOT_GITHUB_USERNAME }}
|
username: ${{ vars.BOT_GITHUB_USERNAME }}
|
||||||
@ -105,6 +195,10 @@ jobs:
|
|||||||
dry-run: ${{ inputs.dry-run-release }}
|
dry-run: ${{ inputs.dry-run-release }}
|
||||||
|
|
||||||
publish-libs:
|
publish-libs:
|
||||||
|
if: |
|
||||||
|
always() &&
|
||||||
|
(${{ inputs.publish-to-npm == 'true' }} && (needs.unit-tests.result == 'success' || needs.unit-tests.result == 'skipped'))
|
||||||
|
needs: [lint, unit-tests]
|
||||||
name: "Publish libs to NPM and GitHub registry"
|
name: "Publish libs to NPM and GitHub registry"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
@ -122,6 +216,8 @@ jobs:
|
|||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
|
|
||||||
- uses: ./.github/actions/setup
|
- uses: ./.github/actions/setup
|
||||||
|
with:
|
||||||
|
npm_tag: ${{ inputs.npm-tag }}
|
||||||
|
|
||||||
- name: publish
|
- name: publish
|
||||||
uses: ./.github/actions/publish-libs
|
uses: ./.github/actions/publish-libs
|
||||||
|
Loading…
x
Reference in New Issue
Block a user