GitHub Actions
GitHub Actions 允许你将应用程序构建为 Docker 镜像并自动部署到 Coolify。
GitHub Actions 为你的应用部署提供了更大的灵活性,因为你可以在特定分支的提交或 GitHub 上的发布等事件触发工作流。你还可以将检查和测试集成到 CI/CD 管道中,确保在所有验证通过后,新版本才部署到 Coolify。
流程概览
设置 GitHub Actions 以构建并发布应用的 Docker 镜像到容器注册表(例如 GHCR 或 Docker Hub),然后调用 Coolify 的 API 使用推送到注册表的最新镜像重新部署你的应用。
示例数据
以下数据在本指南中作为示例使用。请按照步骤操作时将其替换为你的实际数据:
- Docker 镜像:
shadowarcanist/tasklytics:latest - 注册表:
ghcr.io - 分支:
main
1. 选择合适的部署类型
使用 GitHub Actions,在 GitHub 运行器上将你的应用程序构建为 Docker 镜像并推送到容器注册表。选择支持预构建 Docker 镜像的部署类型。
对于基于 Git 的应用程序,使用 Docker Compose 作为构建包。在你的 compose 文件中,拉取预构建镜像而不是构建它:
services:
web:
# 旧:
# build:
# context: .
# dockerfile: Dockerfile
# 新:
image: ghcr.io/shadowarcanist/tasklytics:latest
ports:
- "8080:8080"对于基于 Docker 的应用程序,使用镜像名称如 ghcr.io/shadowarcanist/tasklytics:latest,以便 Docker 拉取预构建镜像。
2. 启用 Coolify API
- 进入 Coolify 中的“设置”页面。
- 点击“配置”选项卡。
- 点击“高级”。
- 勾选“API 访问”选项。
3. 创建 Coolify API 令牌
- 进入 Coolify 中的“密钥与令牌”页面。
- 点击“API 令牌”选项卡。
- 勾选令牌权限下的“部署”选项。
- 为你的 API 令牌命名。
- 点击“创建”按钮。
- 复制并保存生成的 API 令牌到安全的地方(稍后需要用到)。
4. 获取 Coolify Webhook URL
- 打开你的应用程序配置页面。
- 进入“Webhook”页面。
- 复制并保存“部署 Webhook”URL 到安全的地方(稍后需要用到)。
5. 设置仓库密钥
- 进入你的 GitHub 仓库设置。
- 点击侧边栏中的“Actions”(在“Secrets and variables”下)。
- 点击“新建仓库密钥”。
- 输入
COOLIFY_WEBHOOK作为名称。 - 输入 Coolify 部署 webhook URL 作为密钥(来自第 4 步)。
- 点击“添加密钥”按钮。
- 点击“新建仓库密钥”。
- 输入
COOLIFY_TOKEN作为名称。 - 输入 Coolify API 令牌作为密钥(来自第 3 步)。
- 点击“添加密钥”按钮。
6. 设置 GitHub 工作流
- 在你的仓库的
.github/workflows目录中创建一个新的工作流文件(以.yml或.yaml扩展名命名)。 - 使用以下工作流内容作为起点:
name: Build and Deploy
on:
push:
branches: ["main"] # 在推送到 main 分支时触发
env:
REGISTRY: ghcr.io
IMAGE_NAME: "andrasbacsai/github-actions-with-coolify"
jobs:
build-and-deploy:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v3
- name: Login to registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push image
uses: docker/build-push-action@v4
with:
context: .
file: Dockerfile
platforms: linux/amd64
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
- name: Deploy to Coolify
run: |
curl --request GET '${{ secrets.COOLIFY_WEBHOOK }}' --header 'Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}'此工作流构建 Docker 镜像,使用 latest 标签将其推送到 ghcr.io,并通过 API 触发 Coolify 中的重新部署。
重要
上述工作流仅用于展示流程如何工作的示例。请根据你的 CI/CD 需求进行调整。
确保 部署到 Coolify 步骤在所有检查和测试之后运行,这样它只会在之前的所有内容通过时才执行。
7. 与容器注册表进行身份验证
如果推送到私有注册表,请在你的服务器上对其进行身份验证,以便它可以拉取镜像。
在你的服务器终端上运行以下命令之一(根据注册表):
- Docker Hub:
docker login - GitHub Container Registry (GHCR):
echo $GH_TOKEN | docker login ghcr.io -u $USERNAME --password-stdin
对于其他注册表,请参阅其文档。
就这样!
