# 在GCP上架設Jenkins - 開始之前,請先準備google帳號,原本就有google帳號可以直接使用,只要沒有曾經使用過相關服務,google提供第一次使用gcp(Google Cloud Platform)用戶90天300美金的額度,使用過相關服務或沒有google帳號的,請先註冊一個。 - 架構上的概念,因為都在雲端上,很容易搞不清楚自己在做什麼,大概了解一下,我們要做的事,就是用google的Compute Engine服務,架一台虛擬機(Virtual machines),接著在虛機內設定Jenkins ![image](https://hackmd.io/_uploads/rJbPU2QL0.png) - 在架設時,原本用方法一跟著官方的文件操作,但最後遇到有其他問題需要處理,為了能更快將Jenkins架起來,我最後選擇自己相對熟悉的第二個方法,架設虛擬機後再將Jenkins安裝。 ## 方法一:按照[官方文件](https://cloud.google.com/architecture/using-jenkins-for-distributed-builds-on-compute-engine)、使用Cloud Marketplace提供的Jenkins instance 到官方文件,跟著文件操作。 ![image](https://hackmd.io/_uploads/rylp8PnmLC.png) source: https://cloud.google.com/architecture/using-jenkins-for-distributed-builds-on-compute-engine ## 方法二:先建立instance再依據所建立的OS安裝Jenkins ### 1. 開好gcp之後,通常會自動建立一個`My First Project`,可以直接在這個project裡建立一個VM執行個體 - 先到Compute Engine底下的VM執行個體 ![](https://hackmd.io/_uploads/r1CuYl182.jpg) - 建立一個新的VM執行個體 ![](https://hackmd.io/_uploads/HJIB5xyUh.jpg) - 選取主機安裝的相關配備設定 ![](https://hackmd.io/_uploads/r1U52e183.jpg) - 選取要安裝的作業系統 ![](https://hackmd.io/_uploads/SkNl6xy8h.jpg) - 作業系統版本選擇,建議選擇<font color='red'>22</font>的版本,比較不會遇到後續需要更新的問題 ![](https://hackmd.io/_uploads/BJsr6ekI3.jpg) - VM執行個體的防火牆設定 ![](https://hackmd.io/_uploads/H1WTpekI2.jpg) ### 2.設定防火牆規則 - 點選進入設定防火牆規則 ![](https://hackmd.io/_uploads/B1JXAgyU3.jpg) - 設定IP4以及TCP port ![](https://hackmd.io/_uploads/ByjRT-kUn.jpg) ### 3. 設定網路靜態位址 - 到虛擬私有雲網路 > IP位址 ![](https://hackmd.io/_uploads/SyYC-WJU2.jpg) - 針對外部IP位址點選保留 ![](https://hackmd.io/_uploads/BJtsPMy82.jpg) - 填入名稱 ![](https://hackmd.io/_uploads/By0cMW1Un.jpg) ### 4. 回到VM執行個體,點選SSH,安裝java和jdk (參考資料[How To Install Java with Apt on Ubuntu 18.04](https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-on-ubuntu-18-04)) ![](https://hackmd.io/_uploads/r1g7XZ1I3.jpg) - `sudo apt update` - 輸入`java -version` 查看系統安裝java版本 - 如下圖所示,系統未有java安裝 ![](https://hackmd.io/_uploads/r15t7WJIh.jpg) - 跟著指示安裝,記得加上`sudo` - `sudo apt install default-jre` - 確認安裝java,再輸入`java -version`一次,安裝正確會顯示相關版號 ![](https://hackmd.io/_uploads/By4WEWy8n.png) - 再安裝jdk,輸入`sudo apt install default-jdk` - 輸入`javac -version`確認安裝,顯示版號 ![](https://hackmd.io/_uploads/B1wkBWkU3.png) ### 5. install chrome (參考資料[How to Install Google Chrome Web Browser on Ubuntu 18.04](https://linuxize.com/post/how-to-install-google-chrome-web-browser-on-ubuntu-18-04/)) - 輸入`wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb` 下載Google Chrome - 輸入`sudo apt install ./google-chrome-stable_current_amd64.deb`執行安裝 ### 6. 安裝 pip3 (參考資料 [How to Install Pip on Ubuntu 18.04](https://linuxize.com/post/how-to-install-pip-on-ubuntu-18.04/)) - 先輸入`sudo apt update`更新 - 再輸入`sudo apt install python3-pip` - 輸入`pip3 --version` 確認安裝成功,應顯示相關版號 ![](https://hackmd.io/_uploads/HJoMIWJL3.png) ### 7. 更新 python3 版本到 python3.7,有些plugin僅支援3.7以上版本 (參考資料 [Upgrade Python to latest version (3.10) on Ubuntu Linux](https://cloudbytes.dev/snippets/upgrade-python-to-latest-version-on-ubuntu-linux)) 備註: <font color='orange'> 先前註冊有選擇ubuntu 22的版本,python應該會是在3.9以上的版本,這個步驟可以跳過</font> - 輸入`python3 --version`確認目前系統版本 - 執行```sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update``` - 輸入`apt list | grep python3.7`,確認python3.7是否可使用,能看到3.7表示可以安裝 ![](https://hackmd.io/_uploads/BJsZvWyUh.png) - 輸入`sudo apt install python3.7`執行安裝 - 執行`sudo nano /usr/bin/gnome-terminal` 在打開的畫面中輸入`#!/usr/bin/python3.6` 輸入完畢`Ctrl +X` ,輸入`y`,按下`Enter` - 執行`sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1` - 執行`sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2` - 執行`sudo update-alternatives --config python3` - 選擇3.7的版本,按下`Enter` - 最後執行`python3 --version`,確認是否已經更改使用python3.7 ![](https://hackmd.io/_uploads/Bknh_-yU3.png) ### 8.安裝git `sudo apt install git` ### 9. 最後安裝 Jenkins [Jenkins Debian Packages](https://pkg.jenkins.io/debian-stable/) ``` curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \ /usr/share/keyrings/jenkins-keyring.asc > /dev/null ``` ``` 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 fontconfig openjdk-11-jre ``` `sudo apt-get install jenkins` ### 10. 安裝完畢後可以開始啟動Jenkins - `sudo systemctl start jenkins` - 確認Jenkins運行狀況 `sudo systemctl status jenkins` ![](https://hackmd.io/_uploads/SJzu2ZkLh.png) - 打開瀏覽器,輸入剛剛一開始設定保留的外部ip位址,加上`:8080`,記得如果網址前面有`https`要移除,不然會無法連上 - 接下來應該就都是Jenkins的設定了 -ModuleNotFoundError: No module named 'pip._internal' ![](https://hackmd.io/_uploads/HksTRDXwh.png) - [在Ubuntu 18.04上遇到No module named ‘pip._internal’ ](https://medium.com/@acer1832a/%E5%9C%A8ubuntu-18-04%E4%B8%8A%E9%81%87%E5%88%B0no-module-named-pip-internal-298f980f9a45)