通常軟體工程師只需著重在自己的軟體開發即可
程式碼 Commit 上 GitLab 就沒軟工的事了
接下來的流程就都交給Infra工程師與 DevOps工程師
但身為一位全端工程師也是要懂一點 DevOps 部分
這邊用 Docker 來快速架設服務
現在的 Windows 10 的 WSL 越來越好用了
加上 Docker Desktop + Visual Studio Code 的UI越來越好用
這邊使用 docker-compose.yml 啟動多個Docker服務
version: '3' services: jenkins: container_name: jenkins restart: always image: jenkins/jenkins:lts ports: - "8080:8080" - "50000:50000" volumes: - ./data/:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/usr/bin/docker depends_on: - gitlab - sonar gitlab: container_name: gitlab image: gitlab/gitlab-ce ports: - "8088:80" - "8443:443" - "8022:22" volumes: - /etc/gitlab - /var/log/gitlab - /var/opt/gitlab sonar: container_name: sonarqube image: sonarqube ports: - "9000:9000" - "9092:9092" volumes: - /etc/gitlab - /var/log/gitlab - /var/opt/gitlab nginx: container_name: nginx image: nginx ports: - "80:80" - "22:22" volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/default.conf:/etc/nginx/conf.d/default.conf restart: always
不知道為什麼 Docker 架設的 GitLab 用預設密碼 “5iveL!fe” 無法登入
解法可以直接進入該服務下 重設密碼 即可
gitlab-rails console user = User.where(id: 1).first user.password = '5iveL!fe' user.password_confirmation = '5iveL!fe' user.save gitlab-ctl reconfigure
使用 Jenkins 就是要跟 GitLab 進行CI/CD,設定上有點繁瑣
- 安裝外掛程式
- 管理Jenkins(Manage Jenkins) > 管理外掛程式(Manage Plugins)
- Gitlab Hook
- Build Authorization Token Root
- Publish Over SSH
- Gitlab Authentication
- Gitlab
- 管理Jenkins(Manage Jenkins) > 管理外掛程式(Manage Plugins)
- 設定 Jenkins Credentials (可以設定三種方式)
- 管理Jenkins(Manage Jenkins) > Manage Credentials > Global credentials (unrestricted) > Add Credentials
- Gitlab API Token
- SSH Username with private key
- Username with password
- 設定步驟 Youtube 上就會有各式各樣操作畫面,跟著做比較不會有問題
- 設定過程會需要在 Jenkins 伺服器上產生 SSH Key
-
ssh -keygen cd /var/jenkins_home/.ssh cat id_rsa #私鑰 cat id_rsa.pub #公鑰
-
- 設定完畢,移至組態設定 “Gitlab” 設定
- Connection name
- Gitlab host URL
- Credentials選擇 “GitLab API token”
- 點選 “Test Connection” 檢查是否連線成功
- 管理Jenkins(Manage Jenkins) > Manage Credentials > Global credentials (unrestricted) > Add Credentials
- 建立作業 (Job)
- 輸入名稱 > 建置 Free-Style 軟體專案 > OK
-
原始碼管理 > 選 Git
-
填寫 “Repository URL”
-
選擇 “Credentials” 方式
-
建置觸發程序 > 勾選 “Build when a change is pushed to GitLab. GitLab webhook URL: ….”
- 儲存
- 馬上建置
- 就會自動抓Git上最新的Code來進行建置
雖然現在的Visual Studio 2019基本上都有內建程式碼分析器,提示的項目跟Sonarqube差不多
但也許開發團隊裡面有人不使用Visual Studio 2019開發,有可能會遺漏
未來有機會再來補 Jenkins + Sonarqube 自動分析程式碼品質,以及 Jenkins 自動佈署 Nginx