commit
989d5d8a0b
35
.travis.yml
35
.travis.yml
|
@ -1,5 +1,8 @@
|
||||||
sudo: false
|
sudo: false
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
email: false
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
|
@ -7,16 +10,24 @@ branches:
|
||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
env:
|
test-extensions-job-template: &test-extensions-job-template
|
||||||
global:
|
stage: Test extensions
|
||||||
|
if: type = pull_request
|
||||||
|
script: ./scripts/travisci-test-extensions
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
include:
|
||||||
|
- <<: *test-extensions-job-template
|
||||||
|
name: Test extensions on Alpine Linux
|
||||||
|
env: DOCKER_DISTRO=alpine
|
||||||
|
|
||||||
|
- <<: *test-extensions-job-template
|
||||||
|
name: Test extensions on Debian Linux
|
||||||
|
env: DOCKER_DISTRO=debian
|
||||||
|
|
||||||
|
- stage: Update docs
|
||||||
|
name: Update README.md
|
||||||
|
if: branch = master AND type = push
|
||||||
|
env:
|
||||||
- secure: "vsl8z41oBky/MDRDKqs74Bif6BJldCPFVdl2lbPcjehOYG5cZ4YRLIEuhgJfnOglCGdyY6gh/2umSowRI4r5mC/ZR42RKJzWj9xQX2usJbzeOeZj+5eQv5im1DVwRmigUMzQOS743bd/zEeR9J3MLMgTGhKWEPKOJI6CHseUIKazAc0Z8vH6055YtkhGMqnolOe9h0gJx/sLP18qo2LTw82SyjOAMfbyYuHpiLznAqIOpNtwyj9WAujE3qN2oCo+9ALOnnrlINPqeLjnIOxRcSgYO4wIGPGSXIDTquuUht0McszOLuC9/kc6RybcyxmcqsssYRK2y0DQuavzyja5UaB4Pzf2vMrlbozAxdtF3oadZzfsAYfbhzaLbx0g1aAzL1CTJvXrWkZQgiy2c7tboXKJ3SvOqDp+GXEw08kCTpUq1AYSLw8ExlqcWZGiQxJfnfA05fWOkf8xM38ZQ+LPUHyGrt+PIw8FPAGhOV4E+BmHUlOoXOwoNllCEJ4QNkwxYT90eAMS5Rw8q6KASedwDFwyPCv8VtpNEtsl/FVa3m8/6wA7QmtuPxg7E2wceSkzsqHEcGLzERb4DnhVfrW0wv8zRw92vsnBmZdxusBT5uuyp9h5asjj6YhhVJ52g2NdCAGJlobiPk5X4uifshcdlcS8vF/jBMpI03XyJU4V4xc="
|
- secure: "vsl8z41oBky/MDRDKqs74Bif6BJldCPFVdl2lbPcjehOYG5cZ4YRLIEuhgJfnOglCGdyY6gh/2umSowRI4r5mC/ZR42RKJzWj9xQX2usJbzeOeZj+5eQv5im1DVwRmigUMzQOS743bd/zEeR9J3MLMgTGhKWEPKOJI6CHseUIKazAc0Z8vH6055YtkhGMqnolOe9h0gJx/sLP18qo2LTw82SyjOAMfbyYuHpiLznAqIOpNtwyj9WAujE3qN2oCo+9ALOnnrlINPqeLjnIOxRcSgYO4wIGPGSXIDTquuUht0McszOLuC9/kc6RybcyxmcqsssYRK2y0DQuavzyja5UaB4Pzf2vMrlbozAxdtF3oadZzfsAYfbhzaLbx0g1aAzL1CTJvXrWkZQgiy2c7tboXKJ3SvOqDp+GXEw08kCTpUq1AYSLw8ExlqcWZGiQxJfnfA05fWOkf8xM38ZQ+LPUHyGrt+PIw8FPAGhOV4E+BmHUlOoXOwoNllCEJ4QNkwxYT90eAMS5Rw8q6KASedwDFwyPCv8VtpNEtsl/FVa3m8/6wA7QmtuPxg7E2wceSkzsqHEcGLzERb4DnhVfrW0wv8zRw92vsnBmZdxusBT5uuyp9h5asjj6YhhVJ52g2NdCAGJlobiPk5X4uifshcdlcS8vF/jBMpI03XyJU4V4xc="
|
||||||
|
script: ./scripts/travisci-update-readme
|
||||||
install:
|
|
||||||
- true
|
|
||||||
|
|
||||||
script:
|
|
||||||
- if test "${TRAVIS_EVENT_TYPE:-}" = 'pull_request'; then ./scripts/travisci-test-new-extensions; fi
|
|
||||||
- if test "${TRAVIS_EVENT_TYPE:-}" = 'push' && test "${TRAVIS_BRANCH:-}" = 'master'; then ./scripts/travisci-update-readme; fi
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
email: false
|
|
||||||
|
|
24
README.md
24
README.md
|
@ -4,10 +4,7 @@
|
||||||
|
|
||||||
This repository contains a script that can be used to easily install a PHP extension inside the [official PHP Docker images](https://hub.docker.com/_/php/).
|
This repository contains a script that can be used to easily install a PHP extension inside the [official PHP Docker images](https://hub.docker.com/_/php/).
|
||||||
|
|
||||||
|
The script works both for Alpine and Debian Linux.
|
||||||
## Known limits
|
|
||||||
|
|
||||||
Currently the script requires the Debian-based images (no Alpine).
|
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
@ -33,11 +30,7 @@ COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr
|
||||||
RUN install-php-extensions gd xdebug
|
RUN install-php-extensions gd xdebug
|
||||||
```
|
```
|
||||||
|
|
||||||
`install-php-extensions` will install all the required APT packages.
|
`install-php-extensions` will install all the required APT/APK packages; at the end of the script execution, the no-more needed packages will be removed.
|
||||||
If you want to remove the APT development packages (which shouldn't be needed after the PHP extensions have been installed) and other no longer required packages, you can use the `--cleanup` option (**EXPERIMENTAL**):
|
|
||||||
```
|
|
||||||
install-php-extensions --cleanup gd xdebug
|
|
||||||
```
|
|
||||||
|
|
||||||
## Supported PHP extensions
|
## Supported PHP extensions
|
||||||
|
|
||||||
|
@ -157,3 +150,16 @@ Some extension has special requirements:
|
||||||
|
|
||||||
Test: gd, zip
|
Test: gd, zip
|
||||||
```
|
```
|
||||||
|
If your pull request contains multiple commits, we'll check the "Test:" message of every commit.
|
||||||
|
If you want to stop parsing next commits, add `-STOP-` in the "Test:" line, for example:
|
||||||
|
```
|
||||||
|
Improve the GD and ZIP extensions
|
||||||
|
|
||||||
|
Test: gd, zip, -STOP-
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Do you want to really say thank you?
|
||||||
|
|
||||||
|
You can offer me a [monthly coffee](https://github.com/sponsors/mlocati) or a [one-time coffee](https://paypal.me/mlocati) :wink:
|
||||||
|
|
|
@ -20,6 +20,7 @@ mcrypt 5.6 7.0 7.1 7.2 7.3 7.4
|
||||||
memcache 5.6
|
memcache 5.6
|
||||||
memcached 5.6 7.0 7.1 7.2 7.3 7.4
|
memcached 5.6 7.0 7.1 7.2 7.3 7.4
|
||||||
msgpack 5.6 7.0 7.1 7.2 7.3 7.4
|
msgpack 5.6 7.0 7.1 7.2 7.3 7.4
|
||||||
|
mssql 5.6
|
||||||
mysql 5.6
|
mysql 5.6
|
||||||
mysqli 5.6 7.0 7.1 7.2 7.3 7.4
|
mysqli 5.6 7.0 7.1 7.2 7.3 7.4
|
||||||
odbc 5.6 7.0 7.1 7.2 7.3 7.4
|
odbc 5.6 7.0 7.1 7.2 7.3 7.4
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -26,20 +26,28 @@ fi
|
||||||
#
|
#
|
||||||
# Outputs:
|
# Outputs:
|
||||||
# the full docker image ID
|
# the full docker image ID
|
||||||
getExtensionImage () {
|
getDockerImageName () {
|
||||||
case "${2}" in
|
case "${2}" in
|
||||||
*)
|
*)
|
||||||
getExtensionImage_version="${2}"
|
getDockerImageName_version="${2}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
getExtensionImage_result="php:${getExtensionImage_version}-cli"
|
getDockerImageName_suffix='-cli'
|
||||||
getExtensionImage_reqs="${TRAVIS_BUILD_DIR}/data/special-requirements"
|
getDockerImageName_reqs="${TRAVIS_BUILD_DIR}/data/special-requirements"
|
||||||
if test -f "${getExtensionImage_reqs}"; then
|
if test -f "${getDockerImageName_reqs}"; then
|
||||||
if test -n "$(cat "${getExtensionImage_reqs}" | grep -E "^${1}[ \t]+zts[ \t]*$")"; then
|
if test -n "$(cat "${getDockerImageName_reqs}" | grep -E "^${1}[ \t]+zts[ \t]*$")"; then
|
||||||
getExtensionImage_result="php:${getExtensionImage_version}-zts"
|
getDockerImageName_suffix="-zts"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
printf '%s' "${getExtensionImage_result}"
|
case "${DOCKER_DISTRO:-}" in
|
||||||
|
alpine)
|
||||||
|
getDockerImageName_distro="-$DOCKER_DISTRO"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
getDockerImageName_distro=''
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
printf 'php:%s%s%s' "${getDockerImageName_version}" "${getDockerImageName_suffix}" "${getDockerImageName_distro}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,10 +66,10 @@ testExtension () {
|
||||||
printf ' INVALID PHP VERSION: %s\n' "${2}" >&2
|
printf ' INVALID PHP VERSION: %s\n' "${2}" >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
testExtension_Image="$(getExtensionImage "${1}" "${2}")"
|
testExtension_Image="$(getDockerImageName "${1}" "${2}")"
|
||||||
printf ' - Docker image: %s\n' "${testExtension_Image}"
|
printf ' - Docker image: %s\n' "${testExtension_Image}"
|
||||||
testExtension_out=`mktemp`
|
testExtension_out=`mktemp`
|
||||||
if $(docker run --rm --volume "${TRAVIS_BUILD_DIR}:/app" --workdir /app "${testExtension_Image}" bash -c "./install-php-extensions '${1}' && php ./scripts/check-installed-extension.php '${1}'" >"${testExtension_out}" 2>&1); then
|
if $(docker run --rm --volume "${TRAVIS_BUILD_DIR}:/app" --workdir /app "${testExtension_Image}" sh -c "./install-php-extensions '${1}' && php ./scripts/check-installed-extension.php '${1}'" >"${testExtension_out}" 2>&1); then
|
||||||
rm -rf "${testExtension_out}"
|
rm -rf "${testExtension_out}"
|
||||||
printf ' - Passed\n'
|
printf ' - Passed\n'
|
||||||
return 0
|
return 0
|
||||||
|
@ -148,6 +156,9 @@ getAllPHPVersionsFor () {
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# $1: the commit hash
|
# $1: the commit hash
|
||||||
#
|
#
|
||||||
|
# Set:
|
||||||
|
# STOP_NEXT_COMMITS to 1 if we should skip next commits
|
||||||
|
#
|
||||||
# Return:
|
# Return:
|
||||||
# 0 (true): if test passes
|
# 0 (true): if test passes
|
||||||
# 1 (false): if test fails
|
# 1 (false): if test fails
|
||||||
|
@ -178,7 +189,9 @@ testExtensionsFromMessage () {
|
||||||
if test -n "$TESTLIST"; then
|
if test -n "$TESTLIST"; then
|
||||||
IFS=' ,;'
|
IFS=' ,;'
|
||||||
for COMMIT_LINE_EXT in $TESTLIST; do
|
for COMMIT_LINE_EXT in $TESTLIST; do
|
||||||
if test -z "$TEST_EXTENSIONS"; then
|
if test $COMMIT_LINE_EXT = '-STOP-'; then
|
||||||
|
STOP_NEXT_COMMITS=1
|
||||||
|
elif test -z "$TEST_EXTENSIONS"; then
|
||||||
TEST_EXTENSIONS=$COMMIT_LINE_EXT;
|
TEST_EXTENSIONS=$COMMIT_LINE_EXT;
|
||||||
else
|
else
|
||||||
if ! stringInList "$COMMIT_LINE_EXT" "$TEST_EXTENSIONS"; then
|
if ! stringInList "$COMMIT_LINE_EXT" "$TEST_EXTENSIONS"; then
|
||||||
|
@ -202,7 +215,7 @@ testExtensionsFromMessage () {
|
||||||
return $testExtensionsFromMessage_result
|
return $testExtensionsFromMessage_result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STOP_NEXT_COMMITS=0
|
||||||
TESTS_RESULTS=0
|
TESTS_RESULTS=0
|
||||||
ADDED_EXTENSION_LINE=
|
ADDED_EXTENSION_LINE=
|
||||||
FOUND_ATAT=
|
FOUND_ATAT=
|
||||||
|
@ -231,6 +244,9 @@ for COMMIT_HASH in $(git -C "${TRAVIS_BUILD_DIR}" log --pretty='format:%H' "${TR
|
||||||
if ! testExtensionsFromMessage "$COMMIT_HASH"; then
|
if ! testExtensionsFromMessage "$COMMIT_HASH"; then
|
||||||
TESTS_RESULTS=1
|
TESTS_RESULTS=1
|
||||||
fi
|
fi
|
||||||
|
if test $STOP_NEXT_COMMITS -eq 1; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if test ${TESTS_RESULTS} -ne 0; then
|
if test ${TESTS_RESULTS} -ne 0; then
|
Loading…
Reference in New Issue