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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 58 additions & 0 deletions
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 = "jenkins@staging.taskagile.com"
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

Lines changed: 11 additions & 0 deletions
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

Lines changed: 11 additions & 0 deletions
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

Lines changed: 16 additions & 0 deletions
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

Lines changed: 5 additions & 0 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy