Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test config changes #562

Open
wants to merge 21 commits into
base: 6.3.x
Choose a base branch
from
131 changes: 80 additions & 51 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ jobs:

runs-on: ubuntu-20.04

if: ${{ contains(github.event.pull_request.labels.*.name, 'test-regular') || github.event_name == 'schedule' }}

services:
mysql:
image: mariadb:latest
Expand Down Expand Up @@ -103,6 +105,8 @@ jobs:

runs-on: ubuntu-20.04

if: ${{ contains(github.event.pull_request.labels.*.name, 'test-regular') || github.event_name == 'schedule' }}

services:
mysql:
image: mariadb:latest
Expand Down Expand Up @@ -182,7 +186,7 @@ jobs:
matrix:
PHP_VERSION: [ '7.4' ]

if: ${{ contains(github.event.pull_request.labels.*.name, 'test-upgrade') || github.event_name == 'schedule' }}
# if: ${{ contains(github.event.pull_request.labels.*.name, 'test-upgrade') || github.event_name == 'schedule' }}

env:
DRUPAL_TESTING_TEST_GROUP_EXCLUDE: "NoUpdate"
Expand Down Expand Up @@ -234,20 +238,30 @@ jobs:

composer update
composer exec -- drush updb -y
composer exec -- drush sql:dump --extra-dump='--column-statistics=0' > docroot/dump.sql

cd docroot
php core/scripts/db-tools.php dump-database-d8-mysql > db-dump.php
working-directory: /tmp/test/thunder/install

- name: Setup Apache
uses: thunder/apache-shiva-php-action@v1
with:
php-version: ${{ matrix.PHP_VERSION }}
site-directory: /tmp/test/thunder/install/docroot
http-port: ${{ env.DRUPAL_TESTING_HTTP_PORT }}
- name: Zip build
run: cd /tmp/test; tar cfz upgrade-${{ matrix.PHP_VERSION }}.tgz thunder; mv upgrade-${{ matrix.PHP_VERSION }}.tgz ${GITHUB_WORKSPACE}

- name: Run tests suite
run: test-drupal-project run_tests
- name: Upload build
uses: actions/upload-artifact@v2
with:
name: upgrade-${{ matrix.PHP_VERSION }}
path: upgrade-${{ matrix.PHP_VERSION }}.tgz

# - name: Setup Apache
# uses: thunder/apache-shiva-php-action@v1
# with:
# php-version: ${{ matrix.PHP_VERSION }}
# site-directory: /tmp/test/thunder/install/docroot
# http-port: ${{ env.DRUPAL_TESTING_HTTP_PORT }}
#
# - name: Run tests suite
# run: test-drupal-project run_tests

test-min:

Expand Down Expand Up @@ -324,67 +338,82 @@ jobs:
- name: Run the tests
run: test-drupal-project run_tests

test-performance:
needs: [build, test-max]
test-config:
needs: test-upgrade

runs-on: ubuntu-20.04

if: ${{ contains(github.event.pull_request.labels.*.name, 'test-performance') || github.event_name == 'schedule' }}
services:
mysql:
image: mariadb:latest
env:
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306
selenium:
image: selenium/standalone-chrome
options: --shm-size 2g --add-host=thunder-testing:host-gateway --name selenium
ports:
- 4444:4444

strategy:
fail-fast: false
matrix:
PHP_VERSION: [ '7.4' ]
steps:
- uses: actions/checkout@v1
with:
repository: thunder/docker-thunder-performance
path: thunder-distribution/docker-thunder-performance
ref: 'master'

- uses: shivammathur/setup-php@master
- uses: shivammathur/setup-php@v2
with:
coverage: none
php-version: '7.4'
extensions: Imagick
php-version: ${{ matrix.PHP_VERSION }}
extensions: :sodium, Imagick, gd, PDO, mysql, pdo_mysql, mbstring, xmlwriter, pdo, date, dom, filter, hash, json, pcre, session, SimpleXML, SPL, tokenizer, xml, curl

