Github continuous deployment (CD) 最佳实践

简介: Github continuous deployment (CD) 最佳实践

Git

46 篇文章0 订阅

订阅专栏

About continuous deployment


您可以使用 GitHub 操作直接在 GitHub 存储库中创建自定义持续部署 (CD) 工作流。


About continuous deployment

持续部署 (CD) 是使用自动化来发布和部署软件更新的做法。作为典型 CD 流程的一部分,代码会在部署前自动构建和测试。


持续部署通常与持续集成相结合。有关持续集成的更多信息,请参阅“关于持续集成”。


About continuous deployment using GitHub Actions

您可以设置 GitHub 操作工作流来部署您的软件产品。为了验证您的产品是否按预期工作,您的工作流程可以在您的存储库中构建代码并在部署之前运行您的测试。


您可以将 CD 工作流配置为在 GitHub 事件发生时(例如,将新代码推送到存储库的默认分支时)、按设定的计划、手动或在使用存储库调度 Webhook 发生外部事件时运行。有关何时可以运行工作流的更多信息,请参阅“触发工作流的事件”。


GitHub Actions 提供的功能可让您更好地控制部署。例如,您可以使用 environments 要求批准作业才能继续、限制哪些分支可以触发工作流或限制对机密的访问。您可以使用并发将 CD 管道限制为最多一个正在进行的部署和一个待处理的部署。有关这些功能的更多信息,请参阅“使用 GitHub 操作进行部署”和“使用环境进行部署”。


Using environments for deployment

您可以使用 protection rules 和 secrets 配置环境。 在运行或访问环境的 secrets 之前,引用环境的工作流作业必须遵循环境的任何保护规则。


什么是 environments

环境用于描述一般部署目标,如生产、暂存或开发。 当 GitHub Actions 工作流部署到环境时,环境会显示在存储库的主页上。有关查看环境部署的更多信息,请参阅“查看部署历史记录”。


您可以使用保护规则和 secrets 配置环境。 当工作流作业引用环境时,在所有环境保护规则都通过之前,作业不会启动。在所有环境保护规则都通过之前,作业也无法访问环境中定义的机密。


Environment protection rules

环境保护规则要求通过特定条件才能继续进行引用环境的作业。您可以使用环保规则来要求手动审批、延迟作业或将环境限制为某些分支机构。


Required reviewers

使用必需的审阅者来要求特定人员或团队批准引用环境的工作流作业。您最多可以列出六个用户或团队作为审阅者。审阅者必须至少具有对存储库的读取权限。 只有一名所需的审阅者需要批准作业才能继续进行。


Environment secrets

存储在环境中的机密仅可用于引用该环境的工作流作业。 如果环境需要批准,则在所需的审阅者之一批准之前,作业无法访问环境机密。


Using an environment

工作流中的每个作业都可以引用一个环境。在将引用环境的作业发送到运行程序之前,必须通过为环境配置的任何保护规则。 只有在将作业发送给运行程序后,作业才能访问环境的机密。


当工作流引用环境时,环境将出现在存储库的部署中。 有关查看当前和以前部署的详细信息,请参阅“查看部署历史记录”。


您可以为工作流程中的每个作业指定一个环境。 为此,添加一个 jobs.  .environment 键,后跟环境名称。


例如,此工作流将使用称为 production 的环境。


1

name: Deployment
on:
  push:
    branches:
      - main
jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: deploy
        # ...deployment-specific steps

当上述工作流运行时,部署作业将遵循为生产环境配置的任何规则。 例如,如果环境需要审阅者,则作业将暂停,直到其中一位审阅者批准该作业。


您还可以为环境指定 URL。 指定的 URL 将显示在存储库的部署页面(通过单击存储库主页上的环境访问)和工作流运行的可视化图中。 如果拉取请求触发了工作流,则 URL 还会在拉取请求时间线中显示为“查看部署”按钮。


How environments relate to deployments

当引用环境的工作流作业运行时,它会创建一个部署对象,并将环境属性设置为您的环境名称。 随着工作流的进行,它还会创建部署状态对象,其中 environment 属性设置为您的环境名称,environment_url 属性设置为 environment 的 URL(如果在工作流中指定),以及 state 属性设置为工作。


