1、.gitlab-ci.yml參數列表
值 | 是否必須 | 描述 |
script | 必須 | 定義由Runner執行的shell腳本或命令 |
extends | 非必須 | 定義此作業將繼承的配置條目 |
image | 非必須 | 需要使用的docker鏡像,請查閱該文檔 |
services | 非必須 | 定義所需的docker服務,請查閱該文檔 |
stage | 非必須 | 定義一個工作場景階段,默認是test |
type | 非必須 | stage的別名,不贊成使用 |
variables | 非必須 | 在job級別上定義的變量 |
only | 非必須 | 定義job所引用的git分支 |
except | 非必須 | 定義job所不適用的git分支 |
tags | 非必須 | 定義job所適用的runner,tags爲runner標籤 |
allow_failure | 非必須 | 允許任務失敗,但是如果失敗,將不會改變提交狀態 |
when | 非必須 | 定義了job什麼時候執行,可以是on_success、on_failure、always和manual |
dependencies | 非必須 | 定義了該job依賴哪一個job,如果設置該項,可以通過artifacts設置 |
artifacts | 非必須 | 工件,在依賴項之間傳遞的東西,類似cache,但原理與cache不同 |
cache | 非必須 | 定義需要被緩存的文件、文件夾列表 |
before_script | 非必須 | 覆蓋在作業之前執行的腳本或命令 |
after_script | 非必須 | 覆蓋在作業之後執行的腳本或命令 |
environment | 非必須 | 定義讓job完成部署的環境名稱 |
coverage | 非必須 | 定義job設置代碼覆蓋率 |
retry | 非必須 | 定義job失敗後的自動重試次數 |
2,.gitlab-ci.yml 文件
# docker鏡像
image: ruby:2.1
# 依賴的docker服務
services:
- postgres
# 開始執行腳本前所需執行腳本
before_script:
- bundle install
# 腳本執行完後的鉤子,執行所需腳本
after_script:
- rm secrets
# 該ci pipeline適合的場景
stages:
- build
- test
- deploy
# 定義的任務1
job1:
# 場景爲構建
stage: build
# 所需執行的腳本
script:
- execute-script-for-job1
# rsync部署
- eval $(echo "export PASSWORD=$PASSWORD && rsync dist/ --exclude=.git rsync://$ADDRESS --port $PORT --delete")
# 在哪個分支上可用
only:
- master
# 指定哪個ci runner跑該工作
tags:
- docker
3,rsync服務
1,安裝並運行
yum -y install rsync
#啓動rsync服務
systemctl start rsyncd.service
systemctl enable rsyncd.service
#檢查是否已經成功啓動
netstat -lnp|grep 873
2,修改配置文件 vim /etc/rsyncd.conf
max connections = 2000
use chroot = no
#輸出日誌,
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
uid = root
# 指定運行rsync的用戶
gid = root
ignore errors
#是否只讀
read only = no
fake super = yes
#客戶機白名單
hosts allow =192.168.0.0/16,10.0.0.0/16
#授權用戶
auth users = rsyncuser
#用戶密碼文件
secrets file = /etc/prp.secret
#模塊
[my-path]
path= /etc/user/test
3,創建 /etc/prp.secret 文件並寫入密碼,修改權限
# rsync 服務prp.secret 的密碼,格式 授權用戶:密碼
echo 'rsyncuser:123456' >> /etc/prp.secret
# 密碼文件權限只能600,不然會報錯,權限 r:2 w:4 x:1
chmod 600 /etc/rsyncd-test.passwd
3, 重啓服務 systemctl restart rsyncd.service
4, 客戶機創建密碼文件,並傳輸,
my-path: 爲模塊名稱,password.passwd 密碼文件裏面只有密碼,權限同樣只能600,在/etc/rsyncd.conf 裏面配置
#創建密碼文件 密碼和服務器一致
echo "123456" > password.passwd
chmod 600 password.passwd
#同步
rsync -auv --password-file=password.passwd sql.sql [email protected]::my-path
還有另一種寫法,rsync daemon 可以直接通過url下載
# 上面寫法的改寫
rsync -auv --password-file=password.passwd sql.sql rsync://[email protected]/my-path
#比如要下載文件
rsync --no-motd -avzP rsync://rsync.kernel.org/pub/linux/kernel/v3.x/linux-3.0.15.tar.bz2 /tmp
rsync daemon 的格式:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST