Files
acs-community-packaging/.github/workflows/ci.yml
T

173 lines
7.3 KiB
YAML

name: ACS Community Packaging CI
on:
pull_request:
push:
branches:
- feature/ACS-3844_migrate-to-GHA
workflow_dispatch:
env:
GIT_USERNAME: ${{ secrets.GIT_AUTHOR_NAME }}
GIT_EMAIL: ${{ secrets.GIT_AUTHOR_EMAIL }}
GIT_PASSWORD: ${{ secrets.GIT_TOKEN }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKERHUB_USERNAME: ${{ secrets.DOCKER_USERNAME }}
GITHUB_ACTIONS_DEPLOY_TIMEOUT: 60
MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }}
QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }}
QUAY_USERNAME: ${{ secrets.QUAY_USERNAME }}
TAS_ENVIRONMENT: ./tests/environment
TAS_SCRIPTS: ../alfresco-community-repo/packaging/tests/scripts
# Release version has to start with real version (7.4.0-....) for the docker image to build successfully.
RELEASE_VERSION: 7.4.0-DEV
DEVELOPMENT_VERSION: 7.4.0-DEV1-SNAPSHOT
jobs:
tas_tests:
name: ${{ matrix.testSuite }} TAS tests
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip tas]') && !contains(github.event.head_commit.message, '[skip tests]')"
strategy:
fail-fast: false
matrix:
include:
- testSuite: REST API part1
pom: tests/tas-restapi/pom.xml
profiles: all-tas-tests,run-restapi-part1
compose-file: docker-compose-minimal+transforms.yml
- testSuite: REST API part2
pom: tests/tas-restapi/pom.xml
profiles: all-tas-tests,run-restapi-part2
compose-file: docker-compose-minimal+transforms.yml
- testSuite: REST API part3
pom: tests/tas-restapi/pom.xml
profiles: all-tas-tests,run-restapi-part3
compose-file: docker-compose-minimal+transforms.yml
- testSuite: CMIS (BROWSER binding)
pom: tests/tas-cmis/pom.xml
profiles: all-tas-tests,run-cmis-browser
compose-file: docker-compose-minimal+transforms.yml
- testSuite: CMIS (ATOM binding)
pom: tests/tas-cmis/pom.xml
profiles: all-tas-tests,run-cmis-atom
compose-file: docker-compose-minimal+transforms.yml
- testSuite: CMIS (WEBSERVICES binding)
pom: tests/tas-cmis/pom.xml
profiles: all-tas-tests,run-cmis-webservices
compose-file: docker-compose-minimal+transforms.yml
- testSuite: Email
pom: tests/tas-email/pom.xml
profiles: all-tas-tests
compose-file: docker-compose-minimal.yml
- testSuite: WebDAV
pom: tests/tas-webdav/pom.xml
profiles: all-tas-tests
compose-file: docker-compose-minimal.yml
- testSuite: Integration
pom: tests/tas-integration/pom.xml
profiles: all-tas-tests
compose-file: docker-compose-minimal.yml
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/get-build-info
- uses: ./.github/actions/setup-build-tools
- name: "Init"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: |
bash ./scripts/ci/init.sh
bash ./scripts/ci/build.sh
- name: "Setup the environment"
run: |
${TAS_SCRIPTS}/start-compose.sh ${TAS_ENVIRONMENT}/${{ matrix.compose-file }}
${TAS_SCRIPTS}/wait-for-alfresco-start.sh "http://localhost:8082/alfresco"
- name: "Test"
run: mvn -B install -ntp -f ${{ matrix.pom }} -P${{ matrix.profiles }} -Denvironment=default -DrunBugs=false
- name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh
community_zip_tests:
name: Community Distribution Zip content tests
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip tests]')"
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/get-build-info
- uses: ./.github/actions/setup-build-tools
- name: "Init"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: |
bash ./scripts/ci/init.sh
bash ./scripts/ci/build.sh
- name: "Build"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: mvn -B -ntp -V clean install -Pags -DskipTests -Dmaven.javadoc.skip=true
- name: "Test"
run: mvn -B install -ntp -f tests/tas-distribution-zip/pom.xml -Prun-distribution-zip-contents-check -DrunBugs=false
- name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh
docker_latest:
name: Update latest Docker images
runs-on: ubuntu-latest
needs: [tas_tests, community_zip_tests]
if: >
!failure() &&
!contains(github.event.head_commit.message, '[skip docker_latest]') &&
(github.ref_name == 'master' || contains(github.ref_name, 'release/')) &&
github.event_name != 'pull_request'
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/get-build-info
- uses: ./.github/actions/setup-build-tools
- name: "Init"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: |
bash ./scripts/ci/init.sh
bash ./scripts/ci/build.sh
- name: "Push Docker images"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: mvn -B -ntp -V clean install -DskipTests -Dmaven.javadoc.skip=true -Pags -Ppush-docker-images
- name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh
release:
name: Release and Copy to S3 Staging Bucket
runs-on: ubuntu-latest
needs: [docker_latest]
#&& TODO: add to following section once S3 has been tested
#(github.ref_name == 'master' || contains(github.ref_name, 'release/')) &&
#github.event_name != 'pull_request'
if: >
!failure() &&
contains(github.event.head_commit.message, '[release]')
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/get-build-info
- uses: ./.github/actions/setup-build-tools
- name: "Init"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: |
bash ./scripts/ci/init.sh
bash ./scripts/ci/build.sh
- name: "Release"
timeout-minutes: ${{ fromJSON(env.GITHUB_ACTIONS_DEPLOY_TIMEOUT) }}
run: |
bash scripts/ci/verify_release_tag.sh
bash scripts/ci/maven_release.sh
source scripts/ci/prepare_staging_deploy.sh
- name: "Clean Maven cache"
run: bash ./scripts/ci/cleanup_cache.sh
- name: "Configure AWS credentials"
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_STAGING_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_STAGING_SECRET_KEY }}
aws-region: eu-west-1
- name: "Deploy to S3 Staging Bucket"
run: |
aws s3 cp --acl private --recursive ./deploy_dir s3://alfresco-artefacts-staging/alfresco-content-services-community/release/${BRANCH_NAME}/${BUILD_NUMBER}
aws s3 cp --acl private --recursive ./deploy_dir_ags s3://alfresco-artefacts-staging/community/RM/${RELEASE_VERSION}
echo "Finished release and deployed to https://s3.console.aws.amazon.com/s3/buckets/alfresco-artefacts-staging/alfresco-content-services-community/release/${BRANCH_NAME}/${BUILD_NUMBER}"