Skip to content

Commit d0c9234

Browse files
authored
Merge pull request aiminickwong#4 from jc21/master
v2 2.0.6 @ cd40ca7
2 parents 27faa5c + cd40ca7 commit d0c9234

File tree

412 files changed

+19264
-9384
lines changed

Some content is hidden

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

412 files changed

+19264
-9384
lines changed

.babelrc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"presets": [
3+
["env", {
4+
"targets": {
5+
"browsers": ["Chrome >= 65"]
6+
},
7+
"debug": false,
8+
"modules": false,
9+
"useBuiltIns": "usage"
10+
}]
11+
]
12+
}

.gitignore

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
.DS_Store
22
.idea
33
._*
4-
manager/node_modules
5-
manager/core*
6-
manager/dist
7-
manager/webpack_stats.html
8-
config/*
9-
letsencrypt/*
4+
node_modules
5+
core*
6+
config/development.json
7+
dist
8+
webpack_stats.html
9+
data/*
10+
yarn-error.log
11+
yarn.lock
12+
tmp
13+
certbot.log
14+

Dockerfile

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM jc21/nginx-proxy-manager-base
1+
FROM jc21/nginx-proxy-manager-base:latest
22

33
MAINTAINER Jamie Curnow <[email protected]>
44
LABEL maintainer="Jamie Curnow <[email protected]>"
@@ -7,6 +7,8 @@ ENV SUPPRESS_NO_CONFIG_WARNING=1
77
ENV S6_FIX_ATTRS_HIDDEN=1
88
RUN echo "fs.file-max = 65535" > /etc/sysctl.conf
99

10+
# Nginx, Node and required packages should already be installed from the base image
11+
1012
# root filesystem
1113
COPY rootfs /
1214

@@ -17,15 +19,21 @@ RUN curl -L -o /tmp/s6-overlay-amd64.tar.gz "https://github.com/just-containers/
1719
# App
1820
ENV NODE_ENV=production
1921

20-
#ADD LICENCE /srv/manager/LICENCE
21-
#ADD README.md /srv/manager/README.md
22-
ADD manager/dist /srv/manager/dist
23-
ADD manager/node_modules /srv/manager/node_modules
24-
ADD manager/src/backend /srv/manager/src/backend
25-
ADD manager/package.json /srv/manager/package.json
22+
ADD dist /app/dist
23+
ADD node_modules /app/node_modules
24+
ADD src/backend /app/src/backend
25+
ADD package.json /app/package.json
26+
ADD knexfile.js /app/knexfile.js
2627

2728
# Volumes
28-
VOLUME [ "/config", "/etc/letsencrypt" ]
29+
VOLUME [ "/data", "/etc/letsencrypt" ]
2930
CMD [ "/init" ]
3031

32+
# Ports
33+
EXPOSE 80
34+
EXPOSE 81
35+
EXPOSE 443
36+
EXPOSE 9876
37+
3138
HEALTHCHECK --interval=15s --timeout=3s CMD curl -f http://localhost:9876/health || exit 1
39+

Dockerfile.armhf

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
FROM jc21/nginx-proxy-manager-base:latest-armhf
2+
3+
MAINTAINER Jamie Curnow <[email protected]>
4+
LABEL maintainer="Jamie Curnow <[email protected]>"
5+
6+
ENV SUPPRESS_NO_CONFIG_WARNING=1
7+
ENV S6_FIX_ATTRS_HIDDEN=1
8+
RUN echo "fs.file-max = 65535" > /etc/sysctl.conf
9+
10+
# Nginx, Node and required packages should already be installed from the base image
11+
12+
# root filesystem
13+
COPY rootfs /
14+
15+
# s6 overlay
16+
RUN curl -L -o /tmp/s6-overlay-armhf.tar.gz "https://github.com/just-containers/s6-overlay/releases/download/v1.21.4.0/s6-overlay-armhf.tar.gz" \
17+
&& tar xzf /tmp/s6-overlay-armhf.tar.gz -C /
18+
19+
# App
20+
ENV NODE_ENV=production
21+
22+
ADD dist /app/dist
23+
ADD node_modules /app/node_modules
24+
ADD src/backend /app/src/backend
25+
ADD package.json /app/package.json
26+
ADD knexfile.js /app/knexfile.js
27+
28+
# Volumes
29+
VOLUME [ "/data", "/etc/letsencrypt" ]
30+
CMD [ "/init" ]
31+
32+
# Ports
33+
EXPOSE 80
34+
EXPOSE 81
35+
EXPOSE 443
36+
EXPOSE 9876
37+
38+
HEALTHCHECK --interval=15s --timeout=3s CMD curl -f http://localhost:9876/health || exit 1

Jenkinsfile

Lines changed: 125 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,155 @@
11
pipeline {
22
options {
3-
buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '10'))
3+
buildDiscarder(logRotator(numToKeepStr: '10'))
44
disableConcurrentBuilds()
55
}
66
agent any
77
environment {
8-
IMAGE_NAME = "nginx-proxy-manager"
9-
TEMP_IMAGE_NAME = "nginx-proxy-manager-build_${BUILD_NUMBER}"
10-
TAG_VERSION = getPackageVersion()
8+
IMAGE_NAME = "nginx-proxy-manager"
9+
BASE_IMAGE_NAME = "jc21/nginx-proxy-manager-base:latest"
10+
TEMP_IMAGE_NAME = "nginx-proxy-manager-build_${BUILD_NUMBER}"
11+
TEMP_IMAGE_NAME_ARM = "nginx-proxy-manager-arm-build_${BUILD_NUMBER}"
12+
TAG_VERSION = getPackageVersion()
13+
MAJOR_VERSION = "2"
1114
}
1215
stages {
1316
stage('Prepare') {
14-
steps {
15-
sh 'docker pull jc21/$IMAGE_NAME-base'
16-
sh 'docker pull $DOCKER_CI_TOOLS'
17-
}
18-
}
19-
stage('Build') {
2017
steps {
21-
sh 'docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base yarn --registry=$NPM_REGISTRY install'
22-
sh 'docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base gulp build'
23-
sh 'rm -rf node_modules'
24-
sh 'docker run --rm -v $(pwd)/manager:/srv/manager -w /srv/manager jc21/$IMAGE_NAME-base yarn --registry=$NPM_REGISTRY install --prod'
25-
sh 'docker run --rm -v $(pwd)/manager:/data $DOCKER_CI_TOOLS node-prune'
26-
sh 'docker build --squash --compress -t $TEMP_IMAGE_NAME .'
18+
sh 'docker pull $DOCKER_CI_TOOLS'
2719
}
2820
}
29-
stage('Publish') {
21+
stage('Build Develop') {
3022
when {
31-
branch 'master'
23+
branch 'develop'
3224
}
3325
steps {
34-
sh 'docker tag $TEMP_IMAGE_NAME ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:latest'
35-
sh 'docker push ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:latest'
36-
sh 'docker tag $TEMP_IMAGE_NAME ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:$TAG_VERSION'
37-
sh 'docker push ${DOCKER_PRIVATE_REGISTRY}/$IMAGE_NAME:$TAG_VERSION'
38-
sh 'docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:latest'
39-
sh 'docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:$TAG_VERSION'
40-
41-
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'dpass', usernameVariable: 'duser')]) {
42-
sh "docker login -u '${duser}' -p '$dpass'"
43-
sh 'docker push docker.io/jc21/$IMAGE_NAME:latest'
44-
sh 'docker push docker.io/jc21/$IMAGE_NAME:$TAG_VERSION'
26+
ansiColor('xterm') {
27+
// Codebase
28+
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME yarn install'
29+
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME npm run-script build'
30+
sh 'rm -rf node_modules'
31+
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME yarn install --prod'
32+
sh 'docker run --rm -v $(pwd):/data $DOCKER_CI_TOOLS node-prune'
33+
34+
// Docker Build
35+
sh 'docker build --pull --no-cache --squash --compress -t $TEMP_IMAGE_NAME .'
36+
37+
// Private Registry
38+
sh 'docker tag $TEMP_IMAGE_NAME $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:develop'
39+
sh 'docker push $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:develop'
40+
41+
// Dockerhub
42+
sh 'docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:develop'
43+
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'dpass', usernameVariable: 'duser')]) {
44+
sh "docker login -u '${duser}' -p '$dpass'"
45+
sh 'docker push docker.io/jc21/$IMAGE_NAME:develop'
46+
}
47+
48+
sh 'docker rmi $TEMP_IMAGE_NAME'
49+
}
50+
}
51+
}
52+
stage('Build Master') {
53+
parallel {
54+
stage('x86_64') {
55+
when {
56+
branch 'master'
57+
}
58+
steps {
59+
ansiColor('xterm') {
60+
// Codebase
61+
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME yarn install'
62+
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME npm run-script build'
63+
sh 'rm -rf node_modules'
64+
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME yarn install --prod'
65+
sh 'docker run --rm -v $(pwd):/data $DOCKER_CI_TOOLS node-prune'
66+
67+
// Docker Build
68+
sh 'docker build --pull --no-cache --squash --compress -t $TEMP_IMAGE_NAME .'
69+
70+
// Private Registry
71+
sh 'docker tag $TEMP_IMAGE_NAME $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:$TAG_VERSION'
72+
sh 'docker push $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:$TAG_VERSION'
73+
sh 'docker tag $TEMP_IMAGE_NAME $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:$MAJOR_VERSION'
74+
sh 'docker push $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:$MAJOR_VERSION'
75+
sh 'docker tag $TEMP_IMAGE_NAME $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:latest'
76+
sh 'docker push $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:latest'
77+
78+
// Dockerhub
79+
sh 'docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:$TAG_VERSION'
80+
sh 'docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:$MAJOR_VERSION'
81+
sh 'docker tag $TEMP_IMAGE_NAME docker.io/jc21/$IMAGE_NAME:latest'
82+
83+
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'dpass', usernameVariable: 'duser')]) {
84+
sh "docker login -u '${duser}' -p '$dpass'"
85+
sh 'docker push docker.io/jc21/$IMAGE_NAME:$TAG_VERSION'
86+
sh 'docker push docker.io/jc21/$IMAGE_NAME:$MAJOR_VERSION'
87+
sh 'docker push docker.io/jc21/$IMAGE_NAME:latest'
88+
}
89+
90+
sh 'docker rmi $TEMP_IMAGE_NAME'
91+
}
92+
}
93+
}
94+
stage('armhf') {
95+
when {
96+
branch 'master'
97+
}
98+
agent {
99+
label 'armhf'
100+
}
101+
steps {
102+
ansiColor('xterm') {
103+
// Codebase
104+
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME-armhf yarn install'
105+
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME-armhf npm run-script build'
106+
sh 'rm -rf node_modules'
107+
sh 'docker run --rm -v $(pwd):/app -w /app $BASE_IMAGE_NAME-armhf yarn install --prod'
108+
109+
// Docker Build
110+
sh 'docker build --pull --no-cache --squash --compress -t $TEMP_IMAGE_NAME_ARM -f Dockerfile.armhf .'
111+
112+
// Private Registry
113+
sh 'docker tag $TEMP_IMAGE_NAME_ARM $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:$TAG_VERSION-armhf'
114+
sh 'docker push $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:$TAG_VERSION-armhf'
115+
sh 'docker tag $TEMP_IMAGE_NAME_ARM $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:$MAJOR_VERSION-armhf'
116+
sh 'docker push $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:$MAJOR_VERSION-armhf'
117+
sh 'docker tag $TEMP_IMAGE_NAME_ARM $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:latest-armhf'
118+
sh 'docker push $DOCKER_PRIVATE_REGISTRY/$IMAGE_NAME:latest-armhf'
119+
120+
// Dockerhub
121+
sh 'docker tag $TEMP_IMAGE_NAME_ARM docker.io/jc21/$IMAGE_NAME:$TAG_VERSION-armhf'
122+
sh 'docker tag $TEMP_IMAGE_NAME_ARM docker.io/jc21/$IMAGE_NAME:$MAJOR_VERSION-armhf'
123+
sh 'docker tag $TEMP_IMAGE_NAME_ARM docker.io/jc21/$IMAGE_NAME:latest-armhf'
124+
125+
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'dpass', usernameVariable: 'duser')]) {
126+
sh "docker login -u '${duser}' -p '$dpass'"
127+
sh 'docker push docker.io/jc21/$IMAGE_NAME:$TAG_VERSION-armhf'
128+
sh 'docker push docker.io/jc21/$IMAGE_NAME:$MAJOR_VERSION-armhf'
129+
sh 'docker push docker.io/jc21/$IMAGE_NAME:latest-armhf'
130+
}
131+
132+
sh 'docker rmi $TEMP_IMAGE_NAME_ARM'
133+
}
134+
}
45135
}
46136
}
47137
}
48-
}
49-
triggers {
50-
bitbucketPush()
51138
}
52139
post {
53140
success {
54-
slackSend color: "#72c900", message: "SUCCESS: <${BUILD_URL}|${JOB_NAME}> build #${BUILD_NUMBER} - ${currentBuild.durationString}"
141+
juxtapose event: 'success'
142+
sh 'figlet "SUCCESS"'
55143
}
56144
failure {
57-
slackSend color: "#d61111", message: "FAILED: <${BUILD_URL}|${JOB_NAME}> build #${BUILD_NUMBER} - ${currentBuild.durationString}"
58-
}
59-
always {
60-
sh 'docker rmi $TEMP_IMAGE_NAME'
145+
juxtapose event: 'failure'
146+
sh 'figlet "FAILURE"'
61147
}
62148
}
63149
}
64150

65151
def getPackageVersion() {
66-
ver = sh(script: 'docker run --rm -v $(pwd)/manager:/data $DOCKER_CI_TOOLS bash -c "cat /data/package.json|jq -r \'.version\'"', returnStdout: true)
152+
ver = sh(script: 'docker run --rm -v $(pwd):/data $DOCKER_CI_TOOLS bash -c "cat /data/package.json|jq -r \'.version\'"', returnStdout: true)
67153
return ver.trim()
68154
}
155+

0 commit comments

Comments
 (0)