Jenkins自建 推薦的外掛及安裝Docker/Ansbile/Nginx...等 CI/CD 工具
建立 Devops 工具, 安裝jenkins / ansbile / docker ...等,文章記錄

有時會需要在不同地方安裝Devops Tools 所以想說紀錄一篇文章,以下的操作 均在同一台 EC2 上去執行,但官網的建議是希望再多一台 代理機(slave),就看公司規模以及是否有沒有必要這樣做。
OS: ubuntu Version 24
安裝以下套件
- Jenkins
- Ansible
- Docker
- Nginx
Jenkins Install
部署文件 均來自 Jenkins官網
Step.1 Jenkins install in ubuntu
sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
sudo apt-get install jq
Step.2 Java Install
sudo apt update
sudo apt install fontconfig openjdk-17-jre
安裝完Java後 可以透過 java -version
確認是否有成功安裝
Step.3 Start Jenkins
開機時 啟動jenkins
sudo systemctl enable jenkins
啟動 Jenkins
sudo systemctl start jenkins
查詢狀態
sudo systemctl status jenkins
Step.4 gitlab/github 允許 Jenkins 能使用 git clone ssh
# 切換到jenkins user
sudo jenkins
# 創建訪問key
ssh-keygen

Jenkins 推薦可以安裝以下外掛插件
Jenkins Plugins 常用工具整理
有時候會在本地練習或者測試 但這些實用工具沒有整理起來 才演伸出這篇文章 # 外掛插件 pipeline GitLab Plugin GitLab Authentication Generic Webhook Trigger # Stage View Pipeline Graph Analysis Pipeline: REST API # 查看任務進度
Blue Ocean Git Pipeline for Blue Ocean
Dashboard for Blue Ocean
Web for Blue Ocean Multibranch Scan Webhook Trigger
Ansible
Build Timestamp # 時間套件 # Docker Docker Docker pipeline
Docker Install
安裝腳本來自官網 Docker Shell Install
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
若要讓 Jenkins 能夠有權限使用 Docker命令, ex: build image 可以直接將用戶組加入Docker
查看 jenkins 用戶
sudo id jenkins
將 jenkins 用戶添加到 docker 群組
sudo usermod -aG docker jenkins
重啟 Jenkins 服務使變更生效
sudo systemctl restart jenkins

Ansible Install
可以直接前往以下文章
Ansible 設定及測試
Ansible 設定及測試

Nginx Install
apt update
apt install nginx -y
server {
listen 443 ssl http2;
server_name jenkins.test.com;
location / {
proxy_pass http://127.0.0.1:8080; # 将此更改为 Jenkins 的内部地址和端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 支持 WebSocket 的反向代理
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 防止连接超时
proxy_read_timeout 90;
proxy_connect_timeout 90;
proxy_send_timeout 90;
}
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
ssl_certificate ssls/test.com/cert.pem;
ssl_certificate_key ssls/test.com/key.pem;
}
若需要SSL憑證 可以參考
SSL憑證 自動簽名 神器 acme.sh
acme 透過 aws dns 簽發tls 憑證

以上就完成了一個 Jenkins 初始化安裝
