Skip to content

Commit 1ccbf6e

Browse files
authored
Merge pull request #2 from devilbox/release-0.1
Release 0.1
2 parents c594390 + 75c9944 commit 1ccbf6e

77 files changed

Lines changed: 9839 additions & 28 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
######################################
2+
# CUSTOM
3+
######################################
4+
5+
build/ansible/*.retry
6+
7+
8+
9+
######################################
10+
# GENERIC
11+
######################################
12+
13+
###### std ######
14+
.lock
15+
*.log
16+
17+
###### patches/diffs ######
18+
*.patch
19+
*.diff
20+
*.orig
21+
*.rej
22+
23+
24+
######################################
25+
# Operating Systems
26+
######################################
27+
28+
###### OSX ######
29+
._*
30+
.DS*
31+
.Spotlight-V100
32+
.Trashes
33+
34+
###### Windows ######
35+
Thumbs.db
36+
ehthumbs.db
37+
Desktop.ini
38+
$RECYCLE.BIN/
39+
*.lnk
40+
41+
42+
######################################
43+
# Editors
44+
######################################
45+
46+
###### Sublime ######
47+
*.sublime-workspace
48+
*.sublime-project
49+
50+
###### Eclipse ######
51+
.classpath
52+
.buildpath
53+
.project
54+
.settings/
55+
56+
###### Netbeans ######
57+
nbproject/private/
58+
59+
###### Intellij IDE ######
60+
.idea/
61+
.idea_modules/
62+
63+
###### vim ######
64+
*.swp
65+
*.swo
66+
*~
67+
68+
###### TextMate ######
69+
.tm_properties
70+
*.tmproj
71+
72+
###### BBEdit ######
73+
*.bbprojectd
74+
*.bbproject

.travis.yml

Lines changed: 120 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,127 @@
11
---
2+
3+
###
4+
### Travis settings
5+
###
6+
sudo: required
7+
language: python
8+
services:
9+
- docker
10+
11+
12+
###
13+
### Build Matrix
14+
###
215
env:
16+
global:
17+
- IMAGE: devilbox/php-fpm
18+
# travis encrypt DOCKER_USERNAME=user
19+
# travis encrypt DOCKER_PASSWORD=pass
20+
# Must be regenerated when repository name/owner changes
21+
# DOCKER_USERNAME
22+
- secure: "Y7xt3qZW9Zwrsgdd/aCf8ZqA7I039506ZDf/u/WVzGwNHta5YJJ7XYy8XG7XugyqGGXRVpfBiaqmDH4xsPLXyHXdOt2G38GXZHZXIgJOiEJ6aUfpdUxyeu8XIXkD2MDMmc3Kb27Yub/OadxRMLWEflzRnSXXs3KJ8TsbPHh0yRWDMsmHYOYl16gDGUX1izLkEx4J+9iA3+JwIFZk8by/OUuIIQ93bSNORpwHT8A1j7Y1kh8kYkPZ6nRxWO8xrc2wI1Rbp0X+ivLnOotxDZo53UI/0KroeSckDpoWfoz+B7mP+M+5B6kGlI2pKDNQB/ErYvnya6PdtFSS9skbvepR4tBhUOZDDY7NMRg9m3w0b9T1no+g3A4LBGXy6+OZZoiYAGy9LvqMhFkINqbBhRBX+mZhtG0pNXunfcu5dk81Ni/XpXDiy9JU98jItwsRj4SeaPfSt0LUNNXMS/fEwZyTy6TihN1CM3krJpV30Ic5rN64FRnrRjUuNU4lJ/W36yUhM29gb13ahh+f7sDsYoCzMwDM9HFe0YLb3ar3mW1lb3FuUugU2f2EupgCPY60X2XrY9aSgCfbdiVsA84dbLtRfHTPG7UbEcJW5RH8HS+9qVZBK+AcPqon9jbOJRVh7q99YW+R8X/XeyYpz7amacVmRus80+toZ16bbU7D2Qgjdek="
23+
# DOCKER_PASSWORD
24+
- secure: "ZRrVOVOkSCS2UxEi1HNF1iKefK4sDT/sPRl1HxMQjLnRRaAMdG0aRnBwQf2YAM2qzhCfN85qt6zZtC4awc2mHiZ88JrAZxBjK6xj4BwOyLbDuzpBsKXnx8Nix+wyYYKSjsC3LOYrsUe+4rvkw3tVvVaX8G2llojwdksF34VDmmHBmzCG/Bsexk7UqC+qw0PZm7BtctQO+IL0btmMDijRDElxfR+AuPvf9JdkhYzw9TOO7Jqd53NssNVGyL+XSV0dfGn8PkZTp1e8D+28pLK4oGVog+Wk7Cq94hSGjk5AkWKvL5441rupG1AA8K3njeDNMKdov4o+dmnkAH7Jh8tjShMhNhoxHce3IzpczjhoE1EyYQcyPf1qdfhV35Xv096iWX5809pp1MZF2oE5eism8JaU9NpGClryVbKVKtup8ko9/tCqz01Czq5Vue40feMkGtdePulg59OhyyPLYldsObw8QlZydkrmgVZe6b+GyybeiHraTfDq4pvTgUrC4Cmm5J3IB5Ig1THEiYKHfRJ5hSSMDDODeBXc8Xh6mFssEVshNx/jbUQWuAVYQFw/GIquVHxr6btbevrWIoD+zmqcc0L98u9pYH8w7b+gMgVJNCC4QQz2NCGGWw9l9/TmLrKJgeXbG18n8D314le1zuna6/VfH9pXIlbNO4hgz5NLHJk="
325
matrix:
4-
v=5.4
5-
v=5.5
6-
v=5.6
7-
v=7.0
8-
v=7.1
9-
v=7.2
10-
11-
stages:
12-
- base
13-
- mods
14-
- prod
15-
- work
26+
- PHP=5.4
27+
- PHP=5.5
28+
- PHP=5.6
29+
- PHP=7.0
30+
- PHP=7.1
31+
- PHP=7.2
32+
33+
34+
###
35+
### Install requirements
36+
###
37+
install:
38+
# Get newer docker version
39+
- max=100; i=0; while [ $i -lt $max ]; do if sudo apt-get update; then break; else i=$((i+1)); fi done
40+
- max=100; i=0; while [ $i -lt $max ]; do if sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce; then break; else i=$((i+1)); fi done
41+
- docker version
42+
43+
# Disable services enabled by default
44+
# http://docs.travis-ci.com/user/database-setup/#MySQL
45+
- sudo /etc/init.d/httpd stop || true
46+
- sudo /etc/init.d/memcached stop || true
47+
- sudo /etc/init.d/mongodb stop || true
48+
- sudo /etc/init.d/mysql stop || true
49+
- sudo /etc/init.d/nginx stop || true
50+
- sudo /etc/init.d/postgresql stop || true
51+
- sudo /etc/init.d/redis stop || true
52+
53+
- sudo service httpd stop || true
54+
- sudo service memcached stop || true
55+
- sudo service mongodb stop || true
56+
- sudo service mysql stop || true
57+
- sudo service nginx stop || true
58+
- sudo service postgresql stop || true
59+
- sudo service redis stop || true
60+
- netstat -tulpn
61+
1662

63+
###
64+
### Check generation changes, build and test
65+
###
1766
before_script:
1867
# Regenerate Dockerfiles and make sure nothing has changed (every stage)
68+
- pip install ansible
1969
- make generate
20-
- git diff-index --quiet HEAD || { echo "Build Changes"; git diff; git status; false; }
21-
22-
jobs:
23-
include:
24-
- stage: base
25-
script:
26-
- echo "${v}-base"
27-
- stage: mods
28-
script:
29-
- echo "${v}-mods"
30-
- stage: prod
31-
script:
32-
- echo "${v}-prod"
33-
- stage: work
34-
script:
35-
- echo "${v}-work"
70+
- git diff --quiet || { echo "Build Changes"; git diff; git status; false; }
71+
72+
# Build (multiple tries due to network outages)
73+
- max=100; i=0; while [ $i -lt $max ]; do if make build-base-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi
74+
- make test-base-${PHP//.}
75+
76+
- max=100; i=0; while [ $i -lt $max ]; do if make build-mods-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi
77+
- make test-mods-${PHP//.}
78+
79+
- max=100; i=0; while [ $i -lt $max ]; do if make build-prod-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi
80+
- make test-prod-${PHP//.}
81+
82+
- max=100; i=0; while [ $i -lt $max ]; do if make build-work-${PHP//.}; then break; else i=$((i+1)); fi; done; if [ $i -gt 98 ]; then false; fi
83+
- make test-work-${PHP//.}
84+
85+
# Test if PHP modules have changed
86+
- ./build/gen-readme.sh "${PHP}"
87+
- git diff --quiet || { echo "Build Changes"; git diff; git status; false; }
88+
89+
# Integration tests
90+
- true
91+
92+
93+
###
94+
### Push to Dockerhub
95+
###
96+
script:
97+
- if [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
98+
docker login --username "${DOCKER_USERNAME}" --password "${DOCKER_PASSWORD}" &&
99+
if [ "${TRAVIS_BRANCH}" == "master" ]; then
100+
docker push "${IMAGE}:${PHP}-base";
101+
docker push "${IMAGE}:${PHP}-mods";
102+
docker push "${IMAGE}:${PHP}-prod";
103+
docker push "${IMAGE}:${PHP}-work";
104+
elif [[ ${TRAVIS_BRANCH} =~ ^(release-[.0-9]+)$ ]]; then
105+
docker tag "${IMAGE}:${PHP}-base" "${IMAGE}:${PHP}-base-${TRAVIS_BRANCH}" &&
106+
docker tag "${IMAGE}:${PHP}-mods" "${IMAGE}:${PHP}-mods-${TRAVIS_BRANCH}" &&
107+
docker tag "${IMAGE}:${PHP}-prod" "${IMAGE}:${PHP}-prod-${TRAVIS_BRANCH}" &&
108+
docker tag "${IMAGE}:${PHP}-work" "${IMAGE}:${PHP}-work-${TRAVIS_BRANCH}" &&
109+
docker push "${IMAGE}:${PHP}-base-${TRAVIS_BRANCH}";
110+
docker push "${IMAGE}:${PHP}-mods-${TRAVIS_BRANCH}";
111+
docker push "${IMAGE}:${PHP}-prod-${TRAVIS_BRANCH}";
112+
docker push "${IMAGE}:${PHP}-work-${TRAVIS_BRANCH}";
113+
elif [ -n "${TRAVIS_TAG}" ]; then
114+
docker tag "${IMAGE}:${PHP}-base" "${IMAGE}:${PHP}-base-${TRAVIS_TAG}" &&
115+
docker tag "${IMAGE}:${PHP}-mods" "${IMAGE}:${PHP}-mods-${TRAVIS_TAG}" &&
116+
docker tag "${IMAGE}:${PHP}-prod" "${IMAGE}:${PHP}-prod-${TRAVIS_TAG}" &&
117+
docker tag "${IMAGE}:${PHP}-work" "${IMAGE}:${PHP}-work-${TRAVIS_TAG}" &&
118+
docker push "${IMAGE}:${PHP}-base-${TRAVIS_TAG}";
119+
docker push "${IMAGE}:${PHP}-mods-${TRAVIS_TAG}";
120+
docker push "${IMAGE}:${PHP}-prod-${TRAVIS_TAG}";
121+
docker push "${IMAGE}:${PHP}-work-${TRAVIS_TAG}";
122+
else
123+
echo "Skipping push to dockerhub on normal branches";
124+
fi
125+
else
126+
echo "Skipping push to dockerhub on PR";
127+
fi

Dockerfiles/base/Dockerfile-5.4

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-base.j2 instead.
2+
FROM php:5.4-fpm
3+
MAINTAINER "cytopia" <[email protected]>
4+
5+
6+
###
7+
### Labels
8+
###
9+
LABEL \
10+
name="cytopia's PHP-FPM 5.4 Image" \
11+
image="devilbox/php-fpm" \
12+
tag="5.4-base" \
13+
vendor="devilbox" \
14+
license="MIT"
15+
16+
17+
###
18+
### Envs
19+
###
20+
ENV MY_USER="devilbox" \
21+
MY_GROUP="devilbox" \
22+
MY_UID="1000" \
23+
MY_GID="1000"
24+
25+
26+
###
27+
### User/Group
28+
###
29+
RUN set -x \
30+
&& groupadd -g ${MY_GID} -r ${MY_GROUP} \
31+
&& useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER}
32+
33+
34+
###
35+
### Upgrade
36+
###
37+
RUN set -x \
38+
&& apt-get update \
39+
&& apt-get upgrade -y \
40+
&& rm -rf /var/lib/apt/lists/*
41+
42+
43+
###
44+
### Copy files
45+
###
46+
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
47+
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
48+
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
49+
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
50+
51+
52+
###
53+
### Verify
54+
###
55+
RUN set -x \
56+
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.4' \
57+
&& /usr/local/sbin/php-fpm --test \
58+
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
59+
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
60+
61+
62+
###
63+
### Ports
64+
###
65+
EXPOSE 9000
66+
67+
68+
###
69+
### Entrypoint
70+
###
71+
ENTRYPOINT ["/docker-entrypoint.sh"]

Dockerfiles/base/Dockerfile-5.5

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-base.j2 instead.
2+
FROM php:5.5-fpm
3+
MAINTAINER "cytopia" <[email protected]>
4+
5+
6+
###
7+
### Labels
8+
###
9+
LABEL \
10+
name="cytopia's PHP-FPM 5.5 Image" \
11+
image="devilbox/php-fpm" \
12+
tag="5.5-base" \
13+
vendor="devilbox" \
14+
license="MIT"
15+
16+
17+
###
18+
### Envs
19+
###
20+
ENV MY_USER="devilbox" \
21+
MY_GROUP="devilbox" \
22+
MY_UID="1000" \
23+
MY_GID="1000"
24+
25+
26+
###
27+
### User/Group
28+
###
29+
RUN set -x \
30+
&& groupadd -g ${MY_GID} -r ${MY_GROUP} \
31+
&& useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER}
32+
33+
34+
###
35+
### Upgrade
36+
###
37+
RUN set -x \
38+
&& apt-get update \
39+
&& apt-get upgrade -y \
40+
&& rm -rf /var/lib/apt/lists/*
41+
42+
43+
###
44+
### Copy files
45+
###
46+
COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh
47+
COPY ./data/docker-entrypoint.d /docker-entrypoint.d
48+
COPY ./data/php-fpm.conf /usr/local/etc/php-fpm.conf
49+
COPY ./data/php-fpm.d /usr/local/etc/php-fpm.d
50+
51+
52+
###
53+
### Verify
54+
###
55+
RUN set -x \
56+
&& php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^5.5' \
57+
&& /usr/local/sbin/php-fpm --test \
58+
&& PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \
59+
&& if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi
60+
61+
62+
###
63+
### Ports
64+
###
65+
EXPOSE 9000
66+
67+
68+
###
69+
### Entrypoint
70+
###
71+
ENTRYPOINT ["/docker-entrypoint.sh"]

0 commit comments

Comments
 (0)