Skip to content

ACMS-000: Auto rebase feature. #3994

ACMS-000: Auto rebase feature.

ACMS-000: Auto rebase feature. #3994

name: "Acquia CMS CI"
on:
push:
branches: [ develop, qa, stage, main, release/*, feature/* ]
paths-ignore:
- README.md
pull_request:
# branches: [ develop ]
paths-ignore:
- README.md
jobs:
static_code_analysis:
if: ${{ github.event_name == 'pull_request' }}
runs-on: ubuntu-latest
env:
# Provide your package's name.
ORCA_SUT_NAME: acquia/acquia_cms
ORCA_SUT_BRANCH: develop
ORCA_VERSION: ^4
ORCA_PACKAGES_CONFIG_ALTER: ../acquia_cms/tests/packages_alter.yml
ORCA_FIXTURE_PROJECT_TEMPLATE: acquia/drupal-recommended-project
ORCA_ENABLE_NIGHTWATCH: "FALSE"
ORCA_PHPCS_STANDARD: AcquiaPHP
ORCA_SUT_DIR: /home/runner/work/acquia_cms/acquia_cms
COMPOSER_PROCESS_TIMEOUT: 1800
ORCA_JOB: ${{ matrix.orca-job }}
GITHUB_EVENT: $ {{ github.event_name }}
JOB_TYPE: "static-code-analysis"
#ACMS_JOB: ${{ matrix.acms-job}}
# Google env variables.
ORCA_GOOGLE_API_CLIENT_ID: ${{ secrets.ORCA_GOOGLE_API_CLIENT_ID }}
ORCA_GOOGLE_API_CLIENT_SECRET: ${{ secrets.ORCA_GOOGLE_API_CLIENT_SECRET }}
ORCA_GOOGLE_API_REFRESH_TOKEN: ${{ secrets.ORCA_GOOGLE_API_REFRESH_TOKEN }}
strategy:
matrix:
orca-job:
- STATIC_CODE_ANALYSIS
- STRICT_DEPRECATED_CODE_SCAN
#php-version: [ "8.1" ]
steps:
- uses: actions/checkout@v3
- name: Use Node.js 12.13.1
uses: actions/setup-node@v3
with:
node-version: 12.13.1
- uses: shivammathur/setup-php@v2
with:
php-version: 8.3
#coverage: xdebug
- name: Download ORCA
run: |
composer self-update
composer create-project --no-dev --ignore-platform-req=php acquia/orca ../orca "$ORCA_VERSION" -n
curl https://gist.githubusercontent.com/vishalkhode1/0e26b2e9637722a256c74a6cb8496e9d/raw/sut-path-reposories.patch | git -C ../orca apply
curl https://gist.githubusercontent.com/chandan-singh7929/902a17bbf0f5c0e0ee536dd5983875f3/raw/4031ae76ca5e8f08b98545bfdcda327f6d38be58/remove-local-settings.patch | git -C ../orca apply
- name: Before Install
run: |
# Added below in CI to test acquia_cms on Drupal Core >=9.5.
composer require "drupal/core:>=9.5" --no-update --no-install -d modules/acquia_cms_common
sed -i 's/^core_version_requirement.*/core_version_requirement: ">=9.5"/' modules/acquia_cms_common/acquia_cms_common.info.yml
../orca/bin/ci/before_install.sh
- name: Install
shell: 'script -q -e -c "bash {0}"'
run: ./tests/ci/install.sh
- name: Before script
run: ../orca/bin/ci/before_script.sh
- name: Script
run: ./tests/ci/script.sh
- name: Before Cache
run: ../orca/bin/ci/before_cache.sh
- name: After script
run: |
../orca/bin/ci/after_success.sh
../orca/bin/ci/after_failure.sh
../orca/bin/ci/after_script.sh
drupal_check:
if: ${{ github.event_name == 'pull_request' }}
name: Execute Drupal-check
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: Use Node.js 12.13.1
uses: actions/setup-node@v3
with:
node-version: 12.13.1
- uses: shivammathur/setup-php@v2
with:
php-version: 8.3
#coverage: xdebug
- name: Execute Drupal-check
run: |
rm composer.lock
composer install
php vendor/bin/drupal-check modules
php vendor/bin/drupal-check tests/src
integrated_tests:
if: ${{ github.event_name == 'pull_request' }}
name: ${{ matrix.acms_job }} (${{ matrix.orca-job }})
runs-on: ubuntu-latest
env:
# Site test artifacts.
# ACMS_DB_ARTIFACT: "/home/runner/work/acquia_cms/acquia_cms/tests/acms.sql.gz"
# ACMS_FILES_ARTIFACT: "/home/runner/work/acquia_cms/acquia_cms/tests/acms-files.tar.gz"
# ACMS_STARTER_DB_ARTIFACT: "/home/runner/work/acquia_cms/acquia_cms/tests/acms-starter.sql.gz"
# ACMS_STARTER_FILES_ARTIFACT: "/home/runner/work/acquia_cms/acquia_cms/tests/acms-files-starter.tar.gz"
# Provide your package's name.
ORCA_SUT_NAME: acquia/acquia_cms
ORCA_SUT_BRANCH: develop
ORCA_PACKAGES_CONFIG_ALTER: ../acquia_cms/tests/packages_alter.yml
ORCA_FIXTURE_PROJECT_TEMPLATE: acquia/drupal-recommended-project
ORCA_ENABLE_NIGHTWATCH: "FALSE"
ORCA_PHPCS_STANDARD: AcquiaPHP
ORCA_SUT_DIR: /home/runner/work/acquia_cms/acquia_cms
COMPOSER_PROCESS_TIMEOUT: 1800
ORCA_JOB: ${{ matrix.orca-job }}
# AWS_S3_BUCKET_PATH: s3://acquia-cms-artifacts/backstop
# Set Required API Keys.
CONNECTOR_ID: ${{ secrets.CONNECTOR_ID }}
SEARCH_UUID: ${{ secrets.SEARCH_UUID }}
CONNECTOR_KEY: ${{ secrets.CONNECTOR_KEY }}
GMAPS_KEY: ${{ secrets.GMAPS_KEY }}
SITESTUDIO_API_KEY: ${{ secrets.SITESTUDIO_API_KEY }}
SITESTUDIO_ORG_KEY: ${{ secrets.SITESTUDIO_ORG_KEY }}
ACMS_JOB: ${{ matrix.acms_job }}
JOB_TYPE: "integrated-tests"
CI: true
strategy:
fail-fast: false
matrix:
orca-job:
- ISOLATED_TEST_ON_CURRENT
acms_job:
- integrated_php_unit_tests
- integrated_existing_site_tests
steps:
- uses: actions/checkout@v3
- name: Use Node.js 12.13.1
uses: actions/setup-node@v3
with:
node-version: 12.13.1
- uses: shivammathur/setup-php@v2
with:
php-version: 8.3
#coverage: xdebug
- name: Setup MySQL
run: |
sudo /etc/init.d/mysql start
mysql -uroot -proot < ./tests/ci/install.sql
- name: Download ORCA
run: |
composer self-update
composer create-project --no-dev --ignore-platform-req=php acquia/orca ../orca "$ORCA_VERSION" -n
curl https://gist.githubusercontent.com/vishalkhode1/0e26b2e9637722a256c74a6cb8496e9d/raw/sut-path-reposories.patch | git -C ../orca apply
curl https://gist.githubusercontent.com/chandan-singh7929/902a17bbf0f5c0e0ee536dd5983875f3/raw/4031ae76ca5e8f08b98545bfdcda327f6d38be58/remove-local-settings.patch | git -C ../orca apply
# - name: Configure AWS Credentials
# uses: aws-actions/configure-aws-credentials@v1
# with:
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
- name: Before Install
run: |
# Update the CI by adding patches without pinning the following modules.
#composer require "drupal/facets:^2.0.6" --no-update --no-install -d modules/acquia_cms_search
# Added below in CI to test acquia_cms on Drupal Core >=9.5.
composer require "drupal/core:>=9.5" --no-update --no-install -d modules/acquia_cms_common
sed -i 's/^core_version_requirement.*/core_version_requirement: ">=9.5"/' modules/acquia_cms_common/acquia_cms_common.info.yml
# Remove all PHPUnit tests from individual modules, except the integrated & ExistingSite tests.
if [ "${ACMS_JOB}" = "integrated_existing_site_tests" ]; then
find modules/*/tests tests -type f -name "*Test.php" ! -path "*/ExistingSite*/*" -exec rm -fr '{}' ';'
elif [ "${ACMS_JOB}" = "integrated_php_unit_tests" ]; then
# Remove all isolated/existing_site phpunit tests from acquia_cms modules.
find modules/*/tests -type f -name "*Test.php" -exec rm -fr '{}' ';'
# Remove all existing_site phpunit tests from acquia_cms repo as those get's covered from integrated_existing_site_tests.
find tests/src -type f -name "*Test.php" -path "*/ExistingSite*/*" -exec rm -fr '{}' ';'
fi
../orca/bin/ci/before_install.sh
chromedriver --disable-dev-shm-usage --disable-extensions --disable-gpu --headless --no-sandbox --port=4444 &
CHROMEDRIVER_PID=$!
echo "CHROMEDRIVER_PID=${CHROMEDRIVER_PID}" >> ${GITHUB_ENV}
- name: Install
shell: 'script -q -e -c "bash {0}"'
run: ./tests/ci/install.sh
- name: Before script
run: ../orca/bin/ci/before_script.sh
- name: Script
run: ./tests/ci/script.sh
- name: Before Cache
run : ../orca/bin/ci/before_cache.sh
- name: After script
run: |
kill -0 ${{ env.CHROMEDRIVER_PID }}
../orca/bin/ci/after_success.sh
../orca/bin/ci/after_failure.sh
../orca/bin/ci/after_script.sh
backstop_tests:
if: ${{ github.event_name == 'pull_request' }}
name: backstop with ${{ matrix.orca-job }} on PHP ${{ matrix.php-version }}
runs-on: ubuntu-latest
env:
# Site test artifacts.
# ACMS_DB_ARTIFACT: "/home/runner/work/acquia_cms/acquia_cms/tests/acms.sql.gz"
# ACMS_FILES_ARTIFACT: "/home/runner/work/acquia_cms/acquia_cms/tests/acms-files.tar.gz"
# ACMS_STARTER_DB_ARTIFACT: "/home/runner/work/acquia_cms/acquia_cms/tests/acms-starter.sql.gz"
# ACMS_STARTER_FILES_ARTIFACT: "/home/runner/work/acquia_cms/acquia_cms/tests/acms-files-starter.tar.gz"
# Provide your package's name.
ORCA_SUT_NAME: acquia/acquia_cms
ORCA_SUT_BRANCH: develop
ORCA_PACKAGES_CONFIG_ALTER: ../acquia_cms/tests/packages_alter.yml
ORCA_FIXTURE_PROJECT_TEMPLATE: acquia/drupal-recommended-project
ORCA_ENABLE_NIGHTWATCH: "FALSE"
ORCA_PHPCS_STANDARD: AcquiaPHP
ORCA_SUT_DIR: /home/runner/work/acquia_cms/acquia_cms
COMPOSER_PROCESS_TIMEOUT: 1800
ORCA_JOB: ${{ matrix.orca-job }}
AWS_S3_BUCKET_PATH: s3://acquia-cms-artifacts/backstop
# Set Required API Keys.
CONNECTOR_ID: ${{ secrets.CONNECTOR_ID }}
SEARCH_UUID: ${{ secrets.SEARCH_UUID }}
CONNECTOR_KEY: ${{ secrets.CONNECTOR_KEY }}
GMAPS_KEY: ${{ secrets.GMAPS_KEY }}
SITESTUDIO_API_KEY: ${{ secrets.SITESTUDIO_API_KEY }}
SITESTUDIO_ORG_KEY: ${{ secrets.SITESTUDIO_ORG_KEY }}
COPY_BACKSTOP_IMAGES: false
ACMS_JOB: "backstop_tests"
JOB_TYPE: "integrated-tests"
CI: true
strategy:
fail-fast: false
matrix:
orca-job:
- INTEGRATED_TEST_ON_PREVIOUS_MINOR
- ISOLATED_TEST_ON_CURRENT
php-version:
- 8.1
- 8.3
steps:
- uses: actions/checkout@v3
- name: Use Node.js 12.13.1
uses: actions/setup-node@v3
with:
node-version: 12.13.1
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
#coverage: xdebug
- name: Setup MySQL
run: |
sudo /etc/init.d/mysql start
mysql -uroot -proot < ./tests/ci/install.sql
- name: Download ORCA
run: |
composer self-update
composer create-project --no-dev --ignore-platform-req=php acquia/orca ../orca "$ORCA_VERSION" -n
curl https://gist.githubusercontent.com/vishalkhode1/0e26b2e9637722a256c74a6cb8496e9d/raw/sut-path-reposories.patch | git -C ../orca apply
curl https://gist.githubusercontent.com/vishalkhode1/342a0eee801e51f48b4d9701749c1c94/raw/orca-oldest-support.patch | git -C ../orca apply
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
- name: Before Install
run: |
# Added below in CI to test acquia_cms on Drupal Core >=9.5.
composer require "drupal/core:>=9.5" --no-update --no-install -d modules/acquia_cms_common
sed -i 's/^core_version_requirement.*/core_version_requirement: ">=9.5"/' modules/acquia_cms_common/acquia_cms_common.info.yml
# Remove all PHPunit tests from acquia_cms modules.
find modules/*/tests tests/src -type f -name "*Test.php" -exec rm -fr '{}' ';'
if [ "${ORCA_JOB}" = "INTEGRATED_TEST_ON_PREVIOUS_MINOR" ]; then
# Update drupal/core patch as per Drupal Core version.
sed -i 's/2024-01-18\/3370946-page-title-backport-10-2-2_0.patch/2024-01-18\/3370946-page-title-backport-10-1-8.patch/g' modules/acquia_cms_common/composer.json
fi
../orca/bin/ci/before_install.sh
chromedriver --disable-dev-shm-usage --disable-extensions --disable-gpu --headless --no-sandbox --port=4444 &
CHROMEDRIVER_PID=$!
echo "CHROMEDRIVER_PID=${CHROMEDRIVER_PID}" >> ${GITHUB_ENV}
- name: Install
shell: 'script -q -e -c "bash {0}"'
run: ./tests/ci/install.sh
- name: Before script
run: ../orca/bin/ci/before_script.sh
- name: Script
run: ./tests/ci/script.sh
- name: Before Cache
run: ../orca/bin/ci/before_cache.sh
- name: After script
run: |
kill -0 ${{ env.CHROMEDRIVER_PID }}
../orca/bin/ci/after_success.sh
../orca/bin/ci/after_failure.sh
../orca/bin/ci/after_script.sh
run_update_hooks:
if: ${{ github.event_name == 'pull_request' }}
name: "Module Upgrades"
runs-on: ubuntu-latest
env:
# Set ORCA related environment variables.
ORCA_SUT_NAME: acquia/acquia_cms
ORCA_SUT_BRANCH: develop
ORCA_PACKAGES_CONFIG_ALTER: ../acquia_cms/tests/packages_alter.yml
ORCA_FIXTURE_PROJECT_TEMPLATE: acquia/drupal-recommended-project
ORCA_ENABLE_NIGHTWATCH: "FALSE"
ORCA_SUT_DIR: /home/runner/work/acquia_cms/acquia_cms
# Set Required API Keys.
CONNECTOR_ID: ${{ secrets.CONNECTOR_ID }}
SEARCH_UUID: ${{ secrets.SEARCH_UUID }}
CONNECTOR_KEY: ${{ secrets.CONNECTOR_KEY }}
GMAPS_KEY: ${{ secrets.GMAPS_KEY }}
SITESTUDIO_API_KEY: ${{ secrets.SITESTUDIO_API_KEY }}
SITESTUDIO_ORG_KEY: ${{ secrets.SITESTUDIO_ORG_KEY }}
#Add other required environment variables.
COMPOSER_PROCESS_TIMEOUT: 1800
CI: true
GIT_AUTHOR_NAME: "Github Actions"
GIT_AUTHOR_EMAIL: "[email protected]"
GIT_COMMITTER_NAME: "Github Actions"
GIT_COMMITTER_EMAIL: "[email protected]"
ORCA_JOB: ISOLATED_TEST_ON_CURRENT
ACMS_JOB: "upgrade_modules"
strategy:
fail-fast: false
#php-version: [ "8.1" ]
steps:
- uses: actions/checkout@v3
- name: Use Node.js 12.13.1
uses: actions/setup-node@v3
with:
node-version: 12.13.1
- uses: shivammathur/setup-php@v2
with:
php-version: 8.3
#coverage: xdebug
- name: Setup MySQL
run: |
sudo /etc/init.d/mysql start
mysql -uroot -proot < ./tests/ci/install.sql
- name: Download ORCA
run: |
composer self-update
composer create-project --no-dev --ignore-platform-req=php acquia/orca ../orca "$ORCA_VERSION" -n
curl https://gist.githubusercontent.com/vishalkhode1/0e26b2e9637722a256c74a6cb8496e9d/raw/sut-path-reposories.patch | git -C ../orca apply
curl https://gist.githubusercontent.com/chandan-singh7929/902a17bbf0f5c0e0ee536dd5983875f3/raw/4031ae76ca5e8f08b98545bfdcda327f6d38be58/remove-local-settings.patch | git -C ../orca apply
- name: Before Install
run: |
# Added below in CI to test acquia_cms on Drupal Core >=9.5.
composer require "drupal/core:>=9.5" --no-update --no-install -d modules/acquia_cms_common
sed -i 's/^core_version_requirement.*/core_version_requirement: ">=9.5"/' modules/acquia_cms_common/acquia_cms_common.info.yml
./tests/ci/before_install.blt.sh
- name: Install
shell: 'script -q -e -c "bash {0}"'
run: ./tests/ci/install.sh
- name: Run Update hooks
shell: 'script -q -e -c "bash {0}"'
run: ./tests/ci/run_update_hooks.sh
env:
# @see ./tests/ci/before_install.blt.sh
DRUPAL_ORG_CHANGES: ${{ env.DRUPAL_ORG_CHANGES }}
- name: Script - run backstop tests
run: |
source ../orca/bin/ci/_includes.sh
cd ${ORCA_FIXTURE_DIR}
chromedriver --disable-dev-shm-usage --disable-extensions --disable-gpu --headless --no-sandbox --port=4444 &
CHROMEDRIVER_PID=$!
echo "CHROMEDRIVER_PID=${CHROMEDRIVER_PID}" >> ${GITHUB_ENV}
./vendor/bin/drush en acquia_cms_development -y
./vendor/bin/drush en acquia_cms_starter -y
./vendor/bin/drush cr
cd ${ORCA_SUT_DIR}
./tests/ci/script.sh
deploy_code:
if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }}
name: "Continuous Deployment (CD)"
env:
GIT_AUTHOR_NAME: "Vishal Khode"
GIT_COMMITTER_NAME: "Vishal Khode"
GIT_COMMITTER_EMAIL: "[email protected]"
GIT_AUTHOR_EMAIL: "[email protected]"
AWS_S3_BUCKET_PATH: s3://acquia-cms-artifacts
runs-on: ubuntu-latest
environment: code_deployment
concurrency: production
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Configure SSH keys
run: |
mkdir -p ~/.ssh
echo "${DRUPAL_SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa
ssh-keyscan "${DRUPAL_SSH_KNOWN_HOSTS}" >> ~/.ssh/known_hosts
shell: bash
env:
DRUPAL_SSH_PRIVATE_KEY: ${{ secrets.DRUPAL_SSH_PRIVATE_KEY }}
DRUPAL_SSH_KNOWN_HOSTS: git.drupal.org
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
- name: Download Splitsh-lite
run: |
cd ${GITHUB_WORKSPACE}/scripts/
aws s3 cp ${AWS_S3_BUCKET_PATH}/splitsh-lite/lite_linux_amd64.tar.gz . && tar xvzf lite_linux_amd64.tar.gz
chmod +x splitsh-lite
cd -
- name: deploy_code
run: |
${GITHUB_WORKSPACE}/scripts/deploy_code.sh