Update php-parallel-lint/php-console-highlighter requirement from 0.5.0 to 1.0.0 #359
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# If you see this message on 'femiwiki/.github' repository, please keep in mind that all changes of | |
# this workflow file is for being copied to other repositories. | |
# If you see this message on any other repositories, DO NOT EDIT this file itself. You should | |
# edit https://github.com/femiwiki/.github/blob/main/workflows-template/extension-test.yml Instead | |
# of this. | |
name: Quibble and Phan | |
on: | |
push: | |
branches: | |
- '*' | |
tags-ignore: | |
- '*.*' | |
pull_request: | |
env: | |
DOCKER_REGISTRY: docker-registry.wikimedia.org | |
DOCKER_ORG: releng | |
QUIBBLE_DOCKER_IMAGE: quibble-buster-php73 | |
COVERAGE_DOCKER_IMAGE: quibble-coverage | |
PHAN_DOCKER_IMAGE: mediawiki-phan-php73 | |
jobs: | |
test: | |
strategy: | |
matrix: | |
stage: | |
- phan | |
- coverage | |
- phpunit-unit | |
- phpunit | |
- phpunit-standalone | |
- npm-test | |
- composer-test | |
- selenium | |
# - qunit | |
# - api-testing | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
# /home/runner/cache/ Cache | |
# /home/runner/src/ Mediawiki installation | |
# /home/runner/src/extensions/EXTENSION_NAME/ Clone of the extension repository | |
# /home/runner/docker-images/ Docker images which exported with docker-save command | |
# $GITHUB_WORKSPACE/.github/workflows/dependencies Used by actions/cache | |
- name: Set up | |
run: | | |
# Export the target version of MediaWiki | |
echo MEDIAWIKI_VERSION=REL1_35 >> $GITHUB_ENV | |
if [ "${{ matrix.stage }}" == 'phan' ]; then | |
export DOCKER_IMAGE="${PHAN_DOCKER_IMAGE}" | |
elif [ "${{ matrix.stage }}" == coverage ]; then | |
export DOCKER_IMAGE="${COVERAGE_DOCKER_IMAGE}" | |
else | |
export DOCKER_IMAGE="${QUIBBLE_DOCKER_IMAGE}" | |
fi | |
echo "DOCKER_IMAGE=${DOCKER_IMAGE}" >> $GITHUB_ENV | |
# Get the latest docker tag (Ref: https://github.com/thcipriani/dockerregistry) | |
DOCKER_LATEST_TAG="$(curl -sL "https://${DOCKER_REGISTRY}/v2/${DOCKER_ORG}/${DOCKER_IMAGE}/tags/list" | | |
python3 -c 'import json;print("\n".join(json.loads(input())["tags"]))' | | |
grep -v latest | sort -Vr | head -1)" | |
echo "DOCKER_LATEST_TAG=${DOCKER_LATEST_TAG}" >> $GITHUB_ENV | |
if [ "${{ matrix.stage }}" == 'phan' ]; then | |
echo "QUIBBLE_DOCKER_LATEST_TAG=$(curl -sL "https://${DOCKER_REGISTRY}/v2/${DOCKER_ORG}/${QUIBBLE_DOCKER_IMAGE}/tags/list" | | |
python3 -c 'import json;print("\n".join(json.loads(input())["tags"]))' | | |
grep -v latest | sort -Vr | head -1)" >> $GITHUB_ENV | |
elif [ "${{ matrix.stage }}" == 'coverage' ]; then | |
echo "QUIBBLE_DOCKER_LATEST_TAG=${DOCKER_LATEST_TAG}" >> $GITHUB_ENV | |
fi | |
# Resolve dependencies | |
if [ -e .github/workflows/dependencies ]; then | |
cd .github/workflows | |
curl -sL https://raw.githubusercontent.com/wikimedia/integration-config/master/zuul/parameter_functions.py -o pf.py | |
curl -sL https://raw.githubusercontent.com/femiwiki/.github/main/scripts/resolve_dependencies.py -o rd.py | |
echo "DEPENDENCIES=$(python3 rd.py)" >> $GITHUB_ENV | |
fi | |
- name: Cache docker image | |
uses: actions/cache@v2 | |
with: | |
path: /home/runner/docker-images/${{ env.DOCKER_IMAGE }} | |
key: ${{ env.DOCKER_IMAGE }}:${{ env.DOCKER_LATEST_TAG }} | |
- name: Load or pull docker image | |
run: | | |
docker load -i /home/runner/docker-images/"${DOCKER_IMAGE}" || \ | |
docker pull "${DOCKER_REGISTRY}/${DOCKER_ORG}/${DOCKER_IMAGE}:${DOCKER_LATEST_TAG}" | |
- name: Cache quibble docker image | |
if: ${{ matrix.stage == 'coverage' || matrix.stage == 'phan' }} | |
uses: actions/cache@v2 | |
with: | |
path: /home/runner/docker-images/${{ env.QUIBBLE_DOCKER_IMAGE }} | |
key: ${{ env.QUIBBLE_DOCKER_IMAGE }}:${{ env.QUIBBLE_DOCKER_LATEST_TAG }} | |
- name: Load or pull quibble docker image | |
if: ${{ matrix.stage == 'coverage' || matrix.stage == 'phan' }} | |
run: | | |
docker load -i /home/runner/docker-images/"${QUIBBLE_DOCKER_IMAGE}" || \ | |
docker pull "${DOCKER_REGISTRY}/${DOCKER_ORG}/${QUIBBLE_DOCKER_IMAGE}:${QUIBBLE_DOCKER_LATEST_TAG}" | |
- name: Cache MediaWiki installation | |
uses: actions/cache@v2 | |
with: | |
path: /home/runner/src | |
key: ${{ runner.os }}-${{ env.MEDIAWIKI_VERSION }}-b42e1abf-${{ hashFiles('.github/workflows/dependencies') }} | |
- name: Download MediaWiki and extensions | |
run: | | |
cd /home/runner | |
if [ ! -d src ]; then | |
git clone -b "${MEDIAWIKI_VERSION}" --depth 1 https://gerrit.wikimedia.org/r/mediawiki/core src | |
git clone --recurse-submodules -b "${MEDIAWIKI_VERSION}" --depth 1 https://gerrit.wikimedia.org/r/mediawiki/skins/Vector src/skins/Vector | |
for dep in $DEPENDENCIES; do | |
git clone --recurse-submodules -b "${MEDIAWIKI_VERSION}" --depth 1 "https://gerrit.wikimedia.org/r/${dep}" src/"$(echo $dep | cut -d'/' -f2,3)" | |
done | |
fi | |
git -C src/ log -n 1 --format="%H" | |
- name: Cache dependencies (composer and npm) | |
uses: actions/cache@v2 | |
with: | |
path: /home/runner/cache | |
key: ${{ runner.os }}-${{ env.MEDIAWIKI_VERSION }}-${{ hashFiles('**/*.lock') }} | |
- name: Setup PHP Action | |
if: ${{ matrix.stage == 'phan' }} | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: '7.3' | |
tools: composer:v1 | |
- name: Composer install | |
if: ${{ matrix.stage == 'phan' }} | |
run: | | |
composer install --prefer-dist --no-progress --no-interaction # $GITHUB_WORKSPACE | |
- name: Main Test | |
run: | | |
cd /home/runner | |
# Move our extension | |
sudo cp -r "${GITHUB_WORKSPACE}" src/extensions/ | |
mkdir -p cache cover | |
chmod 777 src cache cover | |
# chown cache/ https://github.com/femiwiki/.github/issues/3 | |
sudo chown -R nobody:nogroup src cache | |
sudo chown $(id -u):$(id -g) src cache | |
# Composer install | |
if [ "${{ matrix.stage }}" == 'phan' ] || [ "${{ matrix.stage }}" == 'coverage' ]; then | |
docker run \ | |
-e ZUUL_PROJECT=mediawiki/extensions/"${{ github.event.repository.name }}" \ | |
-v "$(pwd)"/cache:/cache \ | |
-v "$(pwd)"/src:/workspace/src \ | |
"${DOCKER_REGISTRY}/${DOCKER_ORG}/${QUIBBLE_DOCKER_IMAGE}:${QUIBBLE_DOCKER_LATEST_TAG}" \ | |
--skip-zuul \ | |
--packages-source composer \ | |
--skip-install \ | |
--skip all \ | |
$DEPENDENCIES | |
fi | |
if [ "${{ matrix.stage }}" == 'phan' ]; then | |
docker run \ | |
-e THING_SUBNAME=extensions/"${{ github.event.repository.name }}" \ | |
-v "$(pwd)"/src:/mediawiki \ | |
"${DOCKER_REGISTRY}/${DOCKER_ORG}/${DOCKER_IMAGE}:${DOCKER_LATEST_TAG}" \ | |
--color | |
elif [ "${{ matrix.stage }}" == 'coverage' ]; then | |
# MW1.35 requires PHP7.3 but quibble-coverage is not. | |
if [ "${MEDIAWIKI_VERSION}" == master ]; then | |
docker run \ | |
-e ZUUL_PROJECT=mediawiki/extensions/"${{ github.event.repository.name }}" \ | |
-v "$(pwd)"/cache:/cache \ | |
-v "$(pwd)"/src:/workspace/src \ | |
-v "$(pwd)"/cover:/workspace/cover \ | |
"${DOCKER_REGISTRY}/${DOCKER_ORG}/${DOCKER_IMAGE}:${DOCKER_LATEST_TAG}" \ | |
--skip-zuul \ | |
--skip-deps \ | |
-c mwext-phpunit-coverage | |
fi | |
else | |
docker run \ | |
-e ZUUL_PROJECT=mediawiki/extensions/"${{ github.event.repository.name }}" \ | |
-v "$(pwd)"/cache:/cache \ | |
-v "$(pwd)"/src:/workspace/src \ | |
"${DOCKER_REGISTRY}/${DOCKER_ORG}/${DOCKER_IMAGE}:${DOCKER_LATEST_TAG}" \ | |
--skip-zuul \ | |
--packages-source composer \ | |
--run "${{ matrix.stage }}" \ | |
$DEPENDENCIES | |
fi | |
- name: Upload coverage to Codecov | |
if: ${{ matrix.stage == 'coverage' }} | |
uses: codecov/codecov-action@v2 | |
with: | |
directory: /home/runner/cover | |
- name: Tear down | |
run: | | |
cd /home/runner | |
sudo rm -rf src/extensions/"${{ github.event.repository.name }}" | |
# See https://doc.wikimedia.org/quibble/index.html#remove-localsettings-php-between-runs | |
rm "$(pwd)"/src/LocalSettings.php || true | |
mkdir -p docker-images | |
docker save -o "$(pwd)/docker-images/${DOCKER_IMAGE}" \ | |
"${DOCKER_REGISTRY}/${DOCKER_ORG}/${DOCKER_IMAGE}:${DOCKER_LATEST_TAG}" |