Skip to content

Commit a9fbce4

Browse files
committed
add Dockerfile and Jenkinsfile
1 parent 92ec68f commit a9fbce4

File tree

6 files changed

+102
-0
lines changed

6 files changed

+102
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,4 @@ src/main/resources/static/favicon.ico
3232
src/main/resources/static/js/
3333
src/main/resources/templates/index.html
3434
spy.log
35+
docker/*.jar

Jenkinsfile

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
pipeline {
2+
agent any
3+
4+
environment {
5+
DOCKER_REPO = "taskagile/vuejs.spring-boot.mysql"
6+
DOCKER_CREDENTIAL = "dockerhub"
7+
JENKINS_AT_STAGING = "[email protected]"
8+
}
9+
10+
stages {
11+
stage("Build package") {
12+
steps {
13+
echo "Git commit: ${env.GIT_COMMIT}"
14+
sh "mvn clean package"
15+
}
16+
}
17+
18+
stage("Build Docker image") {
19+
steps {
20+
sh "cp target/app-0.0.1-SNAPSHOT.jar docker/app.jar"
21+
sh "docker build -t ${DOCKER_REPO}:${env.GIT_COMMIT} docker/"
22+
}
23+
}
24+
25+
stage("Push Docker build image") {
26+
steps {
27+
withDockerRegistry([ credentialsId: DOCKER_CREDENTIAL, url: '' ]) {
28+
sh "docker push ${DOCKER_REPO}:${env.GIT_COMMIT}"
29+
}
30+
}
31+
}
32+
33+
stage("Deploy to staging") {
34+
steps {
35+
sh "ssh ${JENKINS_AT_STAGING} rm -fr /app/env.list /app/start.sh"
36+
sh "scp ./docker/env.list ./docker/start.sh ${JENKINS_AT_STAGING}:/app"
37+
sh "ssh ${JENKINS_AT_STAGING} \"cd /app && ./start.sh ${env.GIT_COMMIT}\""
38+
}
39+
}
40+
41+
stage("Run E2E tests") {
42+
steps {
43+
sh "cd ${env.WORKSPACE}/front-end && npm run test:staging-e2e"
44+
}
45+
}
46+
}
47+
48+
post {
49+
always {
50+
emailext (
51+
subject: "[Jenkins] ${env.JOB_NAME} Build #${env.BUILD_NUMBER} - ${currentBuild.currentResult}",
52+
recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']],
53+
body: "${currentBuild.currentResult}\n\nJob: ${env.JOB_NAME}\nBuild: #${env.BUILD_NUMBER}\nGit commit: ${env.GIT_COMMIT}\nMore detail at: ${env.BUILD_URL}"
54+
)
55+
sh "docker rmi -f ${DOCKER_REPO}:${env.GIT_COMMIT}"
56+
}
57+
}
58+
}

docker/Dockerfile

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
From openjdk:8-jre-alpine
2+
3+
RUN apk add graphicsmagick=1.3.30-r0
4+
RUN ln -s /usr/bin/gm /usr/local/bin/gm
5+
6+
ADD app.jar /opt/taskagile/app.jar
7+
ADD application-docker.properties /config/application-docker.properties
8+
9+
EXPOSE 8080 9000
10+
11+
ENTRYPOINT [ "java", "-jar", "/opt/taskagile/app.jar" ]

docker/application-docker.properties

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
spring.datasource.url=jdbc:mysql://${TASK_AGILE_DB_HOST}:3306/${TASK_AGILE_DB_NAME}?useSSL=false
2+
spring.datasource.username=${TASK_AGILE_DB_USERNAME}
3+
spring.datasource.password=${TASK_AGILE_DB_PASSWORD}
4+
5+
spring.rabbitmq.host=${TASK_AGILE_MQ_HOST}
6+
spring.rabbitmq.port=${TASK_AGILE_MQ_PORT}
7+
spring.rabbitmq.username=${TASK_AGILE_MQ_USERNAME}
8+
spring.rabbitmq.password=${TASK_AGILE_MQ_PASSWORD}
9+
10+
spring.mail.host=${TASK_AGILE_MAIL_HOST}
11+
spring.mail.port=${TASK_AGILE_MAIL_PORT}

docker/env.list

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
TASK_AGILE_TOKEN_SECRET_KEY=60dKuW2Qpc3YkUoaa9i6qY5cyaGgQM8clfxpDGWS3sY=
2+
3+
TASK_AGILE_DB_HOST=<Your DB host>
4+
TASK_AGILE_DB_NAME=task_agile
5+
TASK_AGILE_DB_USERNAME=<Your DB username>
6+
TASK_AGILE_DB_PASSWORD=<Your DB password>
7+
8+
TASK_AGILE_MQ_HOST=<Your MQ host>
9+
TASK_AGILE_MQ_PORT=5672
10+
TASK_AGILE_MQ_USERNAME=<Your MQ username>
11+
TASK_AGILE_MQ_PASSWORD=<Your MQ password>
12+
13+
TASK_AGILE_MAIL_HOST=<Your Mail host>
14+
TASK_AGILE_MAIL_PORT=25
15+
16+
TASK_AGILE_CDN_URL=<Your CDN URL>

docker/start.sh

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
docker pull taskagile/vuejs.spring-boot.mysql:$1
2+
docker container stop taskagile
3+
docker run --detach --rm --name taskagile --env-file ./env.list \
4+
-e "SPRING_PROFILES_ACTIVE=staging,docker" \
5+
-p 8080:8080 -p 9000:9000 taskagile/vuejs.spring-boot.mysql:$1

0 commit comments

Comments
 (0)