自建Jenkins 推薦的外掛及安裝Docker/Ansbile/Nginx...等 CI/CD 工具

自建Jenkins 推薦的外掛及安裝Docker/Ansbile/Nginx...等 CI/CD 工具

有時會需要在不同地方安裝Devops Tools 所以想說紀錄一篇文章,以下的操作 均在同一台 EC2 上去執行,但官網的建議是希望再多一台 代理機(slave),就看公司規模以及是否有沒有必要這樣做。

OS: ubuntu Version 24

安裝以下套件

  1. Jenkins
  2. Ansible
  3. Docker
  4. 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

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

創建完成後 可以直接將 .pub 檔案 放入到平台內

Jenkins 推薦可以安裝以下外掛插件

# 外掛插件  
pipeline 
GitLab Plugin 
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 # 時間套件 
GitLab Authentication 
 
# 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

重啟後 可以透過 sudo 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 初始化安裝