建議安裝機(jī)器的硬件條件:
- 4G RAM 以上
- 30GB 磁盤(pán)容量以上
1.安裝 gitlab
1) Install and configure the necessary dependencies
在 shell 中執(zhí)行如下命令
sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificatesNext, install Postfix to send notification emails(暫時(shí)先不用管,直接安裝就好了,安裝過(guò)程中會(huì)有個(gè)彈窗,選擇框選 'Internet Site',輸入框隨便)
sudo apt-get install -y postfix2)Add the GitLab package repository and install the package
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash這個(gè)鏡像源很慢,安裝過(guò)程中很容易連接就會(huì)斷掉,所以一般網(wǎng)上找的教程都是改用清華大學(xué)的鏡像源,具體操作如下
vim /etc/apt/sources.list.d/gitlab_gitlab-ce.list把原來(lái)的兩行刪除或者注釋(# 是行注釋),然后增加
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu bionic main deb-src https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu bionic main其中 bionic 是 Ubuntu 18 的發(fā)行代號(hào),若是 Ubuntu 的其他發(fā)型版本,把 bionic 替換成對(duì)應(yīng)的代號(hào)即可,如圖
image.png
再次執(zhí)行
sudo apt-get update安裝
sudo EXTERNAL_URL="http://ip 或域名" apt-get install gitlab-ce這個(gè) EXTERNAL_URL 就是你希望通過(guò)瀏覽器地址欄可以訪問(wèn)到這個(gè) gitlab 的地址
3)Browse to the hostname and login
打開(kāi)后會(huì)提示你修改密碼,這個(gè)密碼是 root 賬戶的密碼,修改成功后就可以登陸了,當(dāng)然,還可以再新建賬戶,然后創(chuàng)建一個(gè)項(xiàng)目比如叫 first-project
另外 gitlab 安裝后默認(rèn)是開(kāi)機(jī)就服務(wù)自啟的,可以通過(guò)某個(gè)配置文件關(guān)閉自啟
2.安裝 gitlab-runner
建議 gitlab 和 gitlab-runner 不要在同一機(jī)器上
1)Simply download one of the binaries for your system
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd642)Give it permissions to execute
sudo chmod +x /usr/local/bin/gitlab-runner3)Create a GitLab CI user
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash4)Install and run as service
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start5) register the runner
image.png
其中,第一項(xiàng)輸入命令開(kāi)始 register runner,第二項(xiàng)和第三項(xiàng)可以在創(chuàng)建的 gitlab 項(xiàng)目的 setting -> CI/CD -> runners 下面找到;第二項(xiàng)其實(shí)就是上面的 EXTERNAL_URL,第三項(xiàng)是 runner 拿來(lái)訪問(wèn)該項(xiàng)目的 token;第四項(xiàng)輸入 runner 的名字;第五項(xiàng)為 runner 打上某些 tag,這些 tag 會(huì)在 .gitlab-ci.yml 配置中用到,比如為了標(biāo)記這個(gè) runner 是在 shell 中執(zhí)行,于是給他加個(gè) shell 的 tag;第六項(xiàng)是指 runner 的 executor,比如 shell、docker 或是別的什么,先用 shell。
配置完之后就會(huì)在對(duì)應(yīng)于項(xiàng)目的 setting -> CI/CD -> runners 下面看到這個(gè) runner,執(zhí)行
之后就可以看到gitlab-runner runimage.png
綠色的那個(gè) runner 出于正常運(yùn)行狀態(tài)
3.配置 .gitlab-ci.yml
隨便推個(gè)可以正常運(yùn)行的 vue 代碼,到 first-project 項(xiàng)目,然后在項(xiàng)目目錄下新建一個(gè) .gitlab-ci.yml 文件,寫(xiě)入以下代碼
stages: - build job_build: stage: build only: - master script: - npm i - npm run build tags: - shell提交之后去項(xiàng)目的 CI/CD -> pipeline 下面就可以看到 runner 就在自行打包了。當(dāng)然,這里還需要保證執(zhí)行
gitlab-runner run命令的那個(gè)名為 gitlab-runner 用戶環(huán)境下提前安裝好了 node 和 npm,這樣上面的 job 才有可能成功。linux 安裝 node 的話,建議用 nvm。
參考鏈接:
感想:
最早誕生想要了解 gitlab CI/CD 的念頭,是在第一次體驗(yàn)只要(甚至不用)手動(dòng)點(diǎn)點(diǎn)點(diǎn)就能做到打包、發(fā)布時(shí),頓時(shí)覺(jué)得這個(gè)東西好神奇,想要了解其原理但是又不知道從何下手,然后作罷。后面每次開(kāi)新項(xiàng)目都需要 leader 來(lái)弄幫忙弄這些東西,而且是粗暴的粘貼復(fù)制 A 項(xiàng)目的 .gitlab-ci.yml 到 B 項(xiàng)目,然后就憑感覺(jué)全局搜索改一些配置的東西,因?yàn)橛腥齻€(gè)環(huán)境,開(kāi)發(fā)和測(cè)試是用的 k8s、docker 那些。最終每次改都花了不少時(shí)間才能讓它正常運(yùn)行不說(shuō),還不知道留下了什么樣的坑:由于 C 項(xiàng)目配置文件是從 B 項(xiàng)目 copy 過(guò)來(lái)的,然后 C 項(xiàng)目的測(cè)試環(huán)境 docker 鏡像就把 B 項(xiàng)目的測(cè)試環(huán)境給覆蓋掉了,導(dǎo)致訪問(wèn) B 項(xiàng)目時(shí)看到的是 C 項(xiàng)目。出于此終于開(kāi)始著手了解著相關(guān)的東西,所以經(jīng)歷從虛擬機(jī)裝 Ubuntu 系統(tǒng),系統(tǒng)裝 gitlab,虛擬機(jī)又裝一個(gè) Ubuntu 系統(tǒng),系統(tǒng)裝 gitlab-runner 這些步驟后終于跑成功了自動(dòng)打包的第一步。
說(shuō)歷經(jīng)波折也不過(guò)分,虛擬機(jī)就裝了好多回,最早裝了桌面版的 Ubuntu 同時(shí)跑 gitlab 和 gitlab-runner 卡的一批,然后卸掉重裝;裝 ubuntu-server 的過(guò)程中因?yàn)橥酥虚g改了 VMware 網(wǎng)絡(luò)連接方式導(dǎo)致連不上網(wǎng)又折騰好幾次;然后跑 gitlab-runner 時(shí)候因?yàn)橛玫?
sudo gitlab-runner run然后莫名其妙的出現(xiàn) npm 權(quán)限問(wèn)題也折騰了夠久……所以最后終于跑通的時(shí)候那種愉悅感不言自明。此外,中間還簡(jiǎn)單了解了 ssh 免秘鑰登錄的機(jī)制、學(xué)會(huì)了一些簡(jiǎn)單的 linux 命令、感受到了 linux 的強(qiáng)大以及其對(duì)程序員的友好(想要安裝什么東西,輸命令,寫(xiě)腳本就搞定)。嗯,學(xué) linux 真是太好了。


