Appearance
CI/CD
Drone 和 Woodpecker (区别很小) 插件可共用功能完备。
自定义插件非常简单,也可结合脚本。
可以在K8s集群中运行,Docker中运行以及本地运行。 那么也就意味着我们可以从Docker阶段出发最终过渡到K8s集群
当然我们也可以选择GitHub Actions 或 AWS CodePipeline,他们在原理上是相通的
部署
为方便构建,这是我的服务器中的docker-compose文件,可以直接使用验证
替换到实际使用的git
bash
``` yaml
services:
drone:
container_name: drone
restart: unless-stopped
image: drone/drone:2.26.0
networks:
- dev
ports:
- "3030:80"
volumes:
- /mnt/user/appdata/drone:/var/lib/drone/
- /mnt/user/appdata/drone/data:/data/
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
- DRONE_GITEA_SERVER=http://192.168.8.6:3000/ # Gitea访问地址
- DRONE_GITEA_CLIENT_ID=48b30a9b-359c-4de2-8f5d-fce26e99539a # 应用ID
- DRONE_GITEA_CLIENT_SECRET=gto_tr2o7pe6zn6y7ke75bxzlzteiy763q2xwjbbyib5bvfnxm2rmn6a # 应用密钥
- DRONE_SERVER_HOST=http://192.168.8.6:3030
- DRONE_SERVER_PROTO=http # 支持http, https
- DRONE_RPC_SECRET=7cc96b3ca902a735958033cb233abb6e # 通信密钥,下一步会获取
- DRONE_GIT_ALWAYS_AUTH=true
- DRONE_GIT_USERNAME=hao88 # git用户名
- DRONE_GIT_PASSWORD=Hao88.dev! # git密码
- DRONE_USER_CREATE=username:hao88,admin:true # 管理员用户名,开启管理员账户
- DRONE_DEBUG=true
- DRONE_TRACE=true
- DRONE_DATABASE_DRIVER=postgres
- DRONE_DATABASE_DATASOURCE=postgres://hao88:Hao88.dev!@192.168.8.6:5432/dronecicd?sslmode=disable
- TZ=Asia/Shanghai
# depends_on: # 添加依赖关系
# - gitea
drone-runner:
container_name: drone-runner
restart: unless-stopped
image: drone/drone-runner-docker:1.8
networks:
- dev
ports:
- "3031:3000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
- DRONE_RPC_PROTO=http # 支持http, https
- DRONE_RPC_HOST=drone
- DRONE_RPC_SECRET=7cc96b3ca902a735958033cb233abb6e # 通信密钥,下一步会获取
- DRONE_RUNNER_NAME=drone-runner-docker
- DRONE_RUNNER_CAPACITY=2 # 同时运行的流水线个数
- TZ=Asia/Shanghai
- DRONE_DEBUG=true
- DRONE_TRACE=true
depends_on:
- drone
networks:
dev:
name: dev
driver: bridge
external: true示例
取自我的云原生混合项目,自动构建和推送多架构镜像到Docker Hub,然后进一不实施
yaml
kind: pipeline
type: docker
name: default
trigger:
branch:
#- dev
- master
steps:
- name: build_push
image: docker:dind
volumes:
- name: docker
path: /var/run/docker.sock
environment:
DOCKER_BUILDKIT: 1
DOCKER_USER:
from_secret: DOCKER_USER
DOCKER_PWD:
from_secret: DOCKER_PWD
commands:
- docker --version
- docker login -u "$DOCKER_USER" -p "$DOCKER_PWD". # login to docker hub
- docker buildx create --name aBuildX --use # Create and use a Buildx builder
- docker buildx build --platform linux/amd64,linux/arm64 -f Dockerfile -t hao88/wgmserver:amd64 -t hao88/wgmserver:arm64 --push . # Build and push multi-arch images
- docker buildx rm aBuildX # Remove the Buildx builder
volumes:
- name: docker
host:
path: /var/run/docker.sock