Drone学习总结

Drone学习总结

Drone实现原理

Drone中测试执行过程

Cloud Drone测试

  1. 配置OAuth

    生成Client ID和Client Secret

        

        配置Application信息

  1. 使用github账户登录cloud.drone.io,确认授权

  2. 激活需要与drone集成的库

    登录进入cloud.drone.io之后,在Repositories列表中选择需要与Drone集成的库。

  3. 在github中配置某个库的webhooks

    在第3步激活某个项目之后,在项目的settings下面就会自动添加webhooks信息,如下图所示。注意的是,drone默认是80端口,所以如果修改了端口还需要手动在hook url中添加端口。

进入到某个webhook,可以在页面的最后面看到Deliver的历史记录,如下图所示。可以通过右上角按钮重新推送进行测试。

Drone本地测试

在本地搭建的过程中,尝试过docker-compose和直接通过drone.deb的方式安装。drone.deb包现在比较古老,是0.3.0版本,所以界面并不好看,而且有许多不足。最终按照如下的docker-compose配置文件成功启动了drone。

按照官方的方法install,会提示ssl验证不过,所以放弃官方的版本。

现把docker-compose的文件直接贴出来。

version: '3'
services:
  drone-server:
    container_name: drone-server
    image: drone/drone:1.0.0-rc.5
    ports:
      - 8080:80
    volumes:
      - db-data:/var/lib/drone/
    restart: always
    environment:
      # - DRONE_OPEN=false
      - DRONE_SERVER_HOST=123.xxxxxx # tunnel hostname       
      - DRONE_GITHUB_SERVER=https://github.com
      - DRONE_ADMIN=xxxxxxxxx
      - DRONE_GITHUB_CLIENT_ID=xxxxx
      - DRONE_GITHUB_CLIENT_SECRET=xxxxx
      - DRONE_SERVER_PROTO=http # tunnel adds https on top
      - DRONE_RPC_SECRET=xxxxxxxx
  drone-agent:
    container_name: drone-agent
    image: drone/agent:1.0.0-rc.5
    command: agent
    restart: always
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_RPC_SERVER=http://drone-server
      - DRONE_RPC_SECRET=xxxxxxxxx
      - DRONE_RUNNER_CAPACITY=2
      - DRONE_RUNNER_NAME="local"
      - DRONE_DEBUG=true
volumes:
  db-data:

Drone的特性说明

端口修改

端口修改的时候不能将本地也修改为其他端口,只能将本地端口映射到需要对外开放的端口,如上述的配置:

    ports:
      - 8080:80

Matrix

  • 使用matrix的时候,不能使用steps的方式,而是使用pipeline的方式。

  • 在matrix中只支持key-value的形式,并且value只能是一行代码。比如要执行多个shell语句的时候,则需要用&&符号将命令链接,如下所示:

Secret

在Drone中有两种使用secret的情况,一种是在使用steps的情况,一种是使用pipeline的情况。

  • 使用steps情况

    kind: pipeline  
    name: deploy  
      
    steps:  
    - name: hello-world
      image: docker 
      environment:
        TEST_PWD:
          from_secret:  TEST_PWD
      envs: [ TEST_PWD ]
      commands:  
        - echo "hello world"
        - echo ${TEST_PWD}
        - echo $TEST_PWD
        - echo $$TEST_PWD
        - date -R
  • 使用pipeline情况

    secrets: [ FTP_PWD ]
    commands:
       - echo ${FTP_PWD}
       - echo $FTP_PWD

故障执行

在官方文档(https://0-8-0.docs.drone.io/zh/getting-started/)上的方式通过slack插件实现,但是这个方式是将工作流日志发给设置的地址。但是如果我们想在成功或者失败之后都执行某些口令,这种方式不适合。可以通过在commands下面添加set +e实现上述需求。

    commands:
      - set +e

参考网站

猜你喜欢

转载自blog.csdn.net/shuizhongmose/article/details/100564463