最近發現主題好像變得比較零散了,那只好繼續散下去(?)
今天來教大家 Gitlab CI 的簡單部署,基本上這也都是現在專案開發的標配了,比起用 FTP 上傳到 Server,Gitlab CI 能幫助你在 commit code 的時候直接完成專案的上傳,也比較不會覆蓋到原有的檔案,造成整個專案爆掉的悲劇發生。
至遠端主機,下載適當的 gitlab-runner 安裝版本
# Linux x86-64
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# Linux x86
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386
# Linux arm
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm
# Linux arm64
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64
# Linux s390x
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-s390x
給予 gitlab-runner 權限
sudo chmod +x /usr/local/bin/gitlab-runner
在遠端主機內新增一個 gitlab-runner 使用者
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
安裝 gitlab-runner 並且執行
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
將遠端角色切換為 gitlab-runner
sudo su - gitlab-runner
註冊 gitlab-runner
sudo gitlab-runner register
過程會遇到以下的註冊訊息
遠端主機資訊
Runtime platform arch=amd64 os=linux pid=15476 revision=21cb397c version=13.0.1
Running in system-mode.
輸入 gitlab server 的網址
Please enter the gitlab-ci coordinator URL (e.g. [https://gitlab.com/](https://gitlab.com/)):
[https://gitlab.com/](https://gitlab.com/)
輸入 gitlab 上的 Runner token
至 gitlab 的專案內 Setting -> CI/CD -> Runners
內點選 expend
即可取得 token
Please enter the gitlab-ci token for this runner:
QkvN......
輸入 gitlab-ci 專案的資訊
Please enter the gitlab-ci description for this runner:
[chttl-b606df3973664168]: one-stone
輸入 gitlab-ci 的 tags (之後仍可修改) → Understanding gitlab-ci tags
#用逗號隔開可多選,一般 tags 會用來標記 ci 的不同階段\
Please enter the gitlab-ci tags for this runner (comma separated):
build
Registering runner... succeeded runner=QkvNpkgg
選擇執行 CI 的主機,若是使用 ssh 連接遠端伺服器則選擇 ssh
一般狀況下使用 shell 即可
Please enter the executor: custom, docker, kubernetes, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine:
ssh
輸入遠端伺服器資訊 (SSH)
#遠端伺服器地址
Please enter the SSH server address (e.g. my.server.com):
example.com.tw
#SSH server 的 port,一般預設都是 22
Please enter the SSH server port (e.g. 22):
22
#SSH server 的使用者
Please enter the SSH user (e.g. root):
leo
#該使用者的密碼
Please enter the SSH password (e.g. docker.io):
**********
#使用者的 ssh key 檔案路徑
Please enter path to SSH identity file (e.g. /home/user/.ssh/id_rsa):
/home/leo/.ssh/id_rsa
before_script:
- echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- cd /var/www/one-stone-backend
master_building:
stage: build
script:
- echo "build"
- git pull origin master
- php artisan migrate
- php artisan cache:clear
- php artisan config:cache
only:
- master
tags:
- build
gitlab 執行 ci 時的工作畫面
執行 jobs 的過程
今天教大家如何透過 gitlab-ci 部署你自己的專案,可能跟鐵人賽的主題很無關XD,但是如果是需要天天將程式碼上到 dev 主機,並且統一版本後上到 production,gitlab-ci 是很方便的工具,明天我們繼續回歸主題,暢遊在 Laravel 的世界中吧!
Install GitLab Runner manually on GNU/Linux
Using SSH keys with GitLab CI/CD