以前我們編寫完代碼都需要專門的運維人員去部署到測試環境,有些小公司連測試環境都沒有,都是在本地直接測試,然後直接部署tomact,非常麻煩。現在我們藉助jenkins可以很方便的部署測試環境,開發人員只要提交代碼,之後點擊jenkins進行構建就好了。
安裝jenkins
- 將jenkins倉庫的祕鑰添加到本地
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
- 將官方提供的軟件倉庫地址加入到本地的apt軟件源中,/etc/apt/sources.list
$ deb https://pkg.jenkins.io/debian-stable binary/
- 安裝jenkins
$ sudo apt-get update
$ sudo apt-get install jenkins
- 啓動
$ sudo /etc/init.d/jenkins [start|restart|stop]
補充:修改jenkins啓動端口
在 /etc/default/jenkins 文件中,修改HTTP_PORT=8090, 我本地是8090
瀏覽器設置jenkins
- 訪問 http://localhost:8090
輸入初始化密碼,初始化密碼在啓動過程中,日誌中會打印
也可以在/var/lib/jenkins/secrets/initialAdminPassword文件中查看初始化密碼
- 安裝插件
單擊“繼續”。 下一個屏幕提供安裝建議的插件或選擇特定插件的選項。
選擇銳減的插件安裝,安裝過程有點慢,後面可以自己安裝其他插件
- 創建新用戶,或者使用默認的admin
-
點擊“開始使用Jenkins”來訪問主要的Jenkins儀表板:
創建我們的構建任務
- 新建任務
- 新建任務
選擇流水線任務
- 寫流水線腳本
#!groovy
pipeline {
agent any
environment {
GIT_REPO="https://gitee.com/xcmike/dker-sbt.git"
DOCKER_SCRIPT="/home/mike/scripts/"
PROJECT="hello"
}
stages {
stage('獲取代碼') {
steps {
echo "start clone code from git:${GIT_REPO}"
deleteDir()
git credentialsId: 'httpdown', url: "${GIT_REPO}"
}
}
stage('代碼靜態檢查') {
steps {
echo "start code check"
}
}
stage('maven 編譯打包') {
steps {
echo "start compile code"
sh "mvn clean package"
}
}
stage('docker構建鏡像') {
steps {
echo "start docker build image"
sh "${DOCKER_SCRIPT}/build.sh ${PROJECT}"
}
}
stage('啓動鏡像') {
steps {
echo "start docker run image"
sh "${DOCKER_SCRIPT}/deploy.sh"
}
}
}
}
- httpdown 憑據設置,就是代碼倉庫的用戶名和密碼
你可以新增一個
- 代碼倉庫推薦使用csdn的因爲github國內訪問比較慢
-
docker構建鏡像腳本,build.sh, 這個是直接消耗放在服務器上的,當然你可以直接在流水線直接寫
#!/bin/bash PROJECT_NAME=$1 TIME=`date "+%Y%m%d%H%M"` IMAGE_NAME=${PROJECT_NAME}:${TIME} docker build -t ${IMAGE_NAME} . cd - echo "${IMAGE_NAME}" > IMAGE_NAME
-
docker鏡像啓動腳本,deploy.sh,也在服務器上
#!/bin/bash IMAGE=`cat IMAGE_NAME` docker run -d -p 80:8080 ${IMAGE}
- 開始構建
訪問我們的服務
和上節課的應用一樣,只不過我用jenkins來實現了自動化。
訪問:http://服務器ip或域名/api/say... 返回:heelo,docker,這樣我們的CICD就實現了。
這裏我是用後端項目做得演示,前端項目一樣可以。pipeline中因爲我搭建的docker私有鏡像倉庫在jenkins中的授權問題,沒有搞定,所以跳過了發佈鏡像到私有倉庫,直接從本地啓動鏡像了。大家可以自己加一下。
歡迎關注我的公中號:mike啥都想搞
,一起交流學習