一、什麼是Jenkinshtml
二、Jenkins 的優勢java
三、什麼是持續集成(CI)linux
四、持續集成特色git
五、持續集成做用web
六、Jenkins 應用場景docker
七、Jenkins 如何安裝 下面借用 別人博客:http://www.javashuo.com/article/p-uwnlsnfu-mq.htmlshell
下面開始 記錄博客內容數據庫
項目要求 根據 commitId 下載git 代碼 (沒有找到具體 jenkins 插件 因此全使用shell編寫腳本完成功能)bash
一、由於每次都根據commitId 下載的代碼 那麼須要在執行以前刪除掉 歷史文件服務器
二、執行 Shell 別忘了 代碼開始加上( #!/bin/bash -x 表明這是shell腳本 )
#!/bin/bash -x HARBOR_IP='192.168.155.100:8082' # 鏡像名字 REPOSITORIES='projectName' # 項目名字 HARBOR_USER='' # 私服帳號 HARBOR_USER_PASSWD='' # 私服密碼 WORKSPACE='/var/lib/jenkins/workspace/' # linux 路徑 DOCKER_TAG='' # docker tag GIT_ACCOUNT='' # git帳號 GIT_PWD='' # git密碼 echo 讀取/var/rc下配置文件 # 我在linux服務器上放了個配置文件 #切換到根目錄 cd / #切換到配置文件目錄 cd /var/rc #讀取第一行內容 CONFIG_LINE_CONTENT=$(sed -n 4p project_config.txt) #截取須要的內容 #項目名字 PROJECT_NAME=${CONFIG_LINE_CONTENT%%|*} #截取左面第一個|以後全部內容 LINE=${CONFIG_LINE_CONTENT#*|} #分支 BRANCH=${LINE%%|*} #截取左面第一個|以後全部內容 LINE=${LINE#*|} #commitID GIT_COMMIDIT=${LINE%%|*} #覈對項目名字 if [ ${} == '' ]; then echo 下載 projectName 項目代碼 --- start #切換工做目錄 cd / cd /var/lib/jenkins/workspace/projectName echo 建立倉庫 git init echo 克隆master分支代碼 git clone -b ${BRANCH} http://${GIT_ACCOUNT}:${GIT_PWD}。。。。。。.git echo 下載 commitid 以前全部代碼 git checkout ${GIT_COMMIDIT} echo 下載 項目代碼 --- end echo 打包rc-ts-vo --- start echo 切換目錄到pom所在文件夾 cd / cd /var/lib/jenkins/workspace/ mvn clean install echo 打包rc-ts-vo --- end #echo 上傳rc-ts-vo --- start #mvn clean deploy -U #echo 上傳rc-ts-vo --- end echo 打包rc-ts-client --- start echo 切換目錄到pom所在文件夾 cd .. cd rc-ts-client mvn clean install echo 打包rc-ts-client --- end #echo 上傳rc-ts-client --- start #mvn clean deploy -U #echo 上傳rc-ts-client --- end
echo 操做docker私服 ---開始
echo 切換目錄
cd projectName
#DOCKER_TAG=$(cat version.txt)
DOCKER_TAG='v1.3'
echo 項目構建docker鏡像以前先打成jar包
mvn clean install
echo 拉取鏡像,發佈
echo docker 私有倉庫登陸
docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}
echo docker 打成鏡像
docker build -t ${HARBOR_IP}/${REPOSITORIES}:${DOCKER_TAG} .
echo docker 推送到私服
docker push ${HARBOR_IP}/${REPOSITORIES}:${DOCKER_TAG}
echo 操做docker私服 ---結束
fi
以上是jenkins 操做 linux、git、docker 所有代碼 下面貼上我利用插件 操做遠程服務器上docker容器
找到Jenkins 插件 Execute shell script on remote host using ssh
SSH site 這是目標主機 須要在系統設置裏面設置
Command 這是在目標主機上執行的shell
#!/bin/bash -x REPOSITORIES='projectName' HARBOR_IP='192.168.155.100:8082' WORKSPACE='/var/lib/jenkins/workspace/' DOCKER_TAG='vyhj' # Stop container, and delete the container. CONTAINER_ID=`docker ps | grep ${REPOSITORIES} | awk '{print $1}'` echo 容器ID ${CONTAINER_ID} if [ -n "${CONTAINER_ID}" ]; then docker stop ${CONTAINER_ID} docker rm ${CONTAINER_ID} else #若是容器啓動時失敗了,就須要docker ps -a才能找到那個容器 CONTAINER_ID_IAMGES=`docker ps -a | grep ${REPOSITORIES} | awk '{print $1}'` if [ -n "${CONTAINER_ID_IAMGES}" ]; then # 若是是第一次在這臺機器上拉取運行容器,那麼 docker ps -a也是找不到這個容器的 docker rm ${CONTAINER_ID_IAMGES} fi fi # Delete godseye_web image early version. IMAGE_ID=`docker images | grep ${REPOSITORIES} | awk '{print $3}'` echo 鏡像ID ${IMAGE_ID} if [ -n "${IMAGE_ID}" ]; then docker rmi ${IMAGE_ID} fi echo 私有倉下載鏡像 # Pull image. docker pull ${HARBOR_IP}/${REPOSITORIES}:${DOCKER_TAG} echo 建立容器 # Run. docker run -d --name ${REPOSITORIES} -p 9003:9003 ${HARBOR_IP}/${REPOSITORIES}:${DOCKER_TAG}
最後貼上一個 我讀取 commitId、項目名、分支名 文件格式
projectName|master|7ecb342f56e67cdfa6f05ea29aff5578840dffbd|end