摘要:如果還沒有搭建好可以使用的,請先移步到這篇文章進行搭建使用自動部署服務一搭建篇目標通過實現推送代碼后自動部署基于的服務準備工作獲取示例項目或者直接復制以下文件內容獲取示例項目項目文件頁面文件鏡像文件部署文件部署腳本文件頁面文件項目很簡單,
如果還沒有搭建好可以使用 Docker 的 Jenkins,請先移步到這篇文章進行搭建
使用 Jenkins 自動部署 Docker 服務(一、Jenkins 搭建篇) 目標通過 Jenkins 實現推送代碼后自動部署基于 Docker 的服務準備工作
獲取示例項目或者直接復制以下文件內容
# 獲取示例項目 git clone https://github.com/kwkwc/jenkins_demo.git # 項目文件 ├── index.html # 頁面文件 ├── Dockerfile # 鏡像文件 ├── docker-compose.src.yml # Docker 部署文件 ├── deploy_jenkins.sh # 部署腳本 ├── Jenkinsfile # Jenkins Pipeline 文件頁面文件
項目很簡單,就是一個靜態網頁index.html
鏡像文件Jenkins demo Jenkins demo
鏡像以 nginx 為基礎鏡像,然后復制 index.html 進容器Dockerfile
FROM nginx:1.15.2 ENV REFRESHED_AT 2018-08-09 COPY ./index.html /usr/share/nginx/html/index.html RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log EXPOSE 80 STOPSIGNAL SIGTERM CMD ["nginx", "-g", "daemon off;"]Docker 部署文件
設置了 8081 端口和部署失敗重試docker-compose.src.yml
version: "3.4" services: jenkins_demo: image: IMAGE_LATEST deploy: restart_policy: condition: on-failure expose: - "80" ports: - 8081:80部署腳本 deploy_jenkins.sh
#!/bin/bash # 容器名稱 CONTAINER="jenkins_demo" # 鏡像名稱(以日期時間為鏡像標簽,防止重復) IMAGE=$CONTAINER":"$(date -d "today" +"%Y%m%d_%H%M%S") # 刪除滾動更新殘留的容器 docker rm `docker ps -a | grep -w $CONTAINER"_"$CONTAINER | awk "{print $1}"` # 強制刪除滾動更新殘留的鏡像 docker rmi --force `docker images | grep -w $CONTAINER | awk "{print $3}"` # 創建新鏡像 docker build -t $IMAGE . && # 刪除 docker-compose.jenkins.yml 文件,防止使用相同鏡像 rm -rf docker-compose.jenkins.yml && # 復制 docker-compose.src.yml 文件,防止污染原文件 cp docker-compose.src.yml docker-compose.jenkins.yml && # 替換鏡像名標志位為最新鏡像 sed -i s%IMAGE_LATEST%$IMAGE%g docker-compose.jenkins.yml && # 使用 docker stack 啟動服務 docker stack deploy -c docker-compose.jenkins.yml $CONTAINER實現無工具自動部署
我們暫時忘記 Jenkins,先看看無工具自動部署是怎么實現的初始化 Docker Swarm 集群網絡
由于我們使用了 Docker Stack,他可用于實現滾動更新,分布式集群,但依賴于 Docker Swarm 集群網絡,直接使用會報錯,所以需要先初始化 Docker Swarm 集群網絡
# 初始化 Docker Swarm 集群網絡 docker swarm init運行部署腳本
./deploy_jenkins.sh查看鏡像
docker images查看容器
docker ps瀏覽器打開
http://127.0.0.1:8081成功自動部署 更改內容
嘗試修改 index.html 內容再運行部署腳本 ./deploy_jenkins.sh效果 實現 Jenkins 自動部署
Jenkins 的自動部署本來比較復雜,但是后來有了 Pipeline,一切都簡單了,Pipeline 是 Jenkins 的一個插件,初始化 Jenkins 的時候會推薦安裝,如果沒有請自行安裝Jenkins Pipeline 文件
項目中如果有 Jenkinsfile 文件, Jenkins 檢測到就會自動按 Jenkinsfile 寫的流程運行命令,例如這個 Jenkinsfile 文件里面寫的就是自動幫我們運行剛才的部署腳本Jenkinsfile
pipeline { agent none stages { stage("Deploy") { agent any steps { echo "Deploying" sh "./deploy_jenkins.sh" } } } }新建任務
輸入任務名稱,選擇流水線填寫信息
只需要填寫流水線里面的信息查看任務
"定義" 選擇 "Pipeline script from SCM"
"SCM" 選擇 "Git"
"Repository URL" 填寫 Git 倉庫地址
選好 Git 分支
如果是私密倉庫,在 “Credentials” 那一欄添加賬號密碼然后選擇賬號就行
保存后回到主頁就可以看到我們新建的任務,可以看到狀態、運行情況等信息手動構建
點擊一下界面的立即構建按鈕就可以開始構建了
設置構建觸發器,例如每 30 分鐘查詢一次是否有更新,有則自動構建自動構建(主動通知)
主動通知需要安裝插件,這里以 Gitea 為例子,Gitea 使用的是 Gogs 的插件
"系統管理" --> "插件管理" --> "可選插件" 搜索 Gogs,勾選直接安裝,安裝成功后在項目配置里面會多出一個 "Gogs Webhook" 選項,不需要配置任何東西,安裝了就行
在 Gitea 的 Webhooks 中填寫下面的 URL 就可以實現推送代碼后主動通知 Jenkins 自動部署,其他基于 Git 的倉庫設置一樣
http://127.0.0.1:8080/gogs-webhook/?job=jenkins_demo
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27401.html
摘要:直接使用官方的鏡像一般會有兩個問題導致不能正常自動部署基于的服務。 直接使用 Jenkins 官方的鏡像一般會有兩個問題導致不能正常自動部署基于 Docker 的服務。 存在的問題 官方的鏡像默認不是使用 root 賬號,雖然 Jenkins 可以正常啟動,但是因為沒有權限導致不能向宿主機寫文件 Jenkins 基于 Docker 搭建,雖然 Jenkins 同樣可以正常啟動,但不能...
摘要:問題背景公司初創技術團隊,沒有任何基礎設施的情況下,需要搭建一系列管理以及自動化部署等工具所以引發了下面一系列的部署過程,歷時兩天,中間也是碰到各種問題,但最終把基本工具全部搭建成功,耶,下面帶大家一起看下此次搭建過程。 問題背景 公司初創技術團隊,沒有任何基礎設施的情況下,需要搭建一系列code管理以及自動化部署等工具....所以引發了下面一系列的部署過程,歷時兩天,中間也是碰到各種...
摘要:從開始搭建自動部署環境續前言上一篇從開始搭建自動部署環境雖然環境搭建起來了,但是配置少了一部分步驟。創建本地倉庫參考新建項目項目是我寫的一個用來測試環境的項目,代碼托管在上。 從0開始搭建自動部署環境(續) 前言 上一篇從0開始搭建自動部署環境雖然環境搭建起來了,但是配置少了一部分步驟。本來應該寫到上一篇中,但是這樣做篇幅過長了。另外,此篇會使用自動部署一個同步在Github上的Spr...
摘要:從開始搭建自動部署環境續前言上一篇從開始搭建自動部署環境雖然環境搭建起來了,但是配置少了一部分步驟。創建本地倉庫參考新建項目項目是我寫的一個用來測試環境的項目,代碼托管在上。 從0開始搭建自動部署環境(續) 前言 上一篇從0開始搭建自動部署環境雖然環境搭建起來了,但是配置少了一部分步驟。本來應該寫到上一篇中,但是這樣做篇幅過長了。另外,此篇會使用自動部署一個同步在Github上的Spr...
摘要:目前官方已開始推薦使用替代之前的做為基礎鏡像環境。包括鏡像下載速度加快,鏡像安全性提高,主機之間的切換更方便,占用更少磁盤空間等。 有了前幾篇的基礎后,我們現在已經能 docker 篇: 構建 docker 鏡像 上傳私有倉庫 拉取私有鏡像 啟動容器 jenkins 篇: 配置 pipeline 觸發 pipeline 接下來就可以結合兩者,用 jenkins + docker...
閱讀 2562·2021-11-22 12:05
閱讀 3447·2021-10-14 09:42
閱讀 1679·2021-07-28 00:15
閱讀 1986·2019-08-30 11:08
閱讀 1482·2019-08-29 17:31
閱讀 926·2019-08-29 16:42
閱讀 2335·2019-08-26 11:55
閱讀 2112·2019-08-26 11:49