Logo
Section 1 / 2

部署

学习并实践 GitHub API 中部署功能的使用。

导入

部署

学习并实践 GitHub API 中部署功能的使用。

概述

部署 是将资源从一个开发环境部署到另一个环境以使其生效的请求。这些请求可以针对任意分支、标签或提交 ID。部署通过在不同部署之间建立松散耦合的关系,减少了对各种应用类型实现细节的担忧。

...

外部服务(如 GitLab、Redmine 等)可以为部署标记不同的状态。以下是支持的状态类型:

  • `error`
  • `failure`
  • `pending`
  • `in_progress`
  • `queued`
  • `success`

可选地,我们可以为部署状态添加 description 和 log_url 以增强清晰度。部署及其状态由 GitHub 发送到第三方系统,第三方根据进度更新其状态,当接收到通知后,部署将被推送到我们的服务器。

创建部署

在合并或拉取分支之前,推荐先进行部署并验证。部署可以在以下三种环境中执行:

  1. production
  2. staging
  3. qa

默认环境为 production。

下表列出了创建部署时的重要请求参数:

请求参数

参数类型描述
ref字符串需要部署的引用,可以是 SHA、分支名或标签名。
task字符串需要执行的任务,可以是 deploy 或 deploy:migrations。
auto_merge布尔值如果请求的引用落后于默认分支,则自动合并到默认分支。
required_contexts字符串数组用于验证提交状态检查的上下文。传入空数组可跳过检查。
payload对象或字符串以 JSON 格式包含关于部署的额外信息。
environment字符串部署的目标环境,可以是 production、staging 或 qa。
description字符串或 Null部署的描述信息。
transient_environment布尔值如果该部署未来不再使用,则设为 true。
production_environment布尔值当环境为生产环境时设为 true。
1const endpointUrl = 'https://api.github.com/repos/{{USERNAME}}/{{REPOSITORY}}/deployments'; 2 3const headers = { 4 Authorization: 'token {{ACCESS_TOKEN}}', 5 Accept: 'application/vnd.github.v3+json', 6}; 7 8const body = JSON.stringify({ 9 ref: '<ref>', 10}); 11 12const options = { 13 method: 'POST', 14 headers, 15 body, 16}; 17 18async function CreateDeployment() { 19 try { 20 const response = await fetch(endpointUrl, options); 21 printResponse(response); 22 } catch (error) { 23 printErrors(error); 24 } 25}; 26 27CreateDeployment();

上述代码成功执行后,将返回响应码 201。

简要说明上述代码:

  • 第 1 行: 定义了 API 端点的 URL。
  • 第 8–10 行: 定义了请求体中必需的参数。
  • 第 18–25 行: 定义了一个异步函数来调用指定的端点。
    • 第 21 行: 请求成功时,通过调用 printResponse 函数输出 API 响应。
    • 第 23 行: 请求失败时,通过调用 printErrors 函数输出错误信息。
  • 第 27 行: 调用异步函数。

请求参数

参数类型描述
owner字符串仓库所有者的用户名
repo字符串仓库名称
deployment_id整数用于从仓库中获取特定部署记录的 ID
1const endpointUrl = 'https://api.github.com/repos/{{USERNAME}}/{{REPOSITORY}}/deployments/{{DEPLOYMENT_ID}}'; 2 3const headers = { 4 Authorization: 'token {{ACCESS_TOKEN}}', 5 Accept: 'application/vnd.github.v3+json', 6}; 7 8const options = { 9 method: 'GET', 10 headers, 11}; 12 13async function GetDeployment() { 14 try { 15 const response = await fetch(endpointUrl, options); 16 printResponse(response); 17 } catch (error) { 18 printErrors(error); 19 } 20}; 21 22GetDeployment();

上述代码成功执行后,将返回响应码 200。

简要说明上述代码:

  • 第 1 行: 定义了端点的 URL。
  • 第 13–20 行: 定义了一个异步函数来调用指定的端点。
    • 第 16 行: 请求成功时,通过调用 printResponse 函数输出响应。
    • 第 18 行: 请求失败时,通过调用 printErrors 函数输出错误。
  • 第 22 行: 调用异步函数。

列出部署

尝试列出仓库中的所有部署,并确认我们创建的部署是否存在于其中。

请求参数

参数类型描述
owner字符串仓库所有者的用户名
repo字符串仓库名称
1const endpointUrl = 'https://api.github.com/repos/{{USERNAME}}/{{REPOSITORY}}/deployments'; 2 3const headers = { 4 Authorization: 'token {{ACCESS_TOKEN}}', 5 Accept: 'application/vnd.github.v3+json', 6}; 7 8const options = { 9 method: 'GET', 10 headers, 11}; 12 13async function ListDeployments() { 14 try { 15 const response = await fetch(endpointUrl, options); 16 printResponse(response); 17 } catch (error) { 18 printErrors(error); 19 } 20}; 21 22ListDeployments();

上述代码成功执行后,将返回响应码 200。

简要说明上述代码:

  • 第 1 行: 定义了端点的 URL。
  • 第 13–20 行: 定义了一个异步函数来调用指定的端点。
    • 第 16 行: 请求成功时,通过调用 printResponse 函数输出响应。
    • 第 18 行: 请求失败时,通过调用 printErrors 函数输出错误。
  • 第 22 行: 调用异步函数。

删除部署

调用删除部署端点时,系统会检查仓库中是否存在一个或多个部署。如果只有一个部署,则直接删除;如果有多个部署,则只能删除非活动状态的部署。

请求参数

参数类型描述
owner字符串仓库所有者的用户名
repo字符串仓库名称
deployment_id整数用于从仓库中获取特定部署记录的 ID

以下代码实现了该功能:

1const endpointUrl = 'https://api.github.com/repos/{{USERNAME}}/{{REPOSITORY}}/deployments/{{DEPLOYMENT_ID}}'; 2 3const headers = { 4 Authorization: 'token {{ACCESS_TOKEN}}', 5 Accept: 'application/vnd.github.v3+json', 6}; 7 8const options = { 9 method: 'DELETE', 10 headers, 11}; 12 13async function DeletetDeployment() { 14 try { 15 const response = await fetch(endpointUrl, options); 16 printResponse(response); 17 } catch (error) { 18 printErrors(error); 19 } 20}; 21 22DeletetDeployment();

上述代码成功执行后,将返回响应码 204。

简要说明上述代码:

  • 第 1 行: 定义了端点的 URL。
  • 第 13–20 行: 定义了一个异步函数来调用指定的端点。
    • 第 16 行: 请求成功时,通过调用 printResponse 函数输出响应。
    • 第 18 行: 请求失败时,通过调用 printErrors 函数输出错误。
  • 第 22 行: 调用异步函数。

协作

发布