Class ActionsClient

java.lang.Object
ink.icoding.github4j.GithubClient
ink.icoding.github4j.client.ActionsClient

public class ActionsClient extends GithubClient
GitHub Actions 相关 API 客户端。

提供工作流(Workflow)、工作流运行(Workflow Run)、作业(Job)、 构建产物(Artifact)、密钥(Secret)、变量(Variable)及自托管运行器(Runner)的管理功能。

See Also:
  • Constructor Details

  • Method Details

    • listWorkflows

      public Page<Workflow> listWorkflows(String owner, String repo, PageOptions options)
      列出仓库中的所有工作流。

      API 端点: GET /repos/{owner}/{repo}/actions/workflows

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      options - 分页查询选项(可为 null),支持 per_page、page 参数
      Returns:
      工作流分页列表
    • getWorkflow

      public GithubResponse<Workflow> getWorkflow(String owner, String repo, long workflowId)
      根据工作流 ID 获取工作流详情。

      API 端点: GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      workflowId - 工作流 ID
      Returns:
      工作流详细信息
    • getWorkflowByFileName

      public GithubResponse<Workflow> getWorkflowByFileName(String owner, String repo, String fileName)
      根据文件名获取工作流详情。

      API 端点: GET /repos/{owner}/{repo}/actions/workflows/{workflow_file_name}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      fileName - 工作流文件名(如 main.yml
      Returns:
      工作流详细信息
    • disableWorkflow

      public void disableWorkflow(String owner, String repo, long workflowId)
      禁用指定工作流。

      API 端点: PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      workflowId - 工作流 ID
    • enableWorkflow

      public void enableWorkflow(String owner, String repo, long workflowId)
      启用指定工作流。

      API 端点: PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      workflowId - 工作流 ID
    • dispatchWorkflow

      public void dispatchWorkflow(String owner, String repo, long workflowId, CreateWorkflowDispatchRequest request)
      手动触发工作流分派(dispatch)。

      API 端点: POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      workflowId - 工作流 ID
      request - 分派请求体,包含 ref 和可选的 inputs
    • listWorkflowRuns

      public Page<WorkflowRun> listWorkflowRuns(String owner, String repo, ListWorkflowRunsOptions options)
      列出仓库中的所有工作流运行记录。

      API 端点: GET /repos/{owner}/{repo}/actions/runs

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      options - 查询选项(可为 null),支持 actor、branch、event、status、created、exclude_pull_requests 及分页参数
      Returns:
      工作流运行分页列表
    • listWorkflowRunsForWorkflow

      public Page<WorkflowRun> listWorkflowRunsForWorkflow(String owner, String repo, long workflowId, ListWorkflowRunsOptions options)
      列出指定工作流的运行记录。

      API 端点: GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      workflowId - 工作流 ID
      options - 查询选项(可为 null),支持 actor、branch、event、status、created、exclude_pull_requests 及分页参数
      Returns:
      工作流运行分页列表
    • getWorkflowRun

      public GithubResponse<WorkflowRun> getWorkflowRun(String owner, String repo, long runId)
      获取指定工作流运行的详情。

      API 端点: GET /repos/{owner}/{repo}/actions/runs/{run_id}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      runId - 运行 ID
      Returns:
      工作流运行详细信息
    • deleteWorkflowRun

      public void deleteWorkflowRun(String owner, String repo, long runId)
      删除指定的工作流运行记录。

      API 端点: DELETE /repos/{owner}/{repo}/actions/runs/{run_id}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      runId - 运行 ID
    • rerunWorkflow

      public GithubResponse<WorkflowRun> rerunWorkflow(String owner, String repo, long runId)
      重新运行指定的工作流。

      API 端点: POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      runId - 运行 ID
      Returns:
      重新运行的工作流运行信息
    • cancelWorkflowRun

      public void cancelWorkflowRun(String owner, String repo, long runId)
      取消正在运行的工作流。

      API 端点: POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      runId - 运行 ID
    • downloadWorkflowRunLogs

      public byte[] downloadWorkflowRunLogs(String owner, String repo, long runId)
      下载指定工作流运行的日志。

      API 端点: GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      runId - 运行 ID
      Returns:
      日志内容的字节数组
    • deleteWorkflowRunLogs

      public void deleteWorkflowRunLogs(String owner, String repo, long runId)
      删除指定工作流运行的日志。

      API 端点: DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      runId - 运行 ID
    • listJobsForWorkflowRun

      public Page<WorkflowJob> listJobsForWorkflowRun(String owner, String repo, long runId, ListWorkflowJobsOptions options)
      列出指定工作流运行中的所有作业。

      API 端点: GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      runId - 运行 ID
      options - 查询选项(可为 null),支持 filter("latest"、"all")及分页参数
      Returns:
      作业分页列表
    • getJob

      public GithubResponse<WorkflowJob> getJob(String owner, String repo, long jobId)
      获取指定作业的详情。

      API 端点: GET /repos/{owner}/{repo}/actions/jobs/{job_id}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      jobId - 作业 ID
      Returns:
      作业详细信息
    • downloadJobLogs

      public byte[] downloadJobLogs(String owner, String repo, long jobId)
      下载指定作业的日志。

      API 端点: GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      jobId - 作业 ID
      Returns:
      日志内容的字节数组
    • listWorkflowRunArtifacts

      public Page<Artifact> listWorkflowRunArtifacts(String owner, String repo, long runId, PageOptions options)
      列出指定工作流运行的构建产物。

      API 端点: GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      runId - 运行 ID
      options - 分页查询选项(可为 null),支持 per_page、page 参数
      Returns:
      构建产物分页列表
    • listArtifacts

      public Page<Artifact> listArtifacts(String owner, String repo, ListArtifactsOptions options)
      列出仓库中的所有构建产物。

      API 端点: GET /repos/{owner}/{repo}/actions/artifacts

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      options - 查询选项(可为 null),支持 name 筛选及分页参数
      Returns:
      构建产物分页列表
    • getArtifact

      public GithubResponse<Artifact> getArtifact(String owner, String repo, long artifactId)
      获取指定构建产物的详情。

      API 端点: GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      artifactId - 构建产物 ID
      Returns:
      构建产物详细信息
    • downloadArtifact

      public byte[] downloadArtifact(String owner, String repo, long artifactId)
      下载指定构建产物的 ZIP 文件。

      API 端点: GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/zip

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      artifactId - 构建产物 ID
      Returns:
      ZIP 文件内容的字节数组
    • deleteArtifact

      public void deleteArtifact(String owner, String repo, long artifactId)
      删除指定的构建产物。

      API 端点: DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      artifactId - 构建产物 ID
    • listRepoSecrets

      public Page<Secret> listRepoSecrets(String owner, String repo, PageOptions options)
      列出仓库中的所有 Actions 密钥。

      API 端点: GET /repos/{owner}/{repo}/actions/secrets

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      options - 分页查询选项(可为 null),支持 per_page、page 参数
      Returns:
      密钥分页列表
    • getRepoPublicKey

      public GithubResponse<Map<String,Object>> getRepoPublicKey(String owner, String repo)
      获取仓库的 Actions 公钥,用于加密密钥值。

      API 端点: GET /repos/{owner}/{repo}/actions/secrets/public-key

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      Returns:
      包含 key_id 和 key 的公钥信息
    • getRepoSecret

      public GithubResponse<Secret> getRepoSecret(String owner, String repo, String secretName)
      获取指定密钥的详情。

      API 端点: GET /repos/{owner}/{repo}/actions/secrets/{secret_name}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      secretName - 密钥名称
      Returns:
      密钥详细信息
    • setRepoSecret

      public void setRepoSecret(String owner, String repo, String secretName, Map<String,String> body)
      创建或更新仓库密钥。

      API 端点: PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      secretName - 密钥名称
      body - 请求体,包含 encrypted_value 和 key_id
    • deleteRepoSecret

      public void deleteRepoSecret(String owner, String repo, String secretName)
      删除仓库中的指定密钥。

      API 端点: DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      secretName - 密钥名称
    • listRepoVariables

      public Page<Variable> listRepoVariables(String owner, String repo, PageOptions options)
      列出仓库中的所有 Actions 变量。

      API 端点: GET /repos/{owner}/{repo}/actions/variables

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      options - 分页查询选项(可为 null),支持 per_page、page 参数
      Returns:
      变量分页列表
    • getRepoVariable

      public GithubResponse<Variable> getRepoVariable(String owner, String repo, String name)
      获取仓库中指定变量的详情。

      API 端点: GET /repos/{owner}/{repo}/actions/variables/{name}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      name - 变量名称
      Returns:
      变量详细信息
    • createRepoVariable

      public GithubResponse<Variable> createRepoVariable(String owner, String repo, Map<String,String> body)
      创建仓库 Actions 变量。

      API 端点: POST /repos/{owner}/{repo}/actions/variables

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      body - 请求体,包含 name 和 value
      Returns:
      创建成功后的变量信息
    • updateRepoVariable

      public GithubResponse<Variable> updateRepoVariable(String owner, String repo, String name, Map<String,String> body)
      更新仓库中指定的 Actions 变量。

      API 端点: PATCH /repos/{owner}/{repo}/actions/variables/{name}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      name - 变量名称
      body - 请求体,包含新的 value
      Returns:
      更新后的变量信息
    • deleteRepoVariable

      public void deleteRepoVariable(String owner, String repo, String name)
      删除仓库中指定的 Actions 变量。

      API 端点: DELETE /repos/{owner}/{repo}/actions/variables/{name}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      name - 变量名称
    • listSelfHostedRunnersForRepo

      public Page<Runner> listSelfHostedRunnersForRepo(String owner, String repo, PageOptions options)
      列出仓库中的自托管运行器。

      API 端点: GET /repos/{owner}/{repo}/actions/runners

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      options - 分页查询选项(可为 null),支持 per_page、page 参数
      Returns:
      运行器分页列表
    • getSelfHostedRunner

      public GithubResponse<Runner> getSelfHostedRunner(String owner, String repo, long runnerId)
      获取仓库中指定自托管运行器的详情。

      API 端点: GET /repos/{owner}/{repo}/actions/runners/{runner_id}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      runnerId - 运行器 ID
      Returns:
      运行器详细信息
    • deleteSelfHostedRunner

      public void deleteSelfHostedRunner(String owner, String repo, long runnerId)
      删除仓库中的指定自托管运行器。

      API 端点: DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}

      Parameters:
      owner - 仓库所有者的用户名
      repo - 仓库名称
      runnerId - 运行器 ID