【Drone】Drone + GOGS 自动CI/CD
编辑Drone 安装
version: "3.5"
services:
drone-server:
image: drone/drone:latest
container_name: drone
ports:
- "9999:80"
volumes:
- /home/drone:/data
restart: always
environment:
- DRONE_LOGS_TRACE=true
- DRONE_LOGS_DEBUG=true
- DRONE_AGENTS_ENABLED=true
- DRONE_SERVER_HOST=xxxx:9999
- DRONE_SERVER_PROTO=http
- DRONE_RPC_SECRET=drone-passwd
- DRONE_GIT_ALWAYS_AUTH=true
- DRONE_GOGS_SERVER=https://*.com
- DRONE_USER_CREATE=username:admin,admin:true
drone-agent:
image: drone/drone-runner-docker:latest
container_name: agent
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=drone-server
- DRONE_RPC_SECRET=drone-passwd
注意
「DRONE_SERVER_HOST」,这个写 Drone 的地址
「DRONE_RPC_SECRET」,这个要与 drone-agent 中的「DRONE_RPC_SECRET」值一致
上例中的 「drone-agent」是一个 docker-runner,drone 有很多种不同类型的 runner,按需配置,详见:Drone Runner List
「DRONE_GIT_ALWAYS_AUTH」这个不设置的话,在后面 clone 仓库可能会出现权限验证等错误
「DRONE_USER_CREATE」设置 gogs 登录的管理员账户
登录
访问:xxxx:9999 进行登录,输入 gogs 帐号密码进行登录
如果登录失败,提示 「Forbidden 」、「Unauthorized」
一般是多次部署导致的,在「gogs - 用户配置 - 授权应用」中删除 drone 的授权,重新登录既可
生成新的令牌,然后将 ID、TOKEN 分别填在部署时候的「未验证是否可行」
「DRONE_GITEA_SERVER」: gogs 服务器的 url 地址
「DRONE_GITEA_CLIENT_ID」:id
「DRONE_GITEA_CLIENT_SECRET」:token检查部署的时候,是否正确设置了「DRONE_USER_CREATE=username:admin,admin:true」(username 后跟gogs 的用户)
登录成功,可以看到该账户下的所有仓库
Demo
Docker镜像自动构建
选择要操作的仓库,激活
如果镜像涉及到 Volumes 的操作,打开 truested 选项(建议打开),然后保存
Configuration 的名字即仓库里 drone pipeline 的名称,可以修改,但是建议保持默认
如果在 CI/CD 的过程中涉及一些敏感信息/密钥(比如构建好镜像好,上传到指定仓库,需要输入帐号密码),可以在 Secret 界面进行配置
Secret 的使用,详见 [「Drone - Secrets」](https://docs.drone.io/secret/)
方法一
kind: pipeline name: default steps: - name: test image: busybox commands: - echo "Pypi Account Test" - echo $USERNAME, $PASSWORD environment: USERNAME: from_secret: pypiuser PASSWORD: from_secret: pypipasswd
方法二
kind: pipeline name: default steps: - name: build image: plugins/docker settings: repo: octocat/hello-world username: from_secret: docker_username password: from_secret: docker_password commands: - echo "You can call the secrets like this examples below." - echo $USERNAME - echo $PASSWORD - echo "In both cases, and for security reasons, you will see asteriks '*******' instead the value under the echo command."
查看 Webhook
按照上面的步骤配置,如果一切顺利的话,在 gogs 仓库的「仓库配置 - 管理Web钩子」应该可以看到刚刚配置好的,webhook
编写 pipeline 文件: 「Pipline Document」
kind: pipeline # 默认为 pipeline type: docker name: deployment # 构建文件名称 steps: # 数组结构,流水线化的构建步骤 - name: buiild pull: if-not-exists # 如果镜像不存在则拉取,免去每次都要重新下载 image: plugins/docker settings: dockerfile: Dockerfile # Dockerfile 在项目中的位置 tags: - latest # 生成镜像后的Tag标签
关于 plugins/docker 的具体可选参数和设置,详见:「Drone - Plugins - Docker」
- 0
- 0
-
赞助
微信 -
分享