WIP commit
这个提交包含在:
父节点
b5af401e74
当前提交
3bf13acfbb
|
@ -0,0 +1,10 @@
|
|||
# copy this to .env to easily modify local CI ENV variables
|
||||
|
||||
# cp env.template .env
|
||||
|
||||
# MW_VERSION=1.35
|
||||
# SMW_VERSION=4.1.1
|
||||
# AR_VERSION=1.8.2
|
||||
# PHP_VERSION=7.4
|
||||
# DB_TYPE=sqlite
|
||||
# DB_IMAGE="mysql:5.7"
|
|
@ -16,30 +16,97 @@ jobs:
|
|||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- mediawiki_version: 1.35
|
||||
semantic_mediawiki_version: 4.1.1
|
||||
# - mediawiki_version: 1.35
|
||||
# semantic_mediawiki_version: 4.1.1
|
||||
# approved_revs_version: 1.8.1
|
||||
# database_type: mysql
|
||||
# coverage: true
|
||||
# experimental: false
|
||||
# - mediawiki_version: 1.35
|
||||
# semantic_mediawiki_version: 4.1.1
|
||||
# approved_revs_version: 1.8.1
|
||||
# database_type: sqlite
|
||||
# coverage: false
|
||||
# experimental: false
|
||||
# - mediawiki_version: 1.38
|
||||
# semantic_mediawiki_version: dev-master
|
||||
# approved_revs_version: master
|
||||
# database_type: sqlite
|
||||
# coverage: false
|
||||
# experimental: true
|
||||
|
||||
- mediawiki_version: '1.35'
|
||||
smw_version: '4.1.1'
|
||||
approved_revs_version: 1.8.1
|
||||
php_version: 7.4
|
||||
database_type: mysql
|
||||
database_image: "mysql:5.7"
|
||||
coverage: true
|
||||
experimental: false
|
||||
- mediawiki_version: 1.35
|
||||
semantic_mediawiki_version: 4.1.1
|
||||
- mediawiki_version: '1.35'
|
||||
smw_version: '4.1.1'
|
||||
approved_revs_version: 1.8.1
|
||||
php_version: 7.4
|
||||
database_type: sqlite
|
||||
database_image: "mysql:5.7"
|
||||
coverage: true
|
||||
experimental: false
|
||||
- mediawiki_version: '1.35'
|
||||
smw_version: dev-master
|
||||
approved_revs_version: master
|
||||
php_version: 7.4
|
||||
database_type: mysql
|
||||
database_image: "mysql:5.7"
|
||||
coverage: false
|
||||
experimental: false
|
||||
- mediawiki_version: 1.38
|
||||
semantic_mediawiki_version: dev-master
|
||||
- mediawiki_version: '1.39'
|
||||
smw_version: dev-master
|
||||
approved_revs_version: master
|
||||
database_type: sqlite
|
||||
php_version: 8.1
|
||||
database_type: mysql
|
||||
database_image: "mysql:5.7"
|
||||
coverage: false
|
||||
experimental: true
|
||||
- mediawiki_version: '1.39'
|
||||
smw_version: dev-master
|
||||
approved_revs_version: master
|
||||
php_version: 8.1
|
||||
database_type: mysql
|
||||
database_image: "mysql:8"
|
||||
coverage: false
|
||||
experimental: true
|
||||
- mediawiki_version: '1.40'
|
||||
smw_version: dev-master
|
||||
approved_revs_version: master
|
||||
php_version: 8.1
|
||||
database_type: mysql
|
||||
database_image: "mysql:8"
|
||||
coverage: false
|
||||
experimental: true
|
||||
- mediawiki_version: '1.40'
|
||||
smw_version: dev-master
|
||||
approved_revs_version: master
|
||||
php_version: 8.1
|
||||
database_type: mysql
|
||||
database_image: "mariadb:latest"
|
||||
coverage: false
|
||||
experimental: true
|
||||
- mediawiki_version: '1.40'
|
||||
smw_version: dev-master
|
||||
approved_revs_version: master
|
||||
php_version: 8.1
|
||||
database_type: postgres
|
||||
database_image: "postgres:14"
|
||||
coverage: false
|
||||
experimental: true
|
||||
|
||||
env:
|
||||
MW_VERSION: ${{ matrix.mediawiki_version }}
|
||||
SMW_VERSION: ${{ matrix.semantic_mediawiki_version }}
|
||||
SMW_VERSION: ${{ matrix.smw_version }}
|
||||
AR_VERSION: ${{ matrix.approved_revs_version }}
|
||||
PHP_VERSION: ${{ matrix.php_version }}
|
||||
DB_TYPE: ${{ matrix.database_type }}
|
||||
DB_IMAGE: ${{ matrix.database_image }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
|
10
Dockerfile
10
Dockerfile
|
@ -1,11 +1,11 @@
|
|||
ARG MW_VERSION
|
||||
FROM gesinn/docker-mediawiki-sqlite:${MW_VERSION}
|
||||
ARG PHP_VERSION
|
||||
|
||||
FROM gesinn/mediawiki-ci:${MW_VERSION}-php${PHP_VERSION}
|
||||
|
||||
RUN rm -f /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini && \
|
||||
sed -i s/80/8080/g /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf && \
|
||||
# To be able to persist configuration and data via docker volumes
|
||||
mkdir -p /data/sqlite /data/config /data/log && chown -R www-data. /data && \
|
||||
rm -f LocalSettings.php && ln -s /data/config/LocalSettings.php
|
||||
sed -i s/80/8080/g /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf
|
||||
|
||||
|
||||
ENV EXTENSION=SemanticExtraSpecialProperties
|
||||
COPY composer*.json /var/www/html/extensions/$EXTENSION/
|
||||
|
|
147
Makefile
147
Makefile
|
@ -1,36 +1,52 @@
|
|||
EXTENSION := SemanticExtraSpecialProperties
|
||||
-include .env
|
||||
export
|
||||
|
||||
# ======== Naming ========
|
||||
EXTENSION := SemanticExtraSpecialProperties
|
||||
EXTENSION_FOLDER := /var/www/html/extensions/${EXTENSION}
|
||||
extension := $(shell echo $(EXTENSION) | tr A-Z a-z})
|
||||
IMAGE_NAME := $(extension):test-$(MW_VERSION)-$(SMW_VERSION)-$(AR_VERSION)-$(PHP_VERSION)
|
||||
|
||||
|
||||
# ======== CI ENV Variables ========
|
||||
MW_VERSION ?= 1.35
|
||||
SMW_VERSION ?= 4.1.1
|
||||
AR_VERSION ?= 1.8.2
|
||||
|
||||
IMAGE_VERSION := $(MW_VERSION)-$(SMW_VERSION)-$(AR_VERSION)
|
||||
BUILD_ARGS := \
|
||||
--build-arg MW_VERSION=$(MW_VERSION) \
|
||||
--build-arg SMW_VERSION=$(SMW_VERSION) \
|
||||
--build-arg AR_VERSION=$(AR_VERSION)
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
PHP_VERSION ?= 7.4
|
||||
DB_TYPE ?= sqlite
|
||||
extension := $(shell echo $(EXTENSION) | tr A-Z a-z})
|
||||
IMAGE_NAME := $(extension):test-$(IMAGE_VERSION)
|
||||
EXTENSION_FOLDER := /var/www/html/extensions/${EXTENSION}
|
||||
DB_IMAGE ?= ""
|
||||
|
||||
environment = IMAGE_NAME=$(IMAGE_NAME) \
|
||||
MW_VERSION=$(MW_VERSION) \
|
||||
SMW_VERSION=$(SMW_VERSION) \
|
||||
AR_VERSION=$(AR_VERSION) \
|
||||
PHP_VERSION=$(PHP_VERSION) \
|
||||
DB_TYPE=$(DB_TYPE) \
|
||||
DB_IMAGE=$(DB_IMAGE) \
|
||||
EXTENSION_FOLDER=$(EXTENSION_FOLDER)
|
||||
|
||||
ifneq (,$(wildcard ./docker-compose.override.yml))
|
||||
COMPOSE_OVERRIDE=-f docker-compose.override.yml
|
||||
endif
|
||||
|
||||
compose = $(environment) docker-compose $(COMPOSE_OVERRIDE) $(COMPOSE_ARGS)
|
||||
compose-ci = $(environment) docker-compose -f docker-compose.yml -f docker-compose-ci.yml $(COMPOSE_OVERRIDE) $(COMPOSE_ARGS)
|
||||
compose-dev = $(environment) docker-compose -f docker-compose.yml -f docker-compose-dev.yml $(COMPOSE_OVERRIDE) $(COMPOSE_ARGS)
|
||||
|
||||
compose = IMAGE_NAME=$(IMAGE_NAME) EXTENSION_FOLDER=$(EXTENSION_FOLDER) docker-compose $(COMPOSE_ARGS)
|
||||
compose-run = $(compose) run -T --rm
|
||||
compose-exec-wiki = $(compose) exec -T wiki
|
||||
|
||||
show-current-target = @echo; echo "======= $@ ========"
|
||||
|
||||
|
||||
# ======== CI ========
|
||||
# ======== Global Targets ========
|
||||
|
||||
.PHONY: ci
|
||||
ci: install
|
||||
$(show-current-target)
|
||||
$(compose-exec-wiki) bash -c "cd $(EXTENSION_FOLDER) && composer test"
|
||||
ci: install composer-test
|
||||
|
||||
.PHONY: ci-coverage
|
||||
ci-coverage: install
|
||||
$(show-current-target)
|
||||
$(compose-exec-wiki) bash -c "cd $(EXTENSION_FOLDER) && composer test-coverage"
|
||||
ci-coverage: install composer-test-coverage
|
||||
|
||||
.PHONY: install
|
||||
install: destroy up .install
|
||||
|
@ -45,24 +61,23 @@ down: .init .down
|
|||
destroy: .init .destroy
|
||||
|
||||
.PHONY: bash
|
||||
bash: .init
|
||||
$(show-current-target)
|
||||
$(compose) exec wiki bash -c "cd $(EXTENSION_FOLDER) && bash"
|
||||
bash: up .bash
|
||||
|
||||
.PHONY: show-logs
|
||||
show-logs: .init
|
||||
$(show-current-target)
|
||||
$(compose) logs -f || true
|
||||
|
||||
# ======== General Docker-Compose Helper Targets ========
|
||||
.PHONY: .build
|
||||
.build:
|
||||
$(show-current-target)
|
||||
$(compose) build $(BUILD_ARGS) wiki
|
||||
$(compose-ci) build wiki
|
||||
|
||||
.PHONY: .up
|
||||
.up:
|
||||
$(show-current-target)
|
||||
$(compose) up -d
|
||||
$(compose-ci) up -d
|
||||
|
||||
.PHONY: .install
|
||||
.install: .wait-for-db
|
||||
|
@ -78,28 +93,80 @@ show-logs: .init
|
|||
.PHONY: .down
|
||||
.down:
|
||||
$(show-current-target)
|
||||
$(compose) down
|
||||
$(compose-ci) down
|
||||
|
||||
.PHONY: .destroy
|
||||
.destroy:
|
||||
$(show-current-target)
|
||||
$(compose) down -v
|
||||
$(compose-ci) down -v
|
||||
|
||||
.PHONY: .bash
|
||||
.bash: .init
|
||||
$(show-current-target)
|
||||
$(compose-exec-wiki) bash -c "cd $(EXTENSION_FOLDER) && bash"
|
||||
|
||||
# ======== Test Targets ========
|
||||
|
||||
.PHONY: composer-test
|
||||
composer-test:
|
||||
$(show-current-target)
|
||||
$(compose-exec-wiki) bash -c "cd $(EXTENSION_FOLDER) && composer test"
|
||||
|
||||
.PHONY: composer-test-coverage
|
||||
composer-test-coverage:
|
||||
$(show-current-target)
|
||||
$(compose-exec-wiki) bash -c "cd $(EXTENSION_FOLDER) && composer test-coverage"
|
||||
|
||||
# ======== Dev Targets ========
|
||||
|
||||
.PHONY: dev-bash
|
||||
dev-bash: .init
|
||||
$(compose-dev) run -it wiki bash -c 'service apache2 start && bash'
|
||||
|
||||
.PHONY: run
|
||||
run:
|
||||
$(compose-dev) -f docker-compose-dev.yml run -it wiki
|
||||
|
||||
# ======== Releasing ========
|
||||
# VERSION = `node -e 'console.log(require("./extension.json").version)'`
|
||||
|
||||
# .PHONY: release
|
||||
# release: ci git-push gh-login
|
||||
# gh release create $(VERSION)
|
||||
|
||||
# .PHONY: git-push
|
||||
# git-push:
|
||||
# git diff --quiet || (echo 'git directory has changes'; exit 1)
|
||||
# git push
|
||||
|
||||
# .PHONY: gh-login
|
||||
# gh-login: require-GH_API_TOKEN
|
||||
# gh config set prompt disabled
|
||||
# @echo $(GH_API_TOKEN) | gh auth login --with-token
|
||||
|
||||
# .PHONY: require-GH_API_TOKEN
|
||||
# require-GH_API_TOKEN:
|
||||
# ifndef GH_API_TOKEN
|
||||
# $(error GH_API_TOKEN is not set)
|
||||
# endif
|
||||
|
||||
# ======== Helpers ========
|
||||
.PHONY: .init
|
||||
.init:
|
||||
$(show-current-target)
|
||||
$(eval COMPOSE_ARGS = --project-name ${extension}-$(DB_TYPE) --profile $(DB_TYPE))
|
||||
ifeq ($(DB_TYPE), sqlite)
|
||||
$(eval WIKI_DB_CONFIG = --dbtype=$(DB_TYPE) --dbpath=/tmp/sqlite)
|
||||
else
|
||||
$(eval WIKI_DB_CONFIG = --dbtype=$(DB_TYPE) --dbserver=$(DB_TYPE) --installdbuser=root --installdbpass=database)
|
||||
endif
|
||||
@echo "COMPOSE_ARGS: $(COMPOSE_ARGS)"
|
||||
|
||||
.PHONY: .wait-for-db
|
||||
.wait-for-db:
|
||||
$(show-current-target)
|
||||
ifneq ($(DB_TYPE), sqlite)
|
||||
$(compose-run) wait-for $(DB_TYPE):3306 -t 120
|
||||
endif
|
||||
|
||||
.PHONY: .init
|
||||
.init:
|
||||
$(show-current-target)
|
||||
ifeq ($(DB_TYPE), mysql)
|
||||
$(eval COMPOSE_ARGS = --project-name $(extension)-mysql --profile mysql)
|
||||
$(eval WIKI_DB_CONFIG = --dbtype=mysql --dbserver=mysql --installdbuser=root --installdbpass=database)
|
||||
else
|
||||
$(eval COMPOSE_ARGS = --project-name $(extension)-sqlite)
|
||||
$(eval WIKI_DB_CONFIG = --dbtype=sqlite --dbpath=/data/sqlite)
|
||||
endif
|
||||
@echo "COMPOSE_ARGS: $(COMPOSE_ARGS)"
|
||||
$(compose-run) wait-for $(DB_TYPE):3306 -t 120
|
||||
else ifeq ($(DB_TYPE), postgres)
|
||||
$(compose-run) wait-for $(DB_TYPE):5432 -t 120
|
||||
endif
|
|
@ -0,0 +1,4 @@
|
|||
services:
|
||||
wiki:
|
||||
volumes:
|
||||
- ./coverage:${EXTENSION_FOLDER}/coverage
|
|
@ -0,0 +1,8 @@
|
|||
services:
|
||||
wiki:
|
||||
volumes:
|
||||
- ./:${EXTENSION_FOLDER}
|
||||
- ${EXTENSION_FOLDER}/vendor/
|
||||
ports:
|
||||
- 8080:8080
|
||||
|
|
@ -1,17 +1,29 @@
|
|||
services:
|
||||
wiki:
|
||||
build: .
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
MW_VERSION: ${MW_VERSION}
|
||||
SMW_VERSION: ${SMW_VERSION}
|
||||
AR_VERSION: ${AR_VERSION}
|
||||
PHP_VERSION: ${PHP_VERSION}
|
||||
image: ${IMAGE_NAME}
|
||||
volumes:
|
||||
- ./coverage:${EXTENSION_FOLDER}/coverage
|
||||
|
||||
mysql:
|
||||
image: mysql:5
|
||||
image: ${DB_IMAGE:-mysql:5}
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=database
|
||||
profiles:
|
||||
- mysql
|
||||
|
||||
postgres:
|
||||
image: ${DB_IMAGE:-postgres:15}
|
||||
environment:
|
||||
- POSTGRES_USER=root
|
||||
- POSTGRES_PASSWORD=database
|
||||
profiles:
|
||||
- postgres
|
||||
|
||||
wait-for:
|
||||
image: mintel/docker-wait-for-it
|
||||
profiles:
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
# copy this to .env to easily modify local CI ENV variables
|
||||
|
||||
# cp env.template .env
|
||||
|
||||
MW_VERSION=1.39
|
||||
SMW_VERSION=4.1.1
|
||||
AR_VERSION=1.8.2
|
||||
PHP_VERSION=8.1
|
||||
DB_TYPE=mysql
|
||||
DB_IMAGE="mysql:8"
|
正在加载...
在新工单中引用