jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/381271 )
Change subject: mwext-php70-phan-docker job ...................................................................... mwext-php70-phan-docker job Change-Id: I42a74b187383569cd851c09b465175666b657362 --- A dockerfiles/ci-src-setup/Dockerfile A dockerfiles/ci-src-setup/example-run.sh A dockerfiles/ci-src-setup/prebuild.sh A dockerfiles/ci-src-setup/setup-mw.sh A dockerfiles/ci-src-setup/sury-php.gpg M dockerfiles/zuul-cloner/Dockerfile M jjb/macro-docker.yaml M jjb/mediawiki-extensions.yaml 8 files changed, 173 insertions(+), 23 deletions(-) Approvals: Addshore: Checked; Looks good to me, approved jenkins-bot: Verified diff --git a/dockerfiles/ci-src-setup/Dockerfile b/dockerfiles/ci-src-setup/Dockerfile new file mode 100644 index 0000000..b826358 --- /dev/null +++ b/dockerfiles/ci-src-setup/Dockerfile @@ -0,0 +1,74 @@ +FROM wmfreleng/ci-jessie:latest as clone-integration-jenkins + +COPY .cache-buster-integration-jenkins /.cache-buster-integration-jenkins + +RUN git clone --depth 1 https://gerrit.wikimedia.org/r/p/integration/jenkins.git /srv/jenkins && \ + rm -rf /srv/jenkins/.git + + +FROM wmfreleng/composer:latest as composer + + +FROM wmfreleng/ci-jessie + +# wmfreleng/php +COPY sury-php.gpg /etc/apt/trusted.gpg.d/php.gpg + +RUN apt-get update && \ + apt-get install --yes --no-install-recommends \ + # Required by sury per https://packages.sury.org/php/README.txt + apt-transport-https lsb-release && \ + echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list && \ + # Only update the source we have added to save time + apt-get update -o Dir::Etc::sourcelist="sources.list.d/php.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" && \ + apt-get install --yes --no-install-recommends \ + php7.0-cli && \ + apt-get remove --yes \ + apt-transport-https lsb-release && \ + apt-get autoremove --yes && apt-get clean && rm -rf /var/lib/apt/lists/* && \ + rm /etc/apt/sources.list.d/php.list + +# wmfreleng/php-mediawiki +RUN apt-get update && \ + apt-get install --yes --no-install-recommends \ + # Required by sury per https://packages.sury.org/php/README.txt + apt-transport-https lsb-release && \ + echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list && \ + # Only update the source we have added to save time + apt-get update -o Dir::Etc::sourcelist="sources.list.d/php.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" && \ + apt-get install --yes --no-install-recommends \ + # Needed for composer to install things from dist + php7.0-zip \ + # Needed for mediawiki + php-ast php7.0-mbstring php7.0-xml && \ + apt-get remove --yes --purge \ + apt-transport-https lsb-release && \ + apt-get autoremove --yes && apt-get clean && rm -rf /var/lib/apt/lists/* && \ + rm /etc/apt/sources.list.d/php.list + +# TODO python image? +# TODO is python2 and 3 needed for the slave scripts? +RUN apt-get update && \ + apt-get install --yes --no-install-recommends \ + python python3 && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +# zuul-cloner +RUN apt-get update && \ + apt-get install --yes --no-install-recommends \ + zuul \ + # pin python-pbr https://phabricator.wikimedia.org/T153877 + python-pbr=0.8.2-1 && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +COPY --from=clone-integration-jenkins /srv/jenkins/bin /srv/slave-scripts +COPY --from=clone-integration-jenkins /srv/jenkins/etc/zuul-clonemap.yaml /srv/zuul-clonemap.yaml +COPY --from=composer /srv/composer /srv/composer +COPY setup-mw.sh /srv/setup-mw.sh + +RUN mkdir -p /srv/deployment/integration/slave-scripts/etc && \ + ln -s /srv/slave-scripts /srv/deployment/integration/slave-scripts/bin && \ + ln -s /srv/zuul-clonemap.yaml /srv/deployment/integration/slave-scripts/etc/zuul-clonemap.yaml && \ + ln -s /srv/composer/vendor/bin/composer /usr/local/bin/composer + +USER nobody diff --git a/dockerfiles/ci-src-setup/example-run.sh b/dockerfiles/ci-src-setup/example-run.sh new file mode 100644 index 0000000..bca7c90 --- /dev/null +++ b/dockerfiles/ci-src-setup/example-run.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +docker run \ + --rm --tty \ + --env ZUUL_URL=https://gerrit.wikimedia.org/r \ + --env ZUUL_PROJECT=mediawiki/extensions/ElectronPdfService \ + --env ZUUL_COMMIT=d016986bda3bec88bf246fa5c34be2941c54ba70 \ + --env ZUUL_REF=refs/changes/08/371108/4 \ + --env EXT_DEPENDENCIES=mediawiki/extensions/BetaFeatures \ + --env SKIN_DEPENDENCIES= \ + --entrypoint "bash" \ + wmfreleng/ci-src-setup:latest \ + //srv/setup-mw.sh diff --git a/dockerfiles/ci-src-setup/prebuild.sh b/dockerfiles/ci-src-setup/prebuild.sh new file mode 100644 index 0000000..f3587ab --- /dev/null +++ b/dockerfiles/ci-src-setup/prebuild.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +# This is copied in Dockerfile to ensure that a build step grabs a fresh +# copy of the git repo when it is updated rather than using a layer from +# the local Docker cache. + +git ls-remote --exit-code https://gerrit.wikimedia.org/r/p/integration/jenkins.git refs/heads/master > .cache-buster-integration-jenkins diff --git a/dockerfiles/ci-src-setup/setup-mw.sh b/dockerfiles/ci-src-setup/setup-mw.sh new file mode 100644 index 0000000..9bc162b --- /dev/null +++ b/dockerfiles/ci-src-setup/setup-mw.sh @@ -0,0 +1,41 @@ +#!/bin/bash -eu + +set -euxo pipefail + +umask 002 + +echo $ZUUL_PROJECT > /tmp/deps.txt +echo -e $EXT_DEPENDENCIES >> /tmp/deps.txt +echo -e $SKIN_DEPENDENCIES > /tmp/deps_skins.txt + +cd /src + +zuul-cloner --version +zuul-cloner \ + --color \ + --verbose \ + --map /srv/deployment/integration/slave-scripts/etc/zuul-clonemap.yaml \ + --workspace /src \ + --cache-dir /srv/git \ + https://gerrit.wikimedia.org/r/p \ + mediawiki/core \ + mediawiki/vendor \ + $(cat /tmp/deps.txt) \ + $(cat /tmp/deps_skins.txt) + +find extensions skins -maxdepth 2 \ + -name .gitmodules \ + -execdir bash -xe -c ' + git submodule foreach git clean -xdff -q + git submodule update --init --recursive + git submodule status + ' \; + +echo $ZUUL_PROJECT > /tmp/extensions_load.txt +echo -e $EXT_DEPENDENCIES >> /tmp/extensions_load.txt + +set -u + +composer --ansi validate --no-check-publish +/srv/deployment/integration/slave-scripts/bin/mw-create-composer-local.py "/tmp/extensions_load.txt" composer.local.json +composer update --ansi --no-progress --prefer-dist --profile --no-dev diff --git a/dockerfiles/ci-src-setup/sury-php.gpg b/dockerfiles/ci-src-setup/sury-php.gpg new file mode 100644 index 0000000..dc4d282 --- /dev/null +++ b/dockerfiles/ci-src-setup/sury-php.gpg Binary files differ diff --git a/dockerfiles/zuul-cloner/Dockerfile b/dockerfiles/zuul-cloner/Dockerfile index 53b4da3..6464860 100644 --- a/dockerfiles/zuul-cloner/Dockerfile +++ b/dockerfiles/zuul-cloner/Dockerfile @@ -1,10 +1,8 @@ -FROM docker-registry.wikimedia.org/wikimedia-jessie:latest +FROM wmfreleng/ci-jessie:latest RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install --yes --no-install-recommends \ zuul \ - # zuul doesn't pull this in automatically but clearly needs it - git \ # pin python-pbr https://phabricator.wikimedia.org/T153877 python-pbr=0.8.2-1 && \ apt-get clean && rm -rf /var/lib/apt/lists/* diff --git a/jjb/macro-docker.yaml b/jjb/macro-docker.yaml index 350f185..3d78e23 100644 --- a/jjb/macro-docker.yaml +++ b/jjb/macro-docker.yaml @@ -44,7 +44,16 @@ builders: - shell: | rm -rf log - mkdir -m 777 -p "log" + mkdir -m 2777 -p "log" + +# Create a src directory that will be +# mounted into a container with --volume +- builder: + name: docker-src-dir + builders: + - shell: | + rm -rf src + mkdir -m 2777 -p "src" # Create a cache directory that will be # mounted into a container with --volume @@ -52,7 +61,7 @@ name: docker-cache-dir builders: - shell: | - mkdir -m 777 -p "cache" + mkdir -m 2777 -p "cache" # Run a docker image with .env and a log - builder: @@ -88,7 +97,7 @@ - shell: | #!/bin/bash -eu set -x - chmod 777 src + chmod 2777 src docker run \ --rm --tty \ --volume "$(pwd)"/log:{logdir} \ diff --git a/jjb/mediawiki-extensions.yaml b/jjb/mediawiki-extensions.yaml index 2e98ddf..dfdba4e 100644 --- a/jjb/mediawiki-extensions.yaml +++ b/jjb/mediawiki-extensions.yaml @@ -407,7 +407,7 @@ - job: name: 'mwext-php70-phan-docker' - node: DebianJessieDocker + node: DebianJessieDocker && m4executor concurrent: true properties: - build-discarder: @@ -415,30 +415,36 @@ triggers: - zuul builders: + - docker-log-dir + - docker-src-dir + - docker-cache-dir + - docker-zuul-env + - shell: "echo -e EXT_NAME=$EXT_NAME >> .env" + - shell: "echo -e SKIN_NAME=$SKIN_NAME >> .env" + - shell: "echo -e EXT_DEPENDENCIES=$EXT_DEPENDENCIES >> .env" + - shell: "echo -e SKIN_DEPENDENCIES=$SKIN_DEPENDENCIES >> .env" + - shell: "cat .env" - shell: | #!/bin/bash -eu set -x - rm -rf log - rm -rf .env - - cat <<ZUUL > .env - ZUUL_URL=$ZUUL_URL - ZUUL_PROJECT=$ZUUL_PROJECT - ZUUL_COMMIT=$ZUUL_COMMIT - ZUUL_REF=$ZUUL_REF - EXT_DEPENDENCIES=$EXT_DEPENDENCIES - HOME=/var/lib/jenkins - ZUUL - - mkdir -p "log" - docker run \ --rm --tty \ --env-file .env \ - --volume "$(pwd)"/log:/var/lib/jenkins/log \ - wmfreleng/mediawiki-extensions-phan:v2017.09.11.19.08 + --volume "$(pwd)"/src:/src \ + --volume "$(pwd)"/cache:/cache \ + --volume /srv/git:/srv/git \ + --entrypoint "bash" \ + wmfreleng/ci-src-setup:v2017.10.16.15.37 \ + /srv/setup-mw.sh + + docker run \ + --rm --tty \ + --volume "$(pwd)"/src:/mediawiki \ + wmfreleng/mediawiki-phan:v2017.09.28.22.24 \ + /$ZUUL_PROJECT -m checkstyle + publishers: - checkstyle: pattern: 'log/phan-issues' -- To view, visit https://gerrit.wikimedia.org/r/381271 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I42a74b187383569cd851c09b465175666b657362 Gerrit-PatchSet: 15 Gerrit-Project: integration/config Gerrit-Branch: master Gerrit-Owner: Addshore <[email protected]> Gerrit-Reviewer: Addshore <[email protected]> Gerrit-Reviewer: Hashar <[email protected]> Gerrit-Reviewer: Paladox <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
