前言
一直想用Docker搭建jenkins構建環境。現在實踐操作了下,一套使用gitee+jenkins+nginx部署的環境。
搭建完成後,具體構建執行流程:
本文主要內容有:
docker環境安裝
利用docker-compose啟動容器
配置jenkins
使用gitee+jenkins+nginx完成構建流程
1. 搭建環境
執行環境:阿里雲伺服器 2核2G 伺服器
1.1 安裝docker、docker-compose
檢視雲伺服器廠商官方文件即可。
1.2 拉取映象
1.2.1 nginx安裝
1.2.2 git安裝
Git安裝:
// 安裝git yum install -y git // 生成金鑰 ssh-keygen -t rsa -C "root" // 複製公鑰 cat ~/.ssh/id_rsa.pub
需要將公鑰新增到Git倉庫,方便拉取程式碼。
步驟如下:
使用
cat ~/.ssh/id_rsa.pub
命令,複製公鑰內容;登入到Github或者gitee或者gitlab儲存庫託管服務(例如 GitHub、GitLab 或 Bitbucket);
賬戶設定,找到SSH,新增公鑰。
1.2.3 jenkins安裝
拉取jenkins映象:
docker pull jenkins/jenkins:lts
1.3 執行映象
執行多個映象檔案,使用docker-compose進行啟動。
docker-compose.yaml檔案:
version: '3' networks: frontend: external: true services: # 容器 docker_jenkins: user: root # root許可權 restart: always # 重啟方式 image: jenkins/jenkins:lts # 使用的映象 container_name: jenkins # 容器名稱 environment: - TZ=Asia/Shanghai #- "JENKINS_OPTS=--prefix=/jenkins_home" # 自定義 jenkins 訪問字首(上下文context) ports: # 對外暴露的埠定義 - 8080:8080 - 50000:50000 volumes: # 卷掛載路徑 - /docker/jenkins_home/:/var/jenkins_home # 掛載到容器內的jenkins_home目錄 - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose docker_nginx_dev: # nginx-dev環境 restart: always image: nginx container_name: nginx_dev ports: - 80:80 - 443:443 volumes: - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf #nginx預設配置檔案 - /docker/html:/usr/share/nginx/html # 靜態資原始檔 - /docker/nginx/logs:/var/log/nginx # 日誌檔案 - /docker/nginx/conf/conf.d:/etc/nginx/conf.d # nginx配置檔案,用於單獨配置
需要新建資料夾:
mkdir /docker mkdir /docker/compose mkdir /docker/jenkins_home mkdir /docker/nginx mkdir /docker/nginx/conf mkdir /docker/nginx/conf/conf.d mkidr /docker/nginx/logs mkdir /docker/html
進入/docker/compose/
執行docker-compose up -d
啟動容器。使用docker ps -a
可檢視容器是否執行。
安裝版本如下:
Docker version:26.1.4
Docker Compose version 1.29.2
GIt version:1.8.3.1
Nginx version:1.27.0
Jenkins version:2.452.2
2. jenkins配置
2.1 初始化啟動
訪問伺服器:8080
伺服器輸入cat /docker/jenkins_home/secrets/initialAdminPassword
獲取密碼登入。
登入後,選擇安裝推薦的外掛
等待安裝完成即可,設定自己的登入名和密碼。
2.2 模組介紹
進入系統管理,介紹下主要模組:
系統配置:主要配置jenkins訪問路徑,構建數量設定ssh Server 需要訪問的主機憑證等。ssh可以使用賬號密碼或者使用憑證登入
全域性工具配置:如果安裝了外掛,對應外掛的內容在這裏配置,可以配置NodeJS版本,為後面構建環境提供node環境
外掛管理:增刪改查外掛
憑據管理:主要用作git的拉取許可權
使用git的賬號密碼
配置完成後全域性就可以使用。
2.3 安裝外掛
使用預設配置後,需要下載的幾個外掛:
Git Parameter Plug-In:用於構建時分支選擇
NodeJS Plugin:node環境版本配置
Publish Over SSH:上傳伺服器
2.4 配置構建專案
接下來介紹構建的配置步驟:
2.4.1 新建一個任務,選擇自由風格
2.4.2 引數化構建過程設定
需要安裝Git Parameter外掛纔會有,這是新增引數,引數名後面會用到。
構建時會有:
2.4.3 原始碼管理設定
全域性的憑據這裏可以選擇到,$BRANCH是上面設定的git引數名稱
2.4.4 構建環境
構建環境在Provide Node & npm bin/ folder to PATH
選擇node版本
2.4.5 Build Steps
根據自身專案配置打包命令
這裏需要說明下,上方配置的git引數,例如是否每次需要安裝依賴,可以透過shell指令碼進行判斷是否安裝。
bash複製程式碼#!/bin/bash node -v npm -v if [ $pnpmInstall == 'true' ] then echo "安裝依賴包" rm -rf node_modules npm i else echo "跳過依賴包安裝" fi npm run build # 如果需要刪除原打包檔案,使用壓縮包傳遞,進入伺服器再解壓 tar -zcvf dist.tar ./dist
2.4.6 構建後操作
最後一步,傳送到伺服器。這一步也可放在上面一步,這個看個人選擇。
這裏使用外掛Publish Over SSH
,在系統配置中新增了ssh伺服器連結。新增構建步驟,選擇Send files or execute commands over SSH
選擇已經存在的SSH Server
注意:
原始檔是當前專案的根目錄的位置,打包後文件為dist 所有設定為
dist/**
,如果傳送過去只需要dist檔案下的內容,則Remove prefix需要填dist
,相當於移除字首dist遠端伺服器資料夾當前目錄已經設定為/,如果部署資料夾為/docker/html/,就直接寫
這種方式只考慮傳輸,沒有考慮刪除老的打包檔案。需要打包後生成壓縮檔案,
bash複製程式碼npm run build # 生成壓縮包 tar -zcvf dist.tar ./dist
傳輸需要更改為
至此,設定已經全部完成。
2.4.7 構建操作
進入對應專案,點選Build with Parameters
,選擇對應分支,是否需要安裝依賴。
構建日誌:
進入伺服器檢視,打包檔案已傳輸成功:
到這一步,前端構建環境已搭建成功。
總結
最後總結一下:本文使用docker搭建Jenkins+Nginx前端構建環境。主要記錄下搭建的過程,暫時未考慮回滾操作。
如有錯誤,請指正O^O!