docker+gitlab+jenkins從零搭建自動化部署

介紹

本文主要通過docker+gitlab+jenkins來實現自動化集成和部署的全過程,並不會詳細的去介紹各種工具的功能。

流程結構

jenkins-gitlab CI流程

準備工作

  1. 1臺測試服務器,用於安裝docker, 並在docker中配置jenkins,部署代碼等。(公司準備的是內網測試機)
  2. 新建一個vue項目,然後推送到gitlab倉儲。

開始配置工作

docker

1. 在服務器上安裝docker
  1. 更新軟件庫
yum update -y
  1. 安裝docker
yum install docker -y
  1. 啓動docker
 service docker start
  1. docker相關命令
 service docker restart  // 重啓docker服務
 service docker stop     // 停止docker服務
1. 在docker中安裝jenkins

一般我們習慣性的從docker遠程倉儲直接pull 鏡像的最新版,而安裝最新版的jenkins鏡像, 鏡像啓動後, 在安裝jenkins一系列的plugin 時, 重重受阻, 各種失敗, 原因是docker hub 上最新的jenkins 只有2.60.1 版本,很多plugin 都是不支持的。
在jenkins 的官方docker 鏡像博客裏: docker hub 裏面的jenkins 鏡像已經不再維護, 建議使用: Jenkins/jenkins 。

  1. 拉取jenkins鏡像
 docker pull jenkins/jenkins
  1. 啓動jenkins
sudo docker run -d -u 0 --privileged  --name jenkins_gitlab -p 49003:8080 -v /root/jenkins_gitlab:/var/jenkins_home  jenkins/jenkins
  • -u 0

指的是傳入root賬號ID,覆蓋容器中內置的賬號

  • -v /root/jenkins_gitlab:/var/jenkins_home
    指的是 將docker容器內的目錄/var/jenkins_home映射到宿主機
    /root/jenkins_gitlab目錄上

  • –name jenkins_gitlab

將容器命名爲 jenkins_gitlab

  • -p 49003:8080

端口映射,將容器的8080端口映射到宿主機的49003端口

  • –privileged

賦予最高權限

  • 整體含意
    運行一個鏡像爲jenkins/jenkinst的容器,命名爲jenkins_gitlab,使用賬root號覆蓋容器中的賬號,賦予最高權限,將容器的
    /var/jenkins_home映射到宿主機的
    /root/jenkins_gitlab目錄下,映射容器中8080端口到宿主機49003端口
  1. 查看jenkins

執行完成後,等待幾十秒,等待jenkins容器啓動初始化。
可以查看宿主機 ’ /root/jenkins_gitlab ’ 下是否多了很多文件
這裏訪問http://服務器ip:49003 查看jenkins是否啓動成功
看到如下界面說明啓動成功:
jenkins.png

  • 上圖需要輸入管理員密碼,以下命令查看,然後點擊continue繼續
cat /root/jenkins_gitlab/secrets/initialAdminPassword
  • 點擊安裝
    install.png
    install.png

  • 安裝成功後,創建管理員賬戶
    creatAccount.png

  • 輸入賬號密碼信息後點擊保存(信息要填完),來到首頁
    image.png

  • 配置jenkins, 首先安裝相應的插件
    點擊系統配置,如果這個頁面有許多錯誤出現, 按照提示,去安裝缺失的插件即可,如果安裝特別慢也可以選擇手動安裝,插件安裝方法如下:
    manageJenkins.png
    點擊插件管理
    manageJenkins2.png.png

manageJenkins3.png.png

  • 安裝ssh插件
    image.png
    成功安裝後,進入系統管理–系統配置
    manageJenkins4.png
    configureSystem.png

選擇高級,輸入服務器IP,用戶名,密碼,然後點擊 Test Configuration

  • 安裝gitlab、gitlab hook插件(安裝步驟同上,具體講一些配置)
Jenkins-to-GitLab authentication

configureSystem2.jpeg

點擊add,填寫相應的gitlab api token
configureSystem3.png
獲取gitlab的 access token
accessToken.png

系統配置好後,我們進行項目的配置

  1. 首先,新建一個項目
    creat-item.png
  2. 創建成功後,進入項目的配置頁面,選擇Source Code Management 進行代碼倉庫的配置
    gitlab.png
注意
  • 如果倉庫地址選擇http方式,一定要寫服務器的ip地址,使用域名時會報錯
    source-code.png

  • 認證的時候,可以選擇username,password或者是gitlab api token的方式進行,點擊add進行認證配置。如果是前者,配置完成後一定要重新去選擇一下你剛纔配置的用戶名和密碼,因爲默認選中的不是你新填寫的。

用戶名,密碼認證
credential.png
gitlab api token認證

  1. 源碼管理配置完成後,我們可以移步 Build Environment,我們來搭建構建環境,選擇Send files or execute commands over SSH after the build runs,輸入我們需要執行的ssh腳本,同時服務器上進行相關的nginx配置
    build-environment.png
    事例的shell腳本如下
sudo docker stop nodeapp || true \
 && sudo docker rm nodeapp || true \ 
cd /root/jenkins_gitlab/workspace/vuejenkinsdemo  \
&& ls \
 && sudo docker run -d --privileged=true --name nodeapp -p 3000:3000 -v /root/jenkins_gitlab/workspace/vuejenkinsdemo:/home/project/ node \
&& pwd \
&& cd /root/jenkins_gitlab/workspace/vuejenkinsdemo \
&& ls \
&& npm i \
&& npm run build \
&& ls \

  1. 配置完成後,點擊save,進入到項目的執行頁面
    build.png
    console-output.png

  2. 到此,我們已經實現了手動一鍵部署

  3. 接下來我們配置GitLab webhook,實現自動部署

GitLab-to-Jenkins authentication
  • 進入到項目配置頁面,選擇build triggers,配置如下,gitlab webhook url 如圖所示,然後點擊advanced,找到secret token,點擊生成,獲得secret token的值
    build-triggers.png
    secreat-token.png
  • 移步gitlab, 找到項目,選擇setting–>integrations,配置完成後選擇add webhook,然後點擊下方test,提示成功後,去jenkins構建頁面可以看到有任務正在構建,也可以根據構建結果進行錯誤排查
    gitlab-webhook1.png
    gitlab-webhook2.png
    gitlab-webhook3.png
注意
  • 當點擊test時,由於本地化的原因,報了500錯誤,修改方式是應該允許來自鉤子和服務的對本地網絡的請求,
    方式一:
    gitlab-configuration.png
    方式二:
curl -X PUT --header "PRIVATE-TOKEN:pKt5yVfsysShHg_r4xkT" http://gitlab.univ.com/api/v4/application/settings?allow_local_requests_from_hooks_and_services=true

其中,PRIVATE-TOKEN是在gitlab中獲取的access token.但是這個需要權限。如果沒有權限設置的話,讓gitlab的管理員幫忙設置一下就可以了。
7. 到此,我們已經完成了一個簡單的項目自動化部署過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章