问题描述
源代码位于他们的服务器上,他们没有批准将其放在云端。他们目前没有无缝的CI/CD流程。他们想知道是否可以使用Azure Pipeline代理或其他本地代理来构建他们的代码,并且只将构建产物导出到云端,然后继续进行CD流程。他们将应用部署在Azure上,但不部署源代码。他希望获得一个适用于他们情况的好的CI/CD解决方案。
解决方案
请注意以下操作可能因工具更新或版本变更而略有不同。
方案1:使用Azure Pipeline代理
Azure DevOps提供了Azure Pipeline代理,可以在本地构建和部署流程中使用。以下是在使用Azure Pipeline代理进行CI/CD的步骤:
-
设置Azure Pipeline代理:在Azure DevOps中,创建一个新的Agent Pool,并将代理主机添加到该池中。代理主机可以是您的本地服务器。这样,您就可以在代理主机上执行构建和发布任务。
-
创建Pipeline:在Azure DevOps中,创建一个新的CI/CD管道。在管道配置中,选择适当的代码源(如GitHub或Azure Repos)并指定构建和发布任务。
-
配置代理连接:在管道配置中,为构建和发布任务指定使用之前设置的Azure Pipeline代理。这将确保任务在本地代理主机上运行。
-
构建和发布:根据需要配置构建和发布任务。确保在构建任务中生成所需的构建产物,并在发布任务中指定将构建产物导出到云端的方式(如上传至Azure存储)。
方案2:使用GitHub Actions本地代理
GitHub Actions允许您使用自定义的执行器(Runner)在本地构建和部署流程中使用。以下是使用GitHub Actions本地代理进行CI/CD的步骤:
-
设置自定义执行器:在您的本地服务器上创建一个自定义的执行器实例。您可以按照GitHub官方文档的指导,在服务器上运行必要的命令来设置执行器。执行器将连接到GitHub Actions并执行您的构建和部署任务。
-
配置Workflow:在您的代码仓库中创建一个新的Workflow文件(如
.github/workflows/main.yml
)。在Workflow文件中,配置构建和部署任务,并指定使用之前设置的自定义执行器。 -
构建和发布任务:根据您的需求,在Workflow文件中编写构建和发布任务。确保在构建任务中生成构建产物,并在发布任务中指定将构建产物导出到云端的方式(如GitHub Release)。
注意事项和建议
- 在使用本地代理进行CI/CD时,确保您的本地服务器具有足够的计算资源和网络连接,以支持构建和部署任务。
- 如果您使用的是Azure服务,您可以考虑Azure DevOps的完整集成,以获取更多内置功能和便捷性。
- 在选择构建产物导出方式时,考虑到安全性和效率,选择适合您情况的云存储或发布方法。
示例代码片段:使用GitHub Actions本地执行器的Workflow配置
以下是一个简化的Workflow配置示例,演示如何在GitHub Actions中使用本地执行器进行CI/CD:
name: CI/CD with Local Runner
on: [push]
jobs:
build-and-deploy:
runs-on: self-hosted
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up custom runner
run: ./setup-runner.sh # 设置本地执行器
- name: Build
run: ./build.sh # 执行构建任务
- name: Deploy
run: ./deploy.sh # 执行部署任务
在上述示例中,self-hosted
代表使用自定义的执行器,setup-runner.sh
是设置执行器的脚本,build.sh
和deploy.sh
分别是构建和部署任务的脚本。
通过以上方案,您可以实现在本地构建和部署流程中使用Azure Pipeline代理或GitHub Actions本地执行器,从而避免将源代码放在云端,只导出构建产物到云端进行CD流程。根据您的具体情况和需求,选择适合您的CI/CD方案。