範例為Drone 0.8版 Drone CLI為最新版
version: '2'
services:
drone-server:
image: drone/drone:0.8
ports:
- 8080:8000
- 9000
volumes:
- drone-server-data:/var/lib/drone/
restart: always
environment:
- DRONE_OPEN=true
- DRONE_HOST=${DRONE_HOST}
- DRONE_ADMIN=${DRONE_ADMIN}
- DRONE_GITHUB=true
- DRONE_GITHUB_CLIENT=${DRONE_GITHUB_CLIENT}
- DRONE_GITHUB_SECRET=${DRONE_GITHUB_SECRET}
- DRONE_SECRET=${DRONE_SECRET}
drone-agent:
image: drone/agent:0.8
command: agent
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_SERVER=drone-server:9000
- DRONE_SECRET=${DRONE_SECRET}
volumes:
drone-server-data:
安裝Drone CLI CLI Reference 在專案下執行
drone exec \
--branch [branch_name] \
--event [event_name] \
--secret-file [sec_file] \
--env-file [env_file] \
--trusted
簡單說明如下:
- --branch 模擬commit到專案的特定branch
- --event 模擬commit的事件,可以是push, pull_request, tag
- --secret-file secret的檔案,指定路徑,格式如下 (小寫即可)
key_path=xxxxx
user_name=xxxxx
slack_webhook=xxxxx
- --env-file 環境變數檔案,指定路徑,格式如下 (大寫)
ENV1=xxxxx
ENV2=xxxxxx
- --trusted 如果.drone.yml中有某個step需要掛載主機的資料夾,就需要這項指令
install:
image: node:10.15
commands:
- node -v
- npm -v
- npm install
- npm install -g mocha
- mocha test/api.js
when:
branch: master
以跟主機相同的node環境的docker進行安裝,並使用mocha 做測試
使用appleboy/drone-scp
登入用username需要從secret mapping到scp_username
ssh key要mapping到scp_key_path,且記得路徑指的是在drone-scp這docker中的路徑,且這key要使用不用輸入passphrase的
目前的ssh key要更改passphrase指令
ssh-keygen -p -f ~/.ssh/id_dsa
使用appleboy/drone-ssh
ssh key需要從secret mapping到ssh_key_path
使用plugins/slack
通知slack的位置可以使用secret - slack_webhook or webhook