您可以通过 REST API 或 GraphQL API 访问这些对象。 您还可以订阅这些 webhook 事件。

318

相关文章
|
2月前
|
Java Spring 传感器
AI 浪潮席卷,Spring 框架配置文件管理与环境感知,为软件稳定护航,你还在等什么?
【8月更文挑战第31天】在软件开发中,配置文件管理至关重要。Spring框架提供强大支持,便于应对不同环境需求,如电商项目的开发、测试与生产环境。它支持多种格式的配置文件(如properties和YAML),并能根据环境加载不同配置,如数据库连接信息。通过`@Profile`注解可指定特定环境下的配置生效,同时支持通过命令行参数或环境变量覆盖配置值,确保应用稳定性和可靠性。
41 0
|
2月前
|
Devops 持续交付 开发者
.NET自动化之旅:是Azure DevOps还是GitHub Actions能够打造完美的CI/CD流水线?
【8月更文挑战第28天】在现代软件开发中,持续集成(CI)与持续部署(CD)是提升代码质量和加速交付的关键实践。对于 .NET 应用,Azure DevOps 和 GitHub Actions 等工具可高效构建 CI/CD 流水线,提升开发效率并确保软件稳定可靠。Azure DevOps 提供一站式全流程管理,支持 YAML 定义的自动化构建、测试和部署;GitHub Actions 则以简洁灵活著称,适用于 .NET 项目的自动化流程。选择合适的工具可显著提高开发效率并确保高质量标准。
15 0
|
5月前
|
存储 开发工具 git
|
前端开发 Java 程序员
仅一小时点赞破万!GitHub爆赞的Spring Boot最佳实践
基于现在大环境的影响(互联网经济萧条),疫情的影响,想找工作或者提升薪水都是很难的。提升技术成了每个想挣钱的程序员迫切的需求 关于Spring Boot的来历、特性等等就不在赘述了,相信看到这篇文章的小伙伴对于Spring Boot还是会有一个明确的认知的——极大的简化了Spring的配置(就这么简单) 那么这么简单的一个东西,我们为什么还要费时费力的去学习呢?
95 0
|
jenkins Java 应用服务中间件
SpringBoot+Jenkins+Github+Docker+Maven持续集成CI与持续部署CD全自动化部署
我们采用tomcat运行war包的这种方式,先来到官网下载war包:https://www.jenkins.io/download/ 然后把war包上传到tomcat的webapps里,自动就解压运行了,访问页面,然后查看并输入密码: cat /root/.jenkins/secrets/initialAdminPassword
235 0
|
Docker 容器
GitHub Actions CI/CD Pipeline with Docker
GitHub Actions CI/CD Pipeline with Docker
GitHub Actions CI/CD Pipeline with Docker
|
Serverless
如何通过Github Action使用Serverless Devs做CI/CD
当我们在体验Serverless之后,欲将项目真真实实的部署到Serverless架构时,CI/CD是我们很多人绕不开的话题,那么基于Serverless Devs这款工具,如何快速的和Github Action进行有机结合,实现CI/CD的能力呢?
246 0
|
存储 数据可视化 持续交付
Github continuous deployment (CD) 最佳实践
Github continuous deployment (CD) 最佳实践
135 0
Github continuous deployment (CD) 最佳实践
|
缓存 安全 测试技术
用 GitHub Action 构建一套 CI/CD 系统
在讲 Action 实践之前还需先讲下 Nebula Graph 的需求:首要目标比较明确就是自动化测试,分为单元测试和集成测试,顺带再解决一下 PM 小姐姐的发布需求,构建起来了第一版的 CI/CD 流程。
1318 0
|
弹性计算 前端开发 API
定制你私有的前端部署到ECS服务器(Github CI/CD)
还在手动拷贝文件到服务器;还在不停git pull;还在天天登录你的服务器去部署静态资源;太low了,试试Github CI/CD自动部署吧
2172 0
下一篇
无影云桌面