在項目根目錄下添加 .gitlab-ci.yml 文件,整個持續集成系統是 Gitlab 自帶的,要作的就是添加一個 Runner 到系統裏來解析文件中的 script 部分。html
官方提供了安裝方法,我的選擇的是 install on macOS,按順序安裝:node
sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
複製代碼
sudo chmod +x /usr/local/bin/gitlab-runner
cd ~
gitlab-runner install
gitlab-runner start
複製代碼
在註冊 Runner 前須要作一些準備:git
sudo gitlab-runner register
複製代碼
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com
複製代碼
Please enter the gitlab-ci token for this runner
xxx
複製代碼
Please enter the gitlab-ci description for this runner
[hostame] my-runner
複製代碼
Please enter the gitlab-ci tags for this runner (comma separated):
runner
複製代碼
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
docker
複製代碼
Please enter the Docker image (eg. ruby:2.1):
alpine:latest
複製代碼
Gitlab 同時提供非交互式的註冊,一行命令就能夠:docker
sudo gitlab-runner register \
--non-interactive \
--url "https://gitlab.com/" \
--registration-token "獲取的 token " \
--executor "docker" \
--docker-image alpine:latest \
--description "runner" \
--tag-list "docker,aws" \
--run-untagged \
--locked="false" \
複製代碼
註冊流程走完會在 ~/etc/gitlab-runner/ 目錄下生成 config.toml 配置文件,這時候就能夠在 Gitlab 的設置中看到激活的 Runner: shell
在這裏只貼上我的配置,詳細的資料均可以查到,在這裏就不贅述了:npm
stages:
- build
- deploy
build:
image: node:alpine
stage: build
script:
- npm install
- npm run build
artifacts:
expire_in: 1 week
paths:
- dist/
only:
- master
deploy_staging:
image: alpine:latest
stage: deploy
before_script:
- apk update
- apk add --no-cache rsync openssh
script:
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" >> ~/.ssh/id_dsa
- chmod 600 ~/.ssh/id_dsa
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- rsync -rav --delete dist/ "$SERVER_USER_HOST:$SERVER_MASTER_PATH"
only:
- master
複製代碼
配置文件中創建了兩個工程,分別是 build 和 deploy,須要補充的幾點:安全
$SERVER_USER_HOST
這樣的變量在 Settings -> CI/CD -> Variables 中設置;使用命令行運行 Runner,sudo gitlab-runner run
,啓動成功後以下截圖: ruby
構建成功後以下截圖: bash