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

Reply via email to