设置无人机持续集成 github
setup drone continuous integration with github
我正在尝试使用无人机(开源版)在公司网络内设置 CI 服务器。它的作者将无人机描述为非常简单的解决方案,即使对于程序员(就像我一样)也是如此,尽管有些时候我还不清楚(可能是官方文档遗漏了它们)。
首先,我为我的 rails 应用制作了一个 docker 图像:rails-qna。
接下来,合成无人机图像:
docker-compose.yml:
version: '2'
services:
drone-server:
image: drone/drone:0.5
ports:
- 80:8000
volumes:
- ./drone:/var/lib/drone/
restart: always
environment:
- DRONE_OPEN=true
- DRONE_ADMIN=khataev
- DRONE_GITHUB_CLIENT=github-client-string
- DRONE_GITHUB_SECRET=github-secret-string
- DRONE_SECRET=drone-secret-string
drone-agent:
image: drone/drone:0.5
command: agent
restart: always
depends_on: [ drone-server ]
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_SERVER=ws://drone-server:8000/ws/broker
- DRONE_SECRET=drone-secret-string
应用程序已在 Github 上注册并提供了 secret/client 个字符串。
我将 .drone.yml 文件放入我的项目存储库中:
pipeline:
build:
image: rails-qna
commands:
- bundle exec rake db:drop
- bundle exec rake db:create
- bundle exec rake db:migrate
- bundle exec rspec
不清楚的时刻:
1) 在 github 上注册 OAuth 应用程序时,我们应该指定主页 URL 和授权回调 URL。他们应该指向哪里?无人机服务器容器?猜对了,我指定
mycorporatedomain.com:3005
和
mycorporatedomain.com:3005/授权
并设置从主机的3005端口到80端口的端口转发,其中无人机docker是运行。可能是我错了?
2) 我应该在键 DRONE_GITHUB_URL 中指定什么?
https://github.com 或我的项目存储库的完整路径,即
https://github.com/khataev/qna?
3) 如果我想建一个master以外的分支怎么办?我应该指定它吗?目前无人机就绪分支(带有 .drone.yml)不是主分支 - 它可以工作吗?
4) 为什么 DRONE_GITHUB_GIT_USERNAME 和 DRONE_GITHUB_GIT_PASSWORD 是 optional?如果我没有为我的 github 帐户指定用户名和密码,它应该如何工作?
5) 当我用 docker 启动无人机图像时,我得到这个错误:
→ docker-compose up
Starting drone_drone-server_1
Starting drone_drone-agent_1
Attaching to drone_drone-server_1, drone_drone-agent_1
drone-server_1 | time="2017-03-04T17:00:33Z" level=fatal msg="version control system not configured"
drone-agent_1 | 1:M 04 Mar 17:00:35.208 * connecting to server ws://drone-server:8000/ws/broker
drone-agent_1 | 1:M 04 Mar 17:00:35.229 # connection failed, retry in 15s. websocket.Dial ws://drone-server:8000/ws/broker: dial tcp: lookup drone-server on 127.0.0.11:53: no such host
drone_drone-server_1 exited with code 1
drone-server_1 | time="2017-03-04T16:53:38Z" level=fatal msg="version control system not configured"
UPD
5) 这已解决 - 忘记指定
DRONE_GITHUB=true
主页URL是无人机运行所在的服务器地址。
例如。 http://155.200.100.0
授权 URL 与 /authorize 附加的地址相同
例如。 http://155.200.100.0/authorize
您不必指定。 DRONE_GITHUB=true 表示使用无人机 github url.
您可以将单个部分限制为一个分支或整个无人机构建。
单节:
pipeline:
build:
image: node:latest
commands:
- npm install
- npm test
when:
branch: master
整个构建过程:
pipeline:
build:
image: node:latest
commands:
- npm install
- npm test
branches: master
- 使用 OAuth 时不需要用户名和密码。
来源:
http://readme.drone.io/admin/setup-github/
http://readme.drone.io/usage/skipping-builds/
http://readme.drone.io/usage/skipping-build-steps/
更新:
由于 Drone 的 0.6 版本
,文档已转移到 http://docs.drone.io/
我正在尝试使用无人机(开源版)在公司网络内设置 CI 服务器。它的作者将无人机描述为非常简单的解决方案,即使对于程序员(就像我一样)也是如此,尽管有些时候我还不清楚(可能是官方文档遗漏了它们)。
首先,我为我的 rails 应用制作了一个 docker 图像:rails-qna。 接下来,合成无人机图像:
docker-compose.yml:
version: '2'
services:
drone-server:
image: drone/drone:0.5
ports:
- 80:8000
volumes:
- ./drone:/var/lib/drone/
restart: always
environment:
- DRONE_OPEN=true
- DRONE_ADMIN=khataev
- DRONE_GITHUB_CLIENT=github-client-string
- DRONE_GITHUB_SECRET=github-secret-string
- DRONE_SECRET=drone-secret-string
drone-agent:
image: drone/drone:0.5
command: agent
restart: always
depends_on: [ drone-server ]
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_SERVER=ws://drone-server:8000/ws/broker
- DRONE_SECRET=drone-secret-string
应用程序已在 Github 上注册并提供了 secret/client 个字符串。
我将 .drone.yml 文件放入我的项目存储库中:
pipeline:
build:
image: rails-qna
commands:
- bundle exec rake db:drop
- bundle exec rake db:create
- bundle exec rake db:migrate
- bundle exec rspec
不清楚的时刻: 1) 在 github 上注册 OAuth 应用程序时,我们应该指定主页 URL 和授权回调 URL。他们应该指向哪里?无人机服务器容器?猜对了,我指定 mycorporatedomain.com:3005 和 mycorporatedomain.com:3005/授权 并设置从主机的3005端口到80端口的端口转发,其中无人机docker是运行。可能是我错了?
2) 我应该在键 DRONE_GITHUB_URL 中指定什么? https://github.com 或我的项目存储库的完整路径,即 https://github.com/khataev/qna?
3) 如果我想建一个master以外的分支怎么办?我应该指定它吗?目前无人机就绪分支(带有 .drone.yml)不是主分支 - 它可以工作吗?
4) 为什么 DRONE_GITHUB_GIT_USERNAME 和 DRONE_GITHUB_GIT_PASSWORD 是 optional?如果我没有为我的 github 帐户指定用户名和密码,它应该如何工作?
5) 当我用 docker 启动无人机图像时,我得到这个错误:
→ docker-compose up
Starting drone_drone-server_1
Starting drone_drone-agent_1
Attaching to drone_drone-server_1, drone_drone-agent_1
drone-server_1 | time="2017-03-04T17:00:33Z" level=fatal msg="version control system not configured"
drone-agent_1 | 1:M 04 Mar 17:00:35.208 * connecting to server ws://drone-server:8000/ws/broker
drone-agent_1 | 1:M 04 Mar 17:00:35.229 # connection failed, retry in 15s. websocket.Dial ws://drone-server:8000/ws/broker: dial tcp: lookup drone-server on 127.0.0.11:53: no such host
drone_drone-server_1 exited with code 1
drone-server_1 | time="2017-03-04T16:53:38Z" level=fatal msg="version control system not configured"
UPD 5) 这已解决 - 忘记指定
DRONE_GITHUB=true
主页URL是无人机运行所在的服务器地址。 例如。 http://155.200.100.0 授权 URL 与 /authorize 附加的地址相同 例如。 http://155.200.100.0/authorize
您不必指定。 DRONE_GITHUB=true 表示使用无人机 github url.
您可以将单个部分限制为一个分支或整个无人机构建。
单节:
pipeline:
build:
image: node:latest
commands:
- npm install
- npm test
when:
branch: master
整个构建过程:
pipeline:
build:
image: node:latest
commands:
- npm install
- npm test
branches: master
- 使用 OAuth 时不需要用户名和密码。
来源:
http://readme.drone.io/admin/setup-github/
http://readme.drone.io/usage/skipping-builds/
http://readme.drone.io/usage/skipping-build-steps/
更新:
由于 Drone 的 0.6 版本
,文档已转移到 http://docs.drone.io/