Skip to content

Commit

Permalink
[ACA-4653] Migrate release workflow to GHA (#3027)
Browse files Browse the repository at this point in the history
* [ACA-4653] Run ACA upstream on schedule

* [ACA-4653] Migrate release workflow to GHA

* [ACA-4653] Consistency in naming

* [ACA-4653] Use GH action to configure GH author

* [ACA-4653] Dedicated sh for publish Docker image job

* [ACA-4653] Add missing variables

* [ACA-4653] Delete Travis.yml

* [ACA-4653] CR fixes

* [ACA-4653] Add branch name as action input

* [ACA-4653] Proper env var usage in workflow
  • Loading branch information
MichalKinas committed Mar 3, 2023
1 parent 3294606 commit e38e72a
Show file tree
Hide file tree
Showing 10 changed files with 394 additions and 129 deletions.
16 changes: 2 additions & 14 deletions .github/actions/before-install/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,17 @@ runs:
using: "composite"
steps:
- uses: Alfresco/alfresco-build-tools/.github/actions/get-commit-message@v1.35.0
- name: setup variables
shell: bash
run: |
echo "BUILD_OPTS=--configuration=production,e2e" >> $GITHUB_ENV
echo "TEST_OPTS=" >> $GITHUB_ENV
echo "E2E_PROTRACTOR_OPTS=" >> $GITHUB_ENV
echo "E2E_TSCONFIG=tsconfig.e2e.json" >> $GITHUB_ENV
echo "GIT_HASH=$(git rev-parse HEAD)" >> $GITHUB_ENV
echo "SMART_RUNNER_DIRECTORY=.protractor-smartrunner" >> $GITHUB_ENV
echo "BASE_HASH=.protractor-smartrunner" >> $GITHUB_ENV
echo "HEAD_HASH=HEAD" >> $GITHUB_ENV
- uses: ./.github/actions/setup
- name: setup S3 caching
shell: bash
run: |
S3_DBP_PATH="s3://alfresco-travis-builds/aca"
if [ "${{ github.event_name }}" == "push" ]; then
BRANCH_NAME=${GITHUB_REF##*/}
S3_DBP_ROOT_FOLDER="$S3_DBP_PATH/$BRANCH_NAME"
elif [ "${{ github.event_name }}" == "pull_request" ]; then
BRANCH_NAME=${GITHUB_BASE_REF}
S3_DBP_ROOT_FOLDER="$S3_DBP_PATH/$BRANCH_NAME"
echo "BASE_HASH=origin/$BRANCH_NAME" >> $GITHUB_ENV
elif [ "${TRAVIS_EVENT_TYPE}" == "schedule" ]; then
elif [ "${{ github.event_name }}" == "schedule" ]; then
S3_DBP_ROOT_FOLDER="$S3_DBP_PATH/cron"
else
S3_DBP_ROOT_FOLDER="$S3_DBP_PATH/api"
Expand Down
35 changes: 35 additions & 0 deletions .github/actions/git-tag/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: "Publish GitHub Tag"
description: "Publish GitHub Tag"

inputs:
github_token:
description: 'Github token'
required: true
type: string
branch_name:
description: 'Name of the branch the workflow runs on'
required: true
type: string
dry-run:
description: dry run flag
required: true
type: boolean

runs:
using: "composite"
steps:
- name: publish tag
shell: bash
run: |
if [[ ${{ inputs.branch_name }} == "master" ]]; then
VERSION=$(grep -m1 version package.json | awk '{ print $2 }' | sed 's/[", ]//g')
fi;
echo "git tag -a ${VERSION} -m ${VERSION}"
if [[ ${{ inputs.dry-run }} == false ]]; then
git tag -a ${VERSION} -m "${VERSION} [ci skip] "
git remote rm origin
GITHUB_REPO=https://${{ inputs.github_token }}:x-oauth-basic@github.com/Alfresco/alfresco-content-app.git
git remote add origin $GITHUB_REPO
git push origin --tags
fi;
36 changes: 36 additions & 0 deletions .github/actions/publish-image/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: "Publish Docker Images"
description: "Publish Docker image to quay.io or dockerhub or another domain - only publish the version on master - elsewhere version and branch"

inputs:
domain:
description: 'domain to publish image to'
required: true
type: string
username:
description: 'login username'
required: true
type: string
password:
description: 'login password'
required: true
type: string
dry-run:
description: dry run flag
required: true
type: boolean

runs:
using: "composite"
steps:
- name: Get docker image tag name
shell: bash
run: |
if [[ $BRANCH_NAME == "master" ]]; then
TAG_VERSION=$(grep -m1 version package.json | awk '{ print $2 }' | sed 's/[", ]//g')
else
TAG_VERSION=$BRANCH_NAME-${{ github.run_id }}
fi
echo "TAG_VERSION=$TAG_VERSION" >> $GITHUB_ENV
- name: Publish image
shell: bash
run: ./scripts/travis/deploy/publish.sh ${{ inputs.domain }} ${{ inputs.username }} ${{ inputs.password }} $TAG_VERSION $BRANCH_NAME ${{ inputs.dry-run }}
112 changes: 112 additions & 0 deletions .github/actions/publish-libs/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: "Publish ACA libs to NPM and GH registry"
description: "Publish ACA libs to NPM and GH registry"

inputs:
github_token:
description: 'Github token'
required: true
type: string
npm-registry-address:
description: 'NPM registry address'
required: true
type: string
npm-registry-token:
description: 'NPM registry token'
required: true
type: string
dry-run:
description: dry run flag
required: true
type: boolean

runs:
using: "composite"
steps:
- name: update libs version
shell: bash
run: |
ROOT_DIR=./../../..
export DIST_DIR=./dist/@alfresco
PROJECTS_DIR=./projects
VERSION_IN_PACKAGE_JSON=$(node -p "require('$ROOT_DIR/package.json').version;")
if [[ $TRAVIS_BRANCH =~ ^master.*?$ ]] ; then
NEW_LIBRARY_VERSION=VERSION_IN_PACKAGE_JSON
else
NEW_LIBRARY_VERSION="${VERSION_IN_PACKAGE_JSON}-${{ github.run_id }}"
fi
echo -e "Branch is '$BRANCH_NAME', therefore publish with '$TAG_NPM' tag\n"
export PROJECTS=(
'aca-shared'
'aca-folder-rules'
'adf-office-services-ext'
'aca-about'
'aca-preview'
'aca-viewer'
'aca-content'
);
for PROJECT in "${PROJECTS[@]}"; do
echo "Update ${PROJECT} version to ${NEW_LIBRARY_VERSION}"
cd $PROJECTS_DIR/${PROJECT}
if [[ ${{ inputs.dry-run }} == false ]]; then
npm version ${NEW_LIBRARY_VERSION}
fi
done
echo -e "\n\nBuild projects"
cd ${ROOT_DIR}
npm run build-libs
- uses: actions/setup-node@v3
name: setup GH registry
with:
node-version-file: '.nvmrc'
registry-url: 'https://npm.pkg.github.com'
scope: '@alfresco'
- name: publish tag to GH registry
shell: bash
run: |
for PROJECT in "${PROJECTS[@]}"
do
cd $DIST_DIR/${PROJECT}
if [[ ${{ inputs.dry-run }} == false ]]; then
echo -e "Publish with dry mode for project to GH registry: $PROJECT\n"
echo -e "npm publish --dry-run --tag $TAG_NPM \n"
npm publish --dry-run --tag $TAG_NPM
else
echo -e "======== Publishing project to GH registry: $PROJECT ========\n"
echo -e "npm publish --tag $TAG_NPM\n"
npm publish --tag $TAG_NPM
fi
done
env:
NODE_AUTH_TOKEN: ${{ inputs.github_token }}
- uses: actions/setup-node@v3
name: setup NPM registry
with:
node-version-file: '.nvmrc'
registry-url: ${{ inputs.npm-registry-address }}
scope: '@alfresco'
- name: publish tag to NPM registry
shell: bash
run: |
for PROJECT in "${PROJECTS[@]}"
do
cd $DIST_DIR/${PROJECT}
if [[ ${{ inputs.dry-run }} == false ]]; then
echo -e "Publish with dry mode for project to NPM registry: $PROJECT\n"
echo -e "npm publish --dry-run --tag $TAG_NPM \n"
npm publish --dry-run --tag $TAG_NPM
else
echo -e "======== Publishing project to NPM registry: $PROJECT ========\n"
echo -e "npm publish --tag $TAG_NPM\n"
npm publish --tag $TAG_NPM
fi
done
env:
NODE_AUTH_TOKEN: ${{ inputs.npm-registry-token }}
38 changes: 38 additions & 0 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: "Variables setup"
description: "Variables setup"

runs:
using: "composite"
steps:
- uses: Alfresco/alfresco-build-tools/.github/actions/get-commit-message@v1.35.0
- name: setup variables
shell: bash
run: |
echo "BUILD_OPTS=--configuration=production,e2e" >> $GITHUB_ENV
echo "TEST_OPTS=" >> $GITHUB_ENV
echo "E2E_PROTRACTOR_OPTS=" >> $GITHUB_ENV
echo "E2E_TSCONFIG=tsconfig.e2e.json" >> $GITHUB_ENV
echo "GIT_HASH=$(git rev-parse HEAD)" >> $GITHUB_ENV
echo "SMART_RUNNER_DIRECTORY=.protractor-smartrunner" >> $GITHUB_ENV
echo "BASE_HASH=.protractor-smartrunner" >> $GITHUB_ENV
echo "HEAD_HASH=HEAD" >> $GITHUB_ENV
- uses: Alfresco/alfresco-build-tools/.github/actions/get-branch-name@v1.35.0
- name: set TAG_NPM
shell: bash
run: |
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
echo "TAG_NPM=${TAG_NPM}" >> $GITHUB_ENV
9 changes: 8 additions & 1 deletion .github/workflows/aca-upstream.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: "ACA upstream"

on:
schedule:
- cron: "0 12 * * *"
workflow_call:
workflow_dispatch:
inputs:
Expand Down Expand Up @@ -32,8 +34,13 @@ jobs:
with:
node-version-file: '.nvmrc'
cache: 'npm'
- uses: Alfresco/alfresco-build-tools/.github/actions/configure-git-author@v1.35.0
with:
username: ${{ vars.BOT_GITHUB_USERNAME }}
email: ${{ vars.BOT_GITHUB_EMAIL }}
global: true
- name: Trigger upstream
shell: bash
run: |
npm install github-api
./scripts/travis/update/update-project.sh -p $TRAVIS_BUILD_NUMBER -t $GH_TOKEN -v alpha -c $TRAVIS_COMMIT -r ${{ inputs.repo_to_update }}
./scripts/travis/update/update-project.sh -p $TRAVIS_BUILD_NUMBER -t $GH_TOKEN -v alpha -c $TRAVIS_COMMIT -r ${{ inputs.repo_to_update || 'alfresco-applications' }}

0 comments on commit e38e72a

Please sign in to comment.