docker 搭建drone + gitee 的CI/CD
Posted 弓弧名家_玄真君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 搭建drone + gitee 的CI/CD相关的知识,希望对你有一定的参考价值。
准备
创建 OAuth 应用程序
创建一个 Gitee OAuth 应用程序。Consumer Key 和 Consumer Secret 用于授权访问 Gitee 资源。
授权回调 URL 必须与以下格式和路径匹配,并且必须使用您的确切服务器方案和主机。应用主页填写 http://111.111.121.189:8793
应用回调地址填写 http://111.111.121.189:8793/login
创建共享密钥
创建一个共享密钥来验证跑步者和您的中央无人机服务器之间的通信。
您可以使用 openssl 生成共享密钥:
$ openssl rand -hex 16
bea26a2221fd8090ea38720fc445eca6
下载
Drone 服务器作为轻量级 Docker 映像分发。镜像是自包含的,没有任何外部依赖。
$ docker pull drone/drone:2
配置
Drone 服务器使用环境变量进行配置。本文引用了配置选项的子集,定义如下。有关配置选项的完整列表,请参阅配置。
-
DRONE_GITEE_CLIENT_ID
必需的字符串值提供您的 Gitee oauth 客户端 ID。
-
DRONE_GITEE_CLIENT_SECRET
必需的字符串值提供您的 Gitee oauth 客户端密码。
-
DRONE_GITEE_SERVER
可选的 url 值提供 Gitee 服务器地址。默认值为 gitee.com 服务器地址
https://gitee.com
。 -
DRONE_GITEE_API_SERVER
可选字符串值提供 Gitee api 服务器地址。默认值为
https://gitee.com/api/v5
。 -
DRONE_RPC_SECRET
必需的字符串值提供在上一步中生成的共享密钥。这用于验证服务器和运行器之间的 rpc 连接。必须为服务器和运行器提供相同的秘密值。
-
DRONE_SERVER_HOST
必需的字符串值提供您的外部主机名或 IP 地址。如果使用 IP 地址,您可以包括端口。例如,
drone.domain.com
-
DRONE_SERVER_PROTO
必需的字符串值提供您的外部协议方案。该值应设置为
http
或https
。如果您配置 ssl 或 acme,此字段默认为 https。
启动服务器
可以使用以下命令启动服务器容器。容器是通过环境变量配置的。请记住将下面的占位符值替换为适当的值。
docker run --volume=/var/lib/drone:/data --env=DRONE_GITEE_CLIENT_ID=DRONE_GITEE_CLIENT_ID --env=DRONE_GITEE_CLIENT_SECRET=DRONE_GITEE_CLIENT_SECRET --env=DRONE_RPC_SECRET=DRONE_RPC_SECRET --env=DRONE_USER_CREATE=username:yourUsername,admin:true --env=DRONE_SERVER_HOST=111.111.121.189:8793 --env=DRONE_SERVER_PROTO=http --publish=8793:80 --publish=443:443 --restart=always --detach=true --name=drone drone/drone:2
yourUsername 可以通过
curl -i http://111.111.121.189:8793/api/user \\
>-H "Authorization: Bearer 738899333"
相似命令查看 然后替换 yourUsername 其实也是码云的用户名
安装 docker drone runner
在 Linux 上安装
本文介绍如何在 Linux 上安装 Docker 运行器。Docker runner 打包为一个最小的 Docker 镜像,分布在DockerHub上,可用于以下架构:
- amd64
- 手臂
- arm64
下载
安装 Docker 并拉取公共镜像:
$ docker pull drone/drone-runner-docker:1
配置
Docker 运行器是使用环境变量配置的。本文引用了以下配置选项。有关配置选项的完整列表,请参阅配置。
-
DRONE_RPC_HOST
提供 Drone 服务器的主机名(和可选端口)。运行程序连接到主机地址的服务器以接收管道以执行。
-
DRONE_RPC_PROTO
提供用于连接 Drone 服务器的协议。该值必须是 http 或 https。
-
DRONE_RPC_SECRET
提供用于向 Drone 服务器进行身份验证的共享密钥。这必须与您的 Drone 服务器配置中定义的密钥匹配。
安装
下面的命令创建一个容器并启动 Docker 运行器。请记住将下面的环境变量替换为您的 Drone 服务器详细信息。
docker run --detach --volume=/var/run/docker.sock:/var/run/docker.sock --env=DRONE_RPC_PROTO=http --env=DRONE_RPC_HOST=111.111.121.189:8793 --env=DRONE_RPC_SECRET=DRONE_RPC_SECRET --env=DRONE_RUNNER_CAPACITY=2 --env=DRONE_RUNNER_NAME=my-first-runner --publish=8793:3000 --restart=always --name=runner drone/drone-runner-docker:1
确认
使用docker logs
命令查看日志并验证 runner 是否成功与 Drone 服务器建立连接。
$ docker logs runner
INFO[0000] starting the server
INFO[0000] successfully pinged the remote server
开始使用
先进到111.111.121.189:8793 /页面 点击按钮 跳转到码云进行授权
同步项目
点击项目进入到
点击setting/Activate Repository 进入
如上图配置
点击Save Changes
然后在项目根目录添加.drone.yml文件配置
kind: pipeline
type: docker
name: build
steps:
- name: build
image: node:12-alpine
volumes:
- name: node-cache
path: /data
commands:
- npm install --registry=https://registry.npm.taobao.org
- npm run build
- cp -r ./main_master/ /data
volumes:
- name: node-cache
host:
path: /mnt/nginx/html
trigger:
branch:
- master
event:
- push
./main_master/ 是打包后的文件夹名称
/mnt/nginx/html 是需要放到的宿主环境的目录 我这里是nginx的 html文件夹 的宿主环境目录
drone + docker 部署 express
.drone.yml 的配置
kind: pipeline
type: docker
name: build
steps:
- name: docker
image: docker
volumes:
- name: dockersock
path: /var/run/docker.sock
commands:
- docker build -t tangxl/wx .
- docker stop tangxlwx
- docker rm tangxlwx
- docker run -itd -p 8001:8001 --name tangxlwx tangxl/wx
volumes:
- name: dockersock
host:
path: /var/run/docker.sock
trigger:
branch:
- master
event:
- push
Dockerfile 的配置
FROM node:12-alpine
RUN mkdir -p /tangxlWx
WORKDIR /tangxlWx
COPY package.json /tangxlWx/package.json
RUN npm i --registry=https://registry.npm.taobao.org
COPY . /tangxlWx/
ENV DOCKER=true
EXPOSE 8001
CMD npm start
以上是关于docker 搭建drone + gitee 的CI/CD的主要内容,如果未能解决你的问题,请参考以下文章
2022-03-12:k8s如何搭建gogs+drone实现自动化部署cicd,yaml如何写?