Toggle navigation
首页
技术
骑行
羽毛球
资讯
联络我
登录
搭建CD工具drone
2017-11-14
Docker
CD
# Drone简介 Drone是一个建立在容器技术上的持续交付系统。只需要一个简单的YAML配置文件(docker-compose的超集),就可以在Docker容器中定义和执行pipeline。 Drone需要配合git源代码管理工具运行,目前支持的工具如下: * GitHub * GitLab * Gitea * Gogs * Bitbucket Cloud * Bitbucket Server * Coding # Drone安装 目前最新版本为 0.8,可以使用一个 docker-compose 文件来启动 drone,示例如下: ```yml version: '2' services: drone-server: image: drone/drone:0.8 ports: - 8002:8000 - 9000 volumes: - /var/lib/drone:/var/lib/drone/ restart: always environment: - DRONE_OPEN=true - DRONE_HOST=http://localhost:8000 - DRONE_ADMIN=supperxin - DRONE_GITEA=true - DRONE_GITEA_URL=http://gitea:8001 - DRONE_SECRET=drone-workshop 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-workshop - DOCKER_API_VERSION=1.24 ``` 运行如下命令,就可以通过 http://ip:8002 访问drone首页了。 docker-compose up -d 参数解释: * DRONE_OPEN=true,启用开放注册,这样通过 git 源代码管理认证之后的用户会自动注册到drone中 * DRONE_HOST=http://localhost:8000,drone的网页访问地址 * DRONE_ADMIN=supperxin,管理员账号名称 * DRONE_GITEA=true,使用gitea作为源代码管理 * DRONE_GITEA_URL=http://gitea:8001,gitea的地址 * DRONE_SECRET=drone-workshop,drone server和agent通信的私钥 * DRONE_SERVER=drone-server:9000,drone server地址 * DOCKER_API_VERSION=1.24,定义docker api的版本,如果不定义则可能会出现错误:client is newer than server (client API version: 1.26, server API version: 1.24) # 建立repository和pipeline drone搭建好之后,就可以让repository集成CD了,步骤如下: 1. 在repository根目录下添加文件 .drone.yml: ```yml pipeline: test: image: alpine commands: - ./test.sh ``` 2. 添加一个测试脚本 test.sh: echo "hello drone!" 3. 加上执行权限: chmod +x test.sh 4. 访问 drone server 首页并用 gitea 的账号(本例为supperxin)登录,如果账号名称为DRONE_ADMIN设定的值,则自动成为drone的admin。 5. 点击右上角菜单 --> "Synchronize",会自动将账号有权限的repository同步过来。 6. 打开需要持续交付的repository的开关,drone会自动添加webhook到gitea 7. 将repository的修改提交,可以在drone这边看到pipeline的执行状况  # 增加部署功能 可以通过两种方式部署项目: 1. 通过pipeline将文件复制到server(下方deployfiles) 2. 通过pipeline远程执行server上的部署脚本(下方runscript) ```yml pipeline: test: image: alpine commands: - ./test.sh deployfiles: image: appleboy/drone-scp host: - ${server_ip} port: 22 username: ${username} password: ${password} target: /home/deploy/ source: - deploy.sh when: branch: master status: [ success ] runscript: image: appleboy/drone-ssh host: ${server_ip} port: 22 username: ${username} password: ${password} target: /home/deploy/ command_timeout: 180 script: - /home/deploy/deploy.sh when: branch: master status: [ success ] ```  关于drone插件drone-scp和drone-ssh可以参考下面链接查看更多内容: * [drone-ssh](http://plugins.drone.io/appleboy/drone-ssh/) * [drone-scp](http://plugins.drone.io/appleboy/drone-scp/)
×
本文为博主原创,如需转载,请注明出处:
http://www.supperxin.com
返回博客列表