当前位置:   article > 正文

Drone CI/CD 使用 exec 流水线进行持续交付,exec一直卡pending_drone step is pending

drone step is pending

Drone CI/CD 是一款轻量的devOps软件。

声明 pipeline type的类型,在 yml 文件中写入 step 就可以进行自定义打包了。pipeline的常用类型有 docker等,使用一个基础镜像,在drone的容器内部进行打包,如 node:10 -> commands : npm install/ npm build.

本文主要说明如何使用 pipelineexec 类型时,只需要执行自定义bash脚本,或几句简单的bash命令完成自己的CD。

  • 安装Drone,如果是多节点则需要安装 drone-agent。本文以多节点安装, Drone + Gitlab 实例
docker run --volume=/var/lib/drone:/data --env=DRONE_AGENTS_ENABLED=true  \
 --env=DRONE_GITLAB_SERVER=${gitlab.yoururl.com} \ 
 --env=DRONE_GITLAB_CLIENT_ID=${gitlab中的client id} \   
 --env=DRONE_GITLAB_CLIENT_SECRET=${gitlab中的client secret} \
 --env=DRONE_RPC_SECRET=${自定义 secret}  \
 --env=DRONE_SERVER_HOST=${drone.yoururl.com} \ 
 --env=DRONE_SERVER_PROTO=http \
 --env=DRONE_TLS_AUTOCERT=false --env=DRONE_LOGS_DEBUG=true \
 --env=DRONE_USER_CREATE=username:root,admin:true   \
 --publish=8881:80 --restart=always --detach=true --name=drone drone/drone:1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

配置Agent

docker run -d   -v /var/run/docker.sock:/var/run/docker.sock \
  -e DRONE_RPC_PROTO=http \
  -e DRONE_RPC_HOST=${drone.yoururl.com} \
  -e DRONE_RPC_SECRET=${自定义 secret 与 上面对应}   \
  -e DRONE_RUNNER_CAPACITY=1   \
  -e DRONE_RUNNER_NAME=${agent 名称} \
  -p 3000:3000   \
  --restart always   --name runner   drone/agent:1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

到此,Drone 与 Gitlab 的配置已经配置完成。

  • 现在主要说说如何使用 Drone 中 pipeline 类型为 exec

这是一个实例的 yml 文件。

kind: pipeline
type: exec
name: deployment

platform:
  os: linux
  arch: amd64

steps:
- name: backend image build
  commands:
    - echo start build images...
    - export MAJOR_VERSION=1.0.rtm.
    - export BUILD_NUMBER=$DRONE_BUILD_NUMBER
    - export WORKSPACE=`pwd`
    - bash ./build.sh
  when:
    branch:
      - master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

如果我们仅仅只是配置了 drone + agent ,在 drone 执行这个yml文件的时候,一定会卡pending。

我们还需要在执行服务器上安装 drone-runner-exec

curl -L https://github.com/drone-runners/drone-runner-exec/releases/latest/download/drone_runner_exec_linux_amd64.tar.gz | tar zx
sudo install -t /usr/local/bin drone-runner-exec

touch /etc/drone-runner-exec/config
vim /etc/drone-runner-exec/config


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

将这些变量保存到config中:

DRONE_RPC_PROTO=http
DRONE_RPC_HOST=drone.yoururl.com
DRONE_RPC_SECRET=之前部署时的自定义secret

drone-runner-exec service install
drone-runner-exec service start
# 停止可以使用 
drone-runner-exec service stop
  • 1
  • 2
  • 3
  • 4

现在 Drone 就可以执行自定以的bash命令了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/832522
推荐阅读
  

闽ICP备14008679号