1. 程式人生 > >jenkins 持續整合解決方案

jenkins 持續整合解決方案

jenkins 持續整合解決方案

0 緣起

因為測試環境需要不斷的改程式碼釋出, 特別麻煩和耗時, 所以學著測試大佬 搭建了持續整合.

採用技術:碼雲/svn/github+maven+jenkins+docker

1 環境準備

  • linux 系統

https://www.cnblogs.com/zuxing/articles/8718591.html

centos7ipaddr 無法檢視虛擬機器IP解決辦法

https://blog.csdn.net/wxx729418277/article/details/79130649

  • jdk

https://www.cnblogs.com/chy123/p/6750351.html

  • maven

https://blog.csdn.net/wakakaC/article/details/77688440

  • docker

https://blog.csdn.net/doegoo/article/details/80062132

  • tomcat

這個簡單就不說了

  • git

https://blog.csdn.net/wangfei0904306/article/details/57113408

  • jenkins

https://blog.csdn.net/yue31313/article/details/79884625

前面的環境準備完 就按照最後一篇部落格配置下 jenkins

2 構建指令碼

這個構建指令碼在 jenkins 配置裡面輸入

  • 模板
#!/bin/sh 
echo  $ref
mvn clean package
# image-name="映象名" image-container-name="容器名"
echo "開始構建, 映象:${image-name}, 容器:${image-container-name}" # 刪除舊的容器和映象 docker rm -f ${image-container-name} docker rmi -f ${image-name} # 根據當前目錄下的 dockerfile 構建新的映象,並且啟動 docker build -t ${image-name} . docker run -d -p 8888:8888 --name="${image-container-name}" [-v {要掛載的磁碟目錄}:{要掛載的磁碟目錄}] ${image-name}
  • 例項
#!/bin/sh 
echo  $ref
mvn clean package
echo "開始構建, 映象:test, 容器:test-container"
# 刪除舊的容器和映象
docker rm -f test-container
docker rmi -f test
# 根據當前目錄下的 dockerfile 構建新的映象,並且啟動
docker build -t test .
docker run -d -p 8888:8888 --name="test-container" test 
  • 注意 這個指令碼的執行目錄是在 jenkins 的構建目錄中, 我本機是: /root/.jenkins/workspace/test

我本機的目錄結構如下

[[email protected] test]# cd /root/.jenkins/workspace/test
[[email protected] test]# ll
總用量 12
-rw-r-----. 1 root root  234 9月   5 22:16 Dockerfile
-rw-r-----. 1 root root 1628 9月   5 19:15 pom.xml
-rw-r-----. 1 root root 1338 9月   5 19:15 README.md
drwxr-x---. 4 root root   30 9月   5 19:15 src
drwxr-x---. 9 root root  233 9月   5 22:49 target

3 Dockerfile 的編寫

我本地的 Dockerfile 是放在專案根目錄下的

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD target/test-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

4 流程

說一下自動構建的流程

  • 1 使用者在 jenkins 上點選構建
  • 2 jenkins 根據配置好的 git 地址, 去 把 原始碼 down 下來
  • 3 接著執行上面配置好的構建指令碼 去刪除就的 容器和映象,並且構建新的容器和映象 進行啟動
  • 4 如果想更智慧一點就在 碼雲上配置下 webhook, 這樣更新程式碼的時候就會自動構建拉

webhook 參考下: https://blog.csdn.net/xlgen157387/article/details/72852428 (只看 webhook 就行)