前端 .gitlab-ci.yml 部署和 rsync 設置

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章