Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
rti committed Nov 17, 2023
1 parent df3804d commit e8a3947
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 202 deletions.
60 changes: 32 additions & 28 deletions Docker/build/Wikibase/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,38 +1,44 @@
# Build configuration
ARG COMPOSER_IMAGE_NAME
ARG COMPOSER_IMAGE_VERSION
ARG MEDIAWIKI_IMAGE_NAME
ARG MEDIAWIKI_IMAGE_VERSION

FROM ubuntu:xenial as unpacker

RUN mkdir artifacts

COPY artifacts/wikibase.tar.gz artifacts
RUN tar xzf artifacts/wikibase.tar.gz

FROM ${MEDIAWIKI_IMAGE_NAME}:${MEDIAWIKI_IMAGE_VERSION} as collector

COPY --from=unpacker Wikibase /var/www/html/extensions/Wikibase

RUN rm /var/www/html/extensions/Wikibase/vendor -rf
ARG MEDIAWIKI_IMAGE
ARG COMPOSER_IMAGE
ARG MEDIAWIKI_SETTINGS_TEMPLATE_FILE

FROM ${COMPOSER_IMAGE_NAME}:${COMPOSER_IMAGE_VERSION} as composer
# ###########################################################################
FROM bitnami/git:2.42.1-debian-11-r0 as git-checkout
WORKDIR /tmp
RUN git clone --single-branch --branch REL1_40 \
https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikibase wikibase
WORKDIR /tmp/wikibase
RUN git submodule update --init --recursive
# TODO: do submodules have .git folders?
RUN rm -rf .git && rm -f .travis.yml

# ###########################################################################
FROM ${MEDIAWIKI_IMAGE} as collector
COPY --from=git-checkout /tmp/wikibase /var/www/html/extensions/Wikibase

# ###########################################################################
FROM ${COMPOSER_IMAGE} as composer
COPY --from=collector --chown=nobody:nogroup /var/www/html /var/www/html
WORKDIR /var/www/html/
COPY composer.local.json /var/www/html/composer.local.json
RUN composer install --verbose -n --no-dev

FROM ${MEDIAWIKI_IMAGE_NAME}:${MEDIAWIKI_IMAGE_VERSION}
RUN composer install --verbose -n --no-dev \
--ignore-platform-req=ext-calendar \
--ignore-platform-req=ext-intl

# ###########################################################################
FROM ${MEDIAWIKI_IMAGE}
LABEL org.opencontainers.image.source="https://github.com/wmde/wikibase-release-pipeline"
# Set error_reporting PHP.ini settings
# This is needed with PHP8+ and MediaWiki 1.39, as Wikibase contains deprecated code
# TODO: remove this and see how far we get
RUN { \
echo 'error_reporting = E_ALL ^ E_DEPRECATED'; \
} > /usr/local/etc/php/conf.d/error_reporting.ini

RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --yes --no-install-recommends libbz2-dev=1.* gettext-base && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --yes --no-install-recommends libbz2-dev=1.* gettext-base && \
rm -rf /var/lib/apt/lists/* && \
a2enmod rewrite && \
install -d /var/log/mediawiki -o www-data && \
Expand All @@ -42,13 +48,12 @@ COPY --from=composer --chown=root:root /var/www/html /var/www/html
COPY artifacts/wait-for-it.sh /wait-for-it.sh
COPY entrypoint.sh /entrypoint.sh

ARG MEDIAWIKI_SETTINGS_TEMPLATE_FILE
COPY ${MEDIAWIKI_SETTINGS_TEMPLATE_FILE} /LocalSettings.php.template
COPY LocalSettings.php.template /LocalSettings.php.template
COPY htaccess /var/www/html/.htaccess

RUN ln -s /var/www/html/ /var/www/html/w

# Mediawiki configuration
# Mediawiki build time configuration
ARG MW_SITE_NAME
ARG MW_SITE_LANG
ARG MW_WG_JOB_RUN_RATE
Expand All @@ -63,10 +68,9 @@ ENV MW_SITE_NAME=${MW_SITE_NAME}\
MW_WG_UPLOAD_DIRECTORY=${MW_WG_UPLOAD_DIRECTORY}\
WIKIBASE_PINGBACK=${WIKIBASE_PINGBACK}

RUN chown www-data ${MW_WG_UPLOAD_DIRECTORY} -R && \
RUN mkdir /var/www/html/uploads && \
chown www-data /var/www/html/uploads -R && \
chmod o-w /var/www/html

ENTRYPOINT ["/bin/bash"]
CMD ["/entrypoint.sh"]

LABEL org.opencontainers.image.source="https://github.com/wmde/wikibase-release-pipeline"
72 changes: 0 additions & 72 deletions Docker/build/Wikibase/LocalSettings.php.REL1_35.template

This file was deleted.

6 changes: 0 additions & 6 deletions Docker/build/Wikibase/default.env

This file was deleted.

73 changes: 17 additions & 56 deletions build.sh
Original file line number Diff line number Diff line change
@@ -1,63 +1,24 @@
#!/usr/bin/env bash

set -e

TARGET=$1
set -o allexport
source ./variables.env
set +o allexport

if ! [[ -d .git ]]; then
echo "ERROR: builder.sh must be executed from the root of the repository!" >&2
exit 1
fi
env

usage() {
echo "USAGE: $0 <TARGET>" >&2
}

if [[ -z "$TARGET" ]]; then
echo "ERROR: TARGET is not set!" >&2
usage
exit 1
fi

if ! [[ -f "local.env" ]]; then
touch local.env
fi

HOST_TMP="$(mktemp -d)"

remove_builder_tmp() {
rm -rf "${HOST_TMP}"
}
trap remove_builder_tmp EXIT

docker build --quiet . -t builder:latest

docker run \
--rm \
\
--user "$(id -u):$(id -g)" \
--group-add "$(getent group docker | cut -d: -f3)" \
\
-v "$(pwd)/Makefile":/app/Makefile \
-v "$(pwd)/local.env":/app/local.env \
-v "$(pwd)/variables.env":/app/variables.env \
\
-v "$(pwd)/build":/app/build \
-v "$(pwd)/Docker/build":/app/Docker/build \
\
-v "$(pwd)/update_cache.sh":/app/update_cache.sh \
-v "$(pwd)/cache":/app/cache \
-v "$(pwd)/git_cache":/app/git_cache \
\
-v "$(pwd)/artifacts":/app/artifacts \
\
-v /var/run/docker.sock:/var/run/docker.sock \
\
-v "${HOST_TMP}":/tmp \
-e HOST_TMP="${HOST_TMP}" \
# TODO: move to flat file hierarchy
# TODO: how do we tag actually?
docker build \
--build-arg MEDIAWIKI_IMAGE="$MEDIAWIKI_IMAGE" \
--build-arg COMPOSER_IMAGE="$COMPOSER_IMAGE" \
--build-arg MEDIAWIKI_SETTINGS_TEMPLATE_FILE="$MEDIAWIKI_SETTINGS_TEMPLATE_FILE" \
\
-e BUILD_TIMESTAMP="$(date +%Y%m%d%H%M%S)" \
-e GIT_REVISION_HASH="$(git rev-parse --short HEAD)" \
-e GIT_REVISION_BRANCH="$(git rev-parse --abbrev-ref HEAD)" \
--build-arg MW_SITE_NAME="$MW_SITE_NAME" \
--build-arg MW_SITE_LANG="$MW_SITE_LANG" \
--build-arg MW_WG_JOB_RUN_RATE="$MW_WG_JOB_RUN_RATE" \
--build-arg MW_WG_ENABLE_UPLOADS="$MW_WG_ENABLE_UPLOADS" \
--build-arg MW_WG_UPLOAD_DIRECTORY="$MW_WG_UPLOAD_DIRECTORY" \
--build-arg WIKIBASE_PINGBACK="$WIKIBASE_PINGBACK" \
\
builder:latest make "$TARGET"
./Docker/build/Wikibase -t wikibase:latest
37 changes: 0 additions & 37 deletions build/build_wikibase_docker.sh

This file was deleted.

14 changes: 11 additions & 3 deletions variables.env
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,9 @@ BUNDLE_WMF_EXTENSIONS=Babel,cldr,CirrusSearch,ConfirmEdit,Elastica,EntitySchema,
ELASTICSEARCH_VERSION=7.10.2
ELASTICSEARCH_PLUGIN_EXTRA_VERSION=7.10.2-wmf4

COMPOSER_IMAGE_NAME=docker-registry.wikimedia.org/releng/composer-php82
COMPOSER_IMAGE_VERSION=latest
# TODO: pin version
COMPOSER_IMAGE=docker-registry.wikimedia.org/releng/composer-php82:latest
MEDIAWIKI_IMAGE=mediawiki:1.40.1

# these never need to regularly change but are for for DRY
WIKIBASE_IMAGE_NAME=wikibase
Expand All @@ -57,7 +58,6 @@ ELASTICSEARCH_IMAGE_NAME=elasticsearch
WIKIBASE_BUNDLE_IMAGE_NAME=wikibase-bundle
QUICKSTATEMENTS_IMAGE_NAME=quickstatements

MEDIAWIKI_IMAGE_NAME=mediawiki
MEDIAWIKI_SETTINGS_TEMPLATE_FILE=LocalSettings.php.template

# Releasing tarballs
Expand All @@ -75,3 +75,11 @@ DEFAULT_DATABASE_IMAGE_NAME=mariadb:10.9

DEFAULT_BUNDLE_WMF_EXTENSIONS=Babel,cldr,CirrusSearch,ConfirmEdit,Elastica,EntitySchema,Nuke,OAuth,Scribunto,UniversalLanguageSelector,VisualEditor,WikibaseCirrusSearch,WikibaseManifest
DEFAULT_BUNDLE_EXT_EXTENSIONS=WikibaseLocalMedia

# wikibase default env
MW_SITE_NAME=wikibase-docker
MW_SITE_LANG=en
MW_WG_JOB_RUN_RATE=2
MW_WG_ENABLE_UPLOADS=false
MW_WG_UPLOAD_DIRECTORY=/var/www/html/images
WIKIBASE_PINGBACK=false

0 comments on commit e8a3947

Please sign in to comment.