- name: Download build
- name: Add host
run: echo "127.0.0.1 thunder-testing" | sudo tee -a /etc/hosts

- name: Prepare fixtures
run: docker cp ./tests/fixtures selenium:/fixtures

- name: Get build environment
run: composer global require thunder/drupal-testing:${DRUPAL_TESTING_VERSION}

- name: Download upgrade build
uses: actions/download-artifact@v1
with:
name: build-7.4
name: upgrade-${{ matrix.PHP_VERSION }}

- name: Unzip build artifact
run: mkdir -p /tmp/test; tar xCfz /tmp/test build-7.4/build-7.4.tgz thunder; rm -rf build-7.4; mv /tmp/test/thunder/install ${GITHUB_WORKSPACE}/docker-thunder-performance/www
- name: Unzip upgrade build artifact
run: mkdir -p /tmp/test; tar xCfz /tmp/test upgrade-${{ matrix.PHP_VERSION }}/upgrade-${{ matrix.PHP_VERSION }}.tgz thunder; rm -rf upgrade-${{ matrix.PHP_VERSION }}

- name: Set variables
id: vars
# GITHUB_HEAD_REF is only defined in PRs. GITHUB_REF is on the default branch something like refs/heads/8.x-4.x.
# So if GITHUB_HEAD_REF is not defined we use GITHUB_REF and remove leading refs/heads/. On the result / will replaced by _
- name: Load database dump
working-directory: /tmp/test/thunder/install
run: |
echo ::set-output name=DOCKER_SANITIZED_BRANCH_NAME::$(echo ${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} | sed 's/\//_/g')
echo ::set-output name=DOCKER_TAG::$(echo ${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} | sed 's/\//_/g')-${{ github.run_id }}
vendor/bin/drush sql:create -y
vendor/bin/drush sql:cli < docroot/dump.sql

- name: Create image and push to registry
working-directory: docker-thunder-performance
- name: Link the distribution
working-directory: /tmp/test/thunder/install
run: |
echo ${{ secrets.DOCKER_TOKEN }} | docker login -u thundertechnology --password-stdin
export DOCKER_IMAGE_TAG="burda/thunder-performance:${{ steps.vars.outputs.DOCKER_TAG }}"
chmod u+w www/docroot/sites/default
bash -x ./build.sh --tag "${DOCKER_IMAGE_TAG}"
docker push "${DOCKER_IMAGE_TAG}"
composer remove thunder/thunder-distribution --no-update
composer config name "drupal-testing-thunder/thunder-distribution" --working-dir="${GITHUB_WORKSPACE}"
composer require "drupal-testing-thunder/thunder-distribution:*" --no-update
composer require drupal/config_profile
rm -rf docroot/profiles/contrib/thunder-distribution
ln -s "${GITHUB_WORKSPACE}" docroot/profiles/contrib/thunder

- name: Start Thunder performance testing task for created image
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3

- name: Check profile config
working-directory: /tmp/test/thunder/install
run: |
API_CALL_HTTP_CODE=$(curl \
--request POST \
--insecure \
"https://${{ secrets.THUNDER_PTM_HOST }}:3000/warmers" \
--header "Authorization: Bearer ${{ secrets.THUNDER_PTM_TOKEN }}" \
--header "Content-Type: application/json" \
--data "{\"branchTag\":\"${{ steps.vars.outputs.DOCKER_SANITIZED_BRANCH_NAME }}\",\"imageTag\":\"${{ steps.vars.outputs.DOCKER_TAG }}\",\"composeType\":\"default\"}" \
--output /dev/stderr \
--write-out "%{http_code}" \
)

if [[ "${API_CALL_HTTP_CODE}" != "200" ]]; then
exit 1
fi
vendor/bin/drush -y en config_profile
vendor/bin/drush cex

cd docroot/profiles/contrib/thunder
git clean -fd
git status

# Start a debug session.
# - name: Setup tmate session
Expand Down