开始使用开源 Drone CI
GenAI LIVE! | 2025年6月4日
如果您正在构建自己的副业或创业公司,并且想要避免在 Travic CI(每月 69 美元)等流行的商业解决方案上花费太多钱,您可以在笔记本电脑、AWS 免费套餐或任何其他服务器上使用您自己的自托管Drone CI。
无人机 CI 功能:
- 多平台支持
- 基于Yaml的配置
- 多管道和复杂构建步骤逻辑支持
- 基于 Docker
- 自由的
- Github、Gitlab、Bitbucket 支持
我们将在单机上运行 Drone CI 并使用 Github,但您也可以使用多机配置或 Kubernetes,以及不同的 VCS 提供商。更多信息请点击此处。
获取主机
为了本次测试的目的,我们使用 AWS EC2 免费套餐实例,但您可以使用任何您想要的实例。要使用我们的方法,请按照以下步骤操作:
- 转到 AWS 页面;
- 将您的 SSH 公钥添加到 EC2 页面上的密钥对部分(以通过 SSH 访问您的实例);
- 在 AWS 上创建一个新的 Ubuntu 18.04 免费套餐实例;
- 为实例的安全组允许 80 和 443 端口;如果是新帐户,请使用 launch-wizard-1,或在您的 EC2 实例的描述中找到它。
安装 Docker
你只需要 Docker 就可以开始使用 Drone。只需按照这里的说明操作即可。运行“docker -v”检查所有安装是否正确。
root@ip-172-31-23-205:~# docker -v
Docker version 18.09.3, build 774a1f4
创建 OAuth 应用程序
我们以 Github 为例,但您也可以在 Gitlab、Bitbucket、Gitea 和 Gogs 上运行它。更多信息请点击此处。
- 转到https://github.com/settings/developers并登录您的个人帐户(如果有)或设置一个帐户(如果没有)。
- 点击“新的 oAuth 应用”。
- 按照下面的示例填写表格。
您可以使用服务器的 IP 地址或为其分配域名来正确填写此表单。如果您这样做,则可以在后续步骤中使用客户端 ID 和客户端密钥。
安装无人机
这很简单,只需使用以下内容:
docker pull drone/drone:1
其次是:
--volume=/var/run/docker.sock:/var/run/docker.sock \
--volume=/var/lib/drone:/data \
--env=DRONE_GITHUB_SERVER=https://github.com \
--env=DRONE_GITHUB_CLIENT_ID=652d1he1a62b6336bf0 \
--env=DRONE_GITHUB_CLIENT_SECRET=c8990176a4bfywe55ekj8c3cf6d0ffccb8e3a213e \
--env=DRONE_RUNNER_CAPACITY=2 \
--env=DRONE_SERVER_HOST=drone1.pixelpoint.io \
--env=DRONE_SERVER_PROTO=https \
--env=DRONE_TLS_AUTOCERT=true \
--env=DRONE_USER_FILTER=lnikell \
--env=DRONE_USER_CREATE=username:lnikell,admin:true \
--publish=80:80 \
--publish=443:443 \
--restart=always \
--detach=true \
--name=drone \
drone/drone:1
使用此配置,Drone 会使用 Let's Encrypt 生成 SSL 证书,这样我们就可以使用 https 访问 Drone UI。您的用户帐户将拥有管理员权限 (DRONE_USER_CREATE),您需要放弃该权限才能锁定其他任何人对服务器的访问权限 (DRONE_USER_FILTER)。您可以在此处找到其他变量的说明。
您的实例现在应该已启动并运行,只需登录并使用它!
定义你的管道
准备好 Drone CI 实例后,就可以激活存储库并创建管道了。首先,使用搜索栏找到存储库并激活它。
在设置页面上,您可以更改项目可见性设置、添加机密(构建步骤所需的敏感信息)或添加 cron 作业。
在 Drone 中定义构建步骤和流程非常简单。只需将 .drone.yml 文件添加到您的存储库,并使用 yaml 语法描述这些步骤即可。以下是一个简单的示例:
kind: pipeline
name: default
steps:
- name: frontend
image: node
commands:
- npm ci
- npm run test:unit
上面的例子也可以在这里找到:https://github.com/lnikell/hello-world/tree/master
现在,当您推送到存储库时,它将触发 Drone CI 上的新构建。
但你还可以做更多,这取决于项目的复杂程度。以下是此流程的一些典型用途:
- 发送 Slack 通知
- 部署到 Kubernetes
- 将镜像推送到 Docker 注册表
- 运行测试所需的数据库或其他服务实例
- 运行多个管道并使用多平台
Drone 是我们团队日常工作的得力助手,它极大地提升了测试和部署代码的稳定性、灵活性和便捷性。如需了解更多关于 Drone CI 的信息,请访问https://drone.io/并阅读我们关于Drone 1.0 改进的故事。
鏂囩珷鏉ユ簮锛�https://dev.to/alex_barashkov/getting-started-with-open-source-drone-ci-4pgc