From 267afe2ffcc0719fc79229f9900fbdccef06feba Mon Sep 17 00:00:00 2001 From: ehardon Date: Tue, 20 Oct 2020 15:17:08 +0300 Subject: [PATCH] Split release stage into community and enterprise release and publish stages - copy artifacts from maven for publish job - simplify scripts --- .travis.settings.xml | 5 -- .travis.yml | 86 ++++++++++++++++++++++++++++---- scripts/release.sh | 16 +++--- scripts/set-release-variables.sh | 33 ++---------- scripts/setUpMavenPhase.sh | 3 +- scripts/zip-artifacts-release.sh | 27 ++++++++++ scripts/zip-artifacts-staging.sh | 15 ++++++ scripts/zip-artifacts.sh | 19 ------- 8 files changed, 132 insertions(+), 72 deletions(-) create mode 100644 scripts/zip-artifacts-release.sh create mode 100755 scripts/zip-artifacts-staging.sh delete mode 100755 scripts/zip-artifacts.sh diff --git a/.travis.settings.xml b/.travis.settings.xml index 396237a2c3..411d7268b1 100644 --- a/.travis.settings.xml +++ b/.travis.settings.xml @@ -45,11 +45,6 @@ ${env.DOCKERHUB_USERNAME} ${env.DOCKERHUB_PASSWORD} - - github - ${env.GIT_USERNAME} - ${env.GIT_PASSWORD} - alfresco-internal ${env.MAVEN_USERNAME} diff --git a/.travis.yml b/.travis.yml index dc6a07f087..f9eba90c3d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,10 @@ stages: - name: Tests if: commit_message !~ /\[skip tests\]/ - name: Security Scans - - name: Release and Publish + - name: Release + if: fork = false AND (branch = master OR branch =~ /release\/.*/ OR branch =~ /merge-2.7\/.*/) AND type != pull_request AND commit_message =~ /\[(community|enterprise) release .*\]/ + - name: Publish + if: fork = false AND (branch = master OR branch =~ /release\/.*/ OR branch =~ /merge-2.7\/.*/) AND type != pull_request AND commit_message =~ /\[publish\]/ #TODO jobs: include: @@ -108,23 +111,88 @@ jobs: script: - echo "Static Analysis (SAST)" - - name: "Release" - stage: Release and Publish - if: fork = false AND (branch = master OR branch =~ /release\/.*/ OR branch =~ /merge-2.7\/.*/) AND type != pull_request AND commit_message =~ /.*\[.*release.*\].*/ + - name: "Community Release and Publish to S3 Staging Bucket" + stage: Release + if: commit_message =~ /\[community release .*\]/ before_script: - - echo ${TRAVIS_COMMIT_MESSAGE} - source scripts/set-release-variables.sh script: - - bash scripts/release.sh ${RELEASE_TYPE} + - bash scripts/release.sh "community" before_deploy: - - bash scripts/zip-artifacts.sh ${RELEASE_TYPE} + - bash scripts/zip-artifacts-staging.sh "community" deploy: - provider: s3 access_key_id: ${ARTIFACTS_KEY} secret_access_key: ${ARTIFACTS_SECRET} region: "eu-west-1" - bucket: ${ARTIFACTS_UPLOAD_BUCKET} - upload_dir: ${ARTIFACTS_UPLOAD_DIR} + bucket: "alfresco-artefacts-staging" + upload_dir: "community/RM/${RELEASE_VERSION}" + skip_cleanup: true + acl: private + local_dir: artifacts_dir + on: + all_branches: true + after_deploy: + - echo "Finished release and deployed to https://s3.console.aws.amazon.com/s3/buckets/${ARTIFACTS_UPLOAD_BUCKET}/${ARTIFACTS_UPLOAD_DIR}" + + - name: "Enterprise Release and Publish to S3 Staging Bucket" + stage: Release + if: commit_message =~ /\[enterprise release .*\]/ + before_script: + - source scripts/set-release-variables.sh + script: + - bash scripts/release.sh "enterprise" + before_deploy: + - bash scripts/zip-artifacts-staging.sh "enterprise" + deploy: + - provider: s3 + access_key_id: ${ARTIFACTS_KEY} + secret_access_key: ${ARTIFACTS_SECRET} + region: "eu-west-1" + bucket: "alfresco-artefacts-staging" + upload_dir: "enterprise/RM/${RELEASE_VERSION}" + skip_cleanup: true + acl: private + local_dir: artifacts_dir + on: + all_branches: true + after_deploy: + - echo "Finished release and deployed to https://s3.console.aws.amazon.com/s3/buckets/${ARTIFACTS_UPLOAD_BUCKET}/${ARTIFACTS_UPLOAD_DIR}" + + - name: "Community Publish to S3 Release Bucket" + stage: Publish + if: commit_message =~ /\[community release .*\]/ AND commit_message =~ /\[publish\]/ + before_script: source scripts/set-release-variables.sh + script: skip + before_deploy: bash scripts/zip-artifacts-release.sh "community" + deploy: + - provider: s3 + access_key_id: ${ARTIFACTS_KEY} + secret_access_key: ${ARTIFACTS_SECRET} + region: "eu-west-1" + bucket: "eu.dl.alfresco.com" + upload_dir: "release/community/RM/${RELEASE_VERSION}" + skip_cleanup: true + acl: private + local_dir: artifacts_dir + on: + all_branches: true + after_deploy: + - echo "Finished release and deployed to https://s3.console.aws.amazon.com/s3/buckets/${ARTIFACTS_UPLOAD_BUCKET}/${ARTIFACTS_UPLOAD_DIR}" + + - name: "Enterprise Publish to S3 Staging Bucket" + stage: Publish + if: commit_message =~ /\[enterprise release .*\]/ AND commit_message =~ /\[publish\]/ + before_script: source scripts/set-release-variables.sh + script: skip + before_deploy: bash scripts/zip-artifacts-release.sh "enterprise" + deploy: + - provider: s3 + access_key_id: ${ARTIFACTS_KEY} + secret_access_key: ${ARTIFACTS_SECRET} + region: "eu-west-1" + bucket: "eu.dl.alfresco.com" + upload_dir: "release/enterprise/RM/${RELEASE_VERSION}" skip_cleanup: true acl: private local_dir: artifacts_dir diff --git a/scripts/release.sh b/scripts/release.sh index 74311e0312..f3bc2cdf74 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -4,6 +4,8 @@ set -e # Use full history for release git checkout -B "${TRAVIS_BRANCH}" +git config user.email "build@alfresco.com" + release_type=$1 echo Release type: "$release_type" @@ -15,15 +17,15 @@ elif [ $release_type != "community" -a $release_type != "enterprise" ]; then exit 1 fi -if [ -z ${RELEASE_VERSION} ] || [ -z ${DEVELOPMENT_VERSION} ]; - then echo "Please provide a Release and Development verison" - exit 1 -else - mvn --batch-mode \ +if [ -z ${RELEASE_VERSION} ] || [ -z ${DEVELOPMENT_VERSION} ]; then + echo "Please provide a Release and Development verison" + exit 1 +fi + +mvn --batch-mode \ -Dusername="${GIT_USERNAME}" \ -Dpassword="${GIT_PASSWORD}" \ -DreleaseVersion=${RELEASE_VERSION} \ -DdevelopmentVersion=${DEVELOPMENT_VERSION} \ -DskipTests -D${release_type} -DuseReleaseProfile=false \ - -P${release_type}-release release:clean release:prepare release:perform -fi + -P${release_type}-release release:clean release:prepare release:perform \ No newline at end of file diff --git a/scripts/set-release-variables.sh b/scripts/set-release-variables.sh index 0f18168c50..e74c9ca4a3 100755 --- a/scripts/set-release-variables.sh +++ b/scripts/set-release-variables.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash +set -evx echo "Travis commit message: $TRAVIS_COMMIT_MESSAGE" -release_message=$(echo $TRAVIS_COMMIT_MESSAGE | grep -Po '(\[(internal )*(community|enterprise)\srelease\s(\d\.)+(\d|[a-z])(-[A-Z]\d){0,1}\s(\d\.)+\d-SNAPSHOT\])') +release_message=$(echo $TRAVIS_COMMIT_MESSAGE | grep -Po '(\[(community|enterprise)\srelease\s(\d\.)+(\d|[a-z])(-[A-Z]\d){0,1}\s(\d\.)+\d-SNAPSHOT\])') if [ ! -n "$release_message" ]; then echo "The commit message is in the wrong format or it does not contain all the required properties." @@ -12,32 +13,4 @@ export RELEASE_VERSION=$(echo $release_message | grep -Po '(\d\.)+(\d|[a-z])(-[A export DEVELOPMENT_VERSION=$(echo $release_message | grep -Po '(\d\.)+\d-SNAPSHOT') echo "Release version is set to $RELEASE_VERSION" -echo "Development version is set to $DEVELOPMENT_VERSION" - -release_type=$(echo $release_message | grep -Po '(internal\s)*(community|enterprise)') - -if [[ $release_type =~ "community" ]]; then - echo "Setting Community Release variables..." - export RELEASE_TYPE="community" - if [[ $release_type =~ "internal" ]]; then - echo "Setting ARTIFACTS_UPLOAD_BUCKET and ARTIFACTS_UPLOAD_DIR for the Internal release" - export ARTIFACTS_UPLOAD_BUCKET="alfresco-artefacts-staging" - export ARTIFACTS_UPLOAD_DIR="community/RM/${RELEASE_VERSION}" - else - echo "Setting ARTIFACTS_UPLOAD_BUCKET and ARTIFACTS_UPLOAD_DIR for the release" - export ARTIFACTS_UPLOAD_BUCKET="eu.dl.alfresco.com" - export ARTIFACTS_UPLOAD_DIR="release/community/RM/${RELEASE_VERSION}" - fi -elif [[ $release_type =~ "enterprise" ]]; then - echo "Setting Enterprise Release variables..." - export RELEASE_TYPE="enterprise" - if [[ $release_type =~ "internal" ]]; then - echo "Setting ARTIFACTS_UPLOAD_BUCKET and ARTIFACTS_UPLOAD_DIR for the Internal release" - export ARTIFACTS_UPLOAD_BUCKET="alfresco-artefacts-staging" - export ARTIFACTS_UPLOAD_DIR="enterprise/RM/${RELEASE_VERSION}" - else - echo "Setting ARTIFACTS_UPLOAD_BUCKET and ARTIFACTS_UPLOAD_DIR for the release" - export ARTIFACTS_UPLOAD_BUCKET="eu.dl.alfresco.com" - export ARTIFACTS_UPLOAD_DIR="release/enterprise/RM/${RELEASE_VERSION}" - fi -fi \ No newline at end of file +echo "Development version is set to $DEVELOPMENT_VERSION" \ No newline at end of file diff --git a/scripts/setUpMavenPhase.sh b/scripts/setUpMavenPhase.sh index 60be3bb87e..97204e3925 100644 --- a/scripts/setUpMavenPhase.sh +++ b/scripts/setUpMavenPhase.sh @@ -7,5 +7,4 @@ then export MAVEN_PHASE="deploy" else export MAVEN_PHASE="verify" -fi - +fi \ No newline at end of file diff --git a/scripts/zip-artifacts-release.sh b/scripts/zip-artifacts-release.sh new file mode 100644 index 0000000000..96a1c14ab3 --- /dev/null +++ b/scripts/zip-artifacts-release.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +set -evx + +release_type=$1 + +mkdir "artifacts_dir" +cp rm-${release_type}/rm-${release_type}-repo/target/alfresco-rm-*${release_type}*amp artifacts_dir +cp rm-${release_type}/rm-${release_type}-share/target/alfresco-rm-*${release_type}*amp artifacts_dir +cp rm-${release_type}/rm-${release_type}-rest-api-explorer/target/alfresco-rm-*${release_type}*war artifacts_dir + +mvn -B org.apache.maven.plugins:maven-dependency-plugin:3.1.1:copy \ + -Dartifact=org.alfresco:alfresco-rm-${release_type}-repo:${RELEASE_VERSION}:amp \ + -DoutputDirectory=artifacts_dir + +mvn -B org.apache.maven.plugins:maven-dependency-plugin:3.1.1:copy \ + -Dartifact=org.alfresco:alfresco-rm-${release_type}-share:${RELEASE_VERSION}:amp \ + -DoutputDirectory=artifacts_dir + +mvn -B org.apache.maven.plugins:maven-dependency-plugin:3.1.1:copy \ + -Dartifact=org.alfresco:alfresco-rm-${release_type}-rest-api-explorer:${RELEASE_VERSION}:war \ + -DoutputDirectory=artifacts_dir + +cd artifacts_dir +zip alfresco-rm-${release_type}-${RELEASE_VERSION}.zip * + +# rm *.amp *.war -f +ls artifacts_dir \ No newline at end of file diff --git a/scripts/zip-artifacts-staging.sh b/scripts/zip-artifacts-staging.sh new file mode 100755 index 0000000000..12c4b246ad --- /dev/null +++ b/scripts/zip-artifacts-staging.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -evx + +release_type=$1 + +mkdir "artifacts_dir" +cp rm-${release_type}/rm-${release_type}-repo/target/alfresco-rm-${release_type}-repo-*.amp artifacts_dir +cp rm-${release_type}/rm-${release_type}-share/target/alfresco-rm-${release_type}-share-*.amp artifacts_dir +cp rm-${release_type}/rm-${release_type}-rest-api-explorer/target/alfresco-rm-${release_type}-rest-api-explorer-*.war artifacts_dir + +cd artifacts_dir +zip alfresco-rm-${release_type}-${RELEASE_VERSION}.zip * + +# rm *.amp *.war -f +ls artifacts_dir \ No newline at end of file diff --git a/scripts/zip-artifacts.sh b/scripts/zip-artifacts.sh deleted file mode 100755 index d81acca46d..0000000000 --- a/scripts/zip-artifacts.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -set -e - -if [ $1 == 'community' ]; then - mkdir "artifacts_dir" - cp rm-community/rm-community-repo/target/alfresco-rm-*community*amp artifacts_dir - cp rm-community/rm-community-share/target/alfresco-rm-*community*amp artifacts_dir - cp rm-community/rm-community-rest-api-explorer/target/alfresco-rm-*community*war artifacts_dir - cd artifacts_dir - zip alfresco-rm-community-${RELEASE_VERSION}.zip *amp - ls artifacts_dir -elif [ $1 == "enterprise" ]; then - mkdir "artifacts_dir" - cp rm-enterprise/rm-enterprise-repo/target/alfresco-rm-*enterprise*amp artifacts_dir - cp rm-enterprise/rm-enterprise-share/target/alfresco-rm-*enterprise*amp artifacts_dir - cd artifacts_dir - zip alfresco-rm-enterprise-${RELEASE_VERSION}.zip *amp - ls artifacts_dir -fi