本文主要介紹了線程池框架 Executor,ThreadPoolExecutor 的「構造參數」和「工作行為」,線程池的生命周期,Executors 提供的線程池 ...
環境:Linux版本:Centos7
一、更新源:
yum update
二、安裝docker:
yum install docker -y
啟動docker:
systemctl start docker
三、.安裝gitlab
1.docker拉取鏡像(社區版)
docker pull gitlab/gitlab-ce
2.運行gitlab鏡像:
docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --name gitlab --restart always -v /home/local/gitlab_docker/gitlab:/etc/gitlab -v /home/local/gitlab_docker/logs:/var/log/gitlab -v /home/local/gitlab_docker/data:/var/opt/gitlab gitlab/gitlab-ce
參數說明:
-d:後臺運行
-p:埠映射,宿主機埠:容器埠
--name: 給將要運行的容器命名
--restart always:docker啟動的時候,也自行啟動
-v:掛載目錄,宿主機目錄:容器目錄
gitlab/gitlab-ce:要運行的鏡像
3.修改gitlab.rb配置文件
vim /home/local/gitlab_docker/gitlab/gitlab.rb
內容如下:
##改成本機ip
external_url 'http://192.168.42.227'
gitlab_rails['gitlab_ssh_host'] = '192.168.42.227'
##上面映射的埠
gitlab_rails['gitlab_shell_ssh_port'] = 8022
4.進入容器重啟配置
##進去gitlab容器的命令
docker exec -it gitlab bash
##重置gitlab客戶端的命令
gitlab-ctl reconfigure
5.修改http的clone地址加上埠
##進入容器內部
docker exec -it gitlab /bin/bash
##修改文件
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
內容如下:
##改成本機ip
host: 192.168.42.227
##clone的埠,上面映射的埠
port: 8090
https: false
6.重啟gitlab,在容器內執行:
gitlab-ctl restart
註解:如果使用docker restart gitlab,會自動執行gitlab-ctl reconfigure,配置會被還原,我們自己剛剛改的配置會丟失,慎用docker restart gitlab
四、安裝Harbor
1.安裝docker-compose
下載地址:https://github.com/docker/compose/releases ,選中docker-compose-linux-x86_64下載
2 下載完成重命名為:docker-compose,並放到 /usr/local/bin/下
3 賦予可執行許可權:
sudo chmod +x /usr/local/bin/docker-compose
4 創建軟連接:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
5 檢查安裝結果:
docker-compose --version
6 下載harbor: https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz
並放到目錄下: /home/local/
7 解壓文件:
tar xzvf harbor-offline-installer-v2.4.1.tgz
8 拷貝配置文件:cp /home/local/harbor/harbor.yml.tmpl /home/local/harbor/harbor.yml
9 修改http訪問地址,禁用https:
vi /usr/local/harbor/harbor.yml
內容如下:
#本機ip
hostname: 192.168.42.227
http:
port: 8080
#https 註解https下麵的所屬配置
10 執行安裝:sudo /home/local/harbor/install.sh
11 啟動、關閉:在harbor目錄下執行命令:
啟動:
docker-compose up -d
關閉:
docker-compose down
12 web(ip:8080)預設賬號密碼:admin Harbor12345
五、為docker設置harbor私服
1 將harbor私服的http地址配置到docker的不安全的register中,修改配置文件:
vim /etc/docker/daemon.json,
追加一行(和上一行用逗號隔開並回車):"insecure-registries": ["192.168.42.227:8080"]
2 重啟docker:
systemctl daemon-reload && systemctl restart docker
3 docker登錄(會顯示登錄成功):
docker login -u admin -p Harbor12345 http://192.168.42.227:8080
4 上傳鏡像到私服
在harbor私服新建一個項目名A,
按照命名規則創建一個鏡像:
docker tag 本機鏡像:tag harbor私服地址:埠/項目名A/文件夾:tag
例如:把本機java鏡像上傳到私服 test_public 目錄下
docker tag java:8 192.168.42.227:8080/test_public/image_test:v1
5 上傳到私服:docker push 私服地址/項目名/文件夾:Tags
登錄:
docker login -u admin -p Harbor12345 http://192.168.42.227:8080
上傳:
docker push 192.168.42.227:8080/test_public/image_test:v1
6 拉取私服鏡像:docker pull 私服地址/項目名/文件夾:Tags
docker pull 192.168.42.227:8080/test_public/image_test:v1
六、安裝jenkins:
(建議不要用docker安裝,因為用docker安裝Jenkins寫pipeline腳本時,就用不了宿主機的插件及命令)
1 依次執行以下命令
sudo wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
sudo dnf upgrade
sudo dnf install java-11-openjdk
sudo dnf install jenkins
2 修改jenkins用戶
vi /etc/sysconfig/jenkins
JENKINS_USER="jenkins" 改成 JENKINS_USER="root"
3 配置
重新載入配置:
sudo systemctl daemon-reload
設置開機啟動、關閉(先直接跳過該操作)
啟動:
sudo systemctl enable jenkins
關閉:
sudo systemctl disable jenkins
4 啟動
systemctl start jenkins
5 如果在上一步啟動成功了,可忽略此步。
如果配置無誤,啟動還是報錯,可以換個啟動方法(本人就是這樣啟動成功的)
先關閉Jenkins,即使啟動失敗,也不代表是關閉的:
systemctl stop jenkins
註:如關閉不成功就重啟Liunx,確認已經關閉了jenkins
進入目錄:
cd /etc/init.d/
啟動:
./jenkins start
關閉命令是:./jenkins stop
6 web訪問,根據界面提示獲取密碼
cat /var/lib/jenkins/secrets/initialAdminPassword
7 安裝社區推薦的插件
8 等待安裝完成,進入Jenkins主頁
七、配置Jenkins
1 下載maven:https://maven.apache.org/download.cgi 下載 apache-maven-3.8.6-bin.tar.gz
2 放到 /home/local 目錄下,併進行解壓
tar xzvf apache-maven-3.8.6-bin.tar.gz
3 修改配置源:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
4 修改環境變數(追加以下內容):vim /etc/profile
export PATH=${PATH}:/home/local/apache-maven-3.8.6/bin
5 重載環境變數
source /etc/profile
6 Dashboard -> Manage Jenkins -> Global Tool Configuration
Maven 配置:將centos中maven目錄拷貝進去
JDK配置:將centos的JDK目錄拷貝進去,可以通過命令:cat /etc/profile 查看java的目錄
Git配置:
先在centos安裝git:
yum install git -y
Maven配置:
保存,其他插件配置忽略。
八、安裝插件:Git Parameter
1.Dashboard -> Manage Jenkins -> 插件管理 處輸入Git Parameter進行安裝,安裝完成重啟Jenkins
該插件用於在Jenkins拉取gitlab代碼時,可以選擇拉取不同分支的代碼
九、配置一個自動部署的項目
1.新建一個item,輸入項目名稱,選擇中pipeline(流水線,如果沒有該選項,就去安裝該插件,並重啟),點擊確定保存
2 配置《丟棄舊構建》策略:
3 配置項目參數:新增 String Parameter,用於在構建項目時,可輸入一個字元參數Tag,在寫pipeline script時,可以通過${Tag}來引用
4 再新添一個項目參數:Git Parameter(剛剛安裝Git Parameter插件才有該選項),用於在構建時可選擇不同的分支拉取代碼進行構建,在寫pipeline腳本時通過 ${branch} 引用該值。
註意:分支過濾:.* 是預設值,故${branch}=origin/main ,我改成了:origin.*/(.*) ${branch}=main,在pipeline腳本里取值 ${branch}拉取代碼就不會報錯了。其他配置預設值
5 編寫pipeline腳本:
拉取gitlab代碼的腳本,可以通過點擊《流水線語法》進行自動生產:
無Credentials,點擊添加:輸入gitlab用戶名和密碼,點擊保存即可
然後選中該憑證,點擊生成流水線腳本,把腳本拷貝到pipeline腳本里:
例如:
node { stage('Preparation') { checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: 'ecf3bed1-f362-4884-b285-fb42ab2d9816', url: 'http://192.168.42.227:8090/root/springboot.git']]]) echo '拉取代碼成功' } }
然後,將springboot項目用maven進行打包成jar(跳過了測試),腳本如下:
node { stage('Preparation') { checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: 'ecf3bed1-f362-4884-b285-fb42ab2d9816', url: 'http://192.168.42.227:8090/root/springboot.git']]]) echo '拉取代碼成功' } stage ('maven build'){ sh ''' /home/local/apache-maven-3.8.6/bin/mvn clean package -DskipTests ''' echo '構建成功' } }
最後將jar打包成鏡像,並上傳到harbor私服的腳本:點擊流水線語法,自動生成harbor憑證腳本:
輸入如下圖,點擊《添加》
輸入賬號密碼,點擊添加:
點擊生成流水線腳本,拷貝腳本:
然後在 //some block 寫自己的腳本,例如:
node { stage('Preparation') { checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: 'ecf3bed1-f362-4884-b285-fb42ab2d9816', url: 'http://192.168.42.227:8090/root/springboot.git']]]) echo '拉取代碼成功' } stage ('maven build'){ sh ''' /home/local/apache-maven-3.8.6/bin/mvn clean package -DskipTests ''' echo '構建成功' } stage ('docker build'){ withCredentials([usernamePassword(credentialsId: '1a5a43b8-4c27-47f6-95ef-af578568aa3e', passwordVariable: 'password', usernameVariable: 'username')]) { sh ''' REPOSITORY=192.168.42.227:8080/test_public/image_test:${Tag} docker build -f Dockerfile -t $REPOSITORY . docker login -u ${username} -p ${password} http://192.168.42.227:8080 docker push $REPOSITORY docker images | grep 'image_test'| awk '{print $3}'|xargs docker rmi ''' } echo '鏡像上傳成功' } }
說明:
批量刪除REPOSITORY包含”image_test“的鏡像
docker images | grep 'image_test'| awk '{print $3}'|xargs docker rmi
十、部署項目
1 首次構建的時候,可能不會顯示分支branch,是空的,首次構建拉取代碼成功了,就可以顯示branch了,前提要保證:branch即使是空的,預設值是存在的分支,在git的流水線自動生成pipeline腳本時,配置好預設的分支
結束,謝謝!