"Fossies" - the Fresh Open Source Software Archive

Member "cri-o-1.25.1/vendor/github.com/google/go-github/v42/github/actions_workflow_runs.go" (7 Oct 2022, 10123 Bytes) of package /linux/misc/cri-o-1.25.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Go source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 // Copyright 2020 The go-github AUTHORS. All rights reserved.
    2 //
    3 // Use of this source code is governed by a BSD-style
    4 // license that can be found in the LICENSE file.
    5 
    6 package github
    7 
    8 import (
    9     "context"
   10     "fmt"
   11     "net/http"
   12     "net/url"
   13 )
   14 
   15 // WorkflowRun represents a repository action workflow run.
   16 type WorkflowRun struct {
   17     ID                 *int64         `json:"id,omitempty"`
   18     Name               *string        `json:"name,omitempty"`
   19     NodeID             *string        `json:"node_id,omitempty"`
   20     HeadBranch         *string        `json:"head_branch,omitempty"`
   21     HeadSHA            *string        `json:"head_sha,omitempty"`
   22     RunNumber          *int           `json:"run_number,omitempty"`
   23     RunAttempt         *int           `json:"run_attempt,omitempty"`
   24     Event              *string        `json:"event,omitempty"`
   25     Status             *string        `json:"status,omitempty"`
   26     Conclusion         *string        `json:"conclusion,omitempty"`
   27     WorkflowID         *int64         `json:"workflow_id,omitempty"`
   28     CheckSuiteID       *int64         `json:"check_suite_id,omitempty"`
   29     CheckSuiteNodeID   *string        `json:"check_suite_node_id,omitempty"`
   30     URL                *string        `json:"url,omitempty"`
   31     HTMLURL            *string        `json:"html_url,omitempty"`
   32     PullRequests       []*PullRequest `json:"pull_requests,omitempty"`
   33     CreatedAt          *Timestamp     `json:"created_at,omitempty"`
   34     UpdatedAt          *Timestamp     `json:"updated_at,omitempty"`
   35     RunStartedAt       *Timestamp     `json:"run_started_at,omitempty"`
   36     JobsURL            *string        `json:"jobs_url,omitempty"`
   37     LogsURL            *string        `json:"logs_url,omitempty"`
   38     CheckSuiteURL      *string        `json:"check_suite_url,omitempty"`
   39     ArtifactsURL       *string        `json:"artifacts_url,omitempty"`
   40     CancelURL          *string        `json:"cancel_url,omitempty"`
   41     RerunURL           *string        `json:"rerun_url,omitempty"`
   42     PreviousAttemptURL *string        `json:"previous_attempt_url,omitempty"`
   43     HeadCommit         *HeadCommit    `json:"head_commit,omitempty"`
   44     WorkflowURL        *string        `json:"workflow_url,omitempty"`
   45     Repository         *Repository    `json:"repository,omitempty"`
   46     HeadRepository     *Repository    `json:"head_repository,omitempty"`
   47 }
   48 
   49 // WorkflowRuns represents a slice of repository action workflow run.
   50 type WorkflowRuns struct {
   51     TotalCount   *int           `json:"total_count,omitempty"`
   52     WorkflowRuns []*WorkflowRun `json:"workflow_runs,omitempty"`
   53 }
   54 
   55 // ListWorkflowRunsOptions specifies optional parameters to ListWorkflowRuns.
   56 type ListWorkflowRunsOptions struct {
   57     Actor   string `url:"actor,omitempty"`
   58     Branch  string `url:"branch,omitempty"`
   59     Event   string `url:"event,omitempty"`
   60     Status  string `url:"status,omitempty"`
   61     Created string `url:"created,omitempty"`
   62     ListOptions
   63 }
   64 
   65 // WorkflowRunUsage represents a usage of a specific workflow run.
   66 type WorkflowRunUsage struct {
   67     Billable      *WorkflowRunEnvironment `json:"billable,omitempty"`
   68     RunDurationMS *int64                  `json:"run_duration_ms,omitempty"`
   69 }
   70 
   71 // WorkflowRunEnvironment represents different runner environments available for a workflow run.
   72 type WorkflowRunEnvironment struct {
   73     Ubuntu  *WorkflowRunBill `json:"UBUNTU,omitempty"`
   74     MacOS   *WorkflowRunBill `json:"MACOS,omitempty"`
   75     Windows *WorkflowRunBill `json:"WINDOWS,omitempty"`
   76 }
   77 
   78 // WorkflowRunBill specifies billable time for a specific environment in a workflow run.
   79 type WorkflowRunBill struct {
   80     TotalMS *int64               `json:"total_ms,omitempty"`
   81     Jobs    *int                 `json:"jobs,omitempty"`
   82     JobRuns []*WorkflowRunJobRun `json:"job_runs,omitempty"`
   83 }
   84 
   85 // WorkflowRunJobRun represents a usage of individual jobs of a specific workflow run.
   86 type WorkflowRunJobRun struct {
   87     JobID      *int   `json:"job_id,omitempty"`
   88     DurationMS *int64 `json:"duration_ms,omitempty"`
   89 }
   90 
   91 func (s *ActionsService) listWorkflowRuns(ctx context.Context, endpoint string, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) {
   92     u, err := addOptions(endpoint, opts)
   93     if err != nil {
   94         return nil, nil, err
   95     }
   96 
   97     req, err := s.client.NewRequest("GET", u, nil)
   98     if err != nil {
   99         return nil, nil, err
  100     }
  101 
  102     runs := new(WorkflowRuns)
  103     resp, err := s.client.Do(ctx, req, &runs)
  104     if err != nil {
  105         return nil, resp, err
  106     }
  107 
  108     return runs, resp, nil
  109 }
  110 
  111 // ListWorkflowRunsByID lists all workflow runs by workflow ID.
  112 //
  113 // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-workflow-runs
  114 func (s *ActionsService) ListWorkflowRunsByID(ctx context.Context, owner, repo string, workflowID int64, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) {
  115     u := fmt.Sprintf("repos/%s/%s/actions/workflows/%v/runs", owner, repo, workflowID)
  116     return s.listWorkflowRuns(ctx, u, opts)
  117 }
  118 
  119 // ListWorkflowRunsByFileName lists all workflow runs by workflow file name.
  120 //
  121 // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-workflow-runs
  122 func (s *ActionsService) ListWorkflowRunsByFileName(ctx context.Context, owner, repo, workflowFileName string, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) {
  123     u := fmt.Sprintf("repos/%s/%s/actions/workflows/%v/runs", owner, repo, workflowFileName)
  124     return s.listWorkflowRuns(ctx, u, opts)
  125 }
  126 
  127 // ListRepositoryWorkflowRuns lists all workflow runs for a repository.
  128 //
  129 // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#list-workflow-runs-for-a-repository
  130 func (s *ActionsService) ListRepositoryWorkflowRuns(ctx context.Context, owner, repo string, opts *ListWorkflowRunsOptions) (*WorkflowRuns, *Response, error) {
  131     u := fmt.Sprintf("repos/%s/%s/actions/runs", owner, repo)
  132     u, err := addOptions(u, opts)
  133     if err != nil {
  134         return nil, nil, err
  135     }
  136 
  137     req, err := s.client.NewRequest("GET", u, nil)
  138     if err != nil {
  139         return nil, nil, err
  140     }
  141 
  142     runs := new(WorkflowRuns)
  143     resp, err := s.client.Do(ctx, req, &runs)
  144     if err != nil {
  145         return nil, resp, err
  146     }
  147 
  148     return runs, resp, nil
  149 }
  150 
  151 // GetWorkflowRunByID gets a specific workflow run by ID.
  152 //
  153 // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-a-workflow-run
  154 func (s *ActionsService) GetWorkflowRunByID(ctx context.Context, owner, repo string, runID int64) (*WorkflowRun, *Response, error) {
  155     u := fmt.Sprintf("repos/%v/%v/actions/runs/%v", owner, repo, runID)
  156 
  157     req, err := s.client.NewRequest("GET", u, nil)
  158     if err != nil {
  159         return nil, nil, err
  160     }
  161 
  162     run := new(WorkflowRun)
  163     resp, err := s.client.Do(ctx, req, run)
  164     if err != nil {
  165         return nil, resp, err
  166     }
  167 
  168     return run, resp, nil
  169 }
  170 
  171 // RerunWorkflowByID re-runs a workflow by ID.
  172 //
  173 // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#re-run-a-workflow
  174 func (s *ActionsService) RerunWorkflowByID(ctx context.Context, owner, repo string, runID int64) (*Response, error) {
  175     u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/rerun", owner, repo, runID)
  176 
  177     req, err := s.client.NewRequest("POST", u, nil)
  178     if err != nil {
  179         return nil, err
  180     }
  181 
  182     return s.client.Do(ctx, req, nil)
  183 }
  184 
  185 // CancelWorkflowRunByID cancels a workflow run by ID.
  186 //
  187 // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#cancel-a-workflow-run
  188 func (s *ActionsService) CancelWorkflowRunByID(ctx context.Context, owner, repo string, runID int64) (*Response, error) {
  189     u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/cancel", owner, repo, runID)
  190 
  191     req, err := s.client.NewRequest("POST", u, nil)
  192     if err != nil {
  193         return nil, err
  194     }
  195 
  196     return s.client.Do(ctx, req, nil)
  197 }
  198 
  199 // GetWorkflowRunLogs gets a redirect URL to download a plain text file of logs for a workflow run.
  200 //
  201 // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#download-workflow-run-logs
  202 func (s *ActionsService) GetWorkflowRunLogs(ctx context.Context, owner, repo string, runID int64, followRedirects bool) (*url.URL, *Response, error) {
  203     u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/logs", owner, repo, runID)
  204 
  205     resp, err := s.getWorkflowLogsFromURL(ctx, u, followRedirects)
  206     if err != nil {
  207         return nil, nil, err
  208     }
  209 
  210     if resp.StatusCode != http.StatusFound {
  211         return nil, newResponse(resp), fmt.Errorf("unexpected status code: %s", resp.Status)
  212     }
  213     parsedURL, err := url.Parse(resp.Header.Get("Location"))
  214     return parsedURL, newResponse(resp), err
  215 }
  216 
  217 // DeleteWorkflowRun deletes a workflow run by ID.
  218 //
  219 // GitHub API docs: https://docs.github.com/en/rest/reference/actions#delete-a-workflow-run
  220 func (s *ActionsService) DeleteWorkflowRun(ctx context.Context, owner, repo string, runID int64) (*Response, error) {
  221     u := fmt.Sprintf("repos/%v/%v/actions/runs/%v", owner, repo, runID)
  222 
  223     req, err := s.client.NewRequest("DELETE", u, nil)
  224     if err != nil {
  225         return nil, err
  226     }
  227 
  228     return s.client.Do(ctx, req, nil)
  229 }
  230 
  231 // DeleteWorkflowRunLogs deletes all logs for a workflow run.
  232 //
  233 // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#delete-workflow-run-logs
  234 func (s *ActionsService) DeleteWorkflowRunLogs(ctx context.Context, owner, repo string, runID int64) (*Response, error) {
  235     u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/logs", owner, repo, runID)
  236 
  237     req, err := s.client.NewRequest("DELETE", u, nil)
  238     if err != nil {
  239         return nil, err
  240     }
  241 
  242     return s.client.Do(ctx, req, nil)
  243 }
  244 
  245 // GetWorkflowRunUsageByID gets a specific workflow usage run by run ID in the unit of billable milliseconds.
  246 //
  247 // GitHub API docs: https://docs.github.com/en/free-pro-team@latest/rest/reference/actions/#get-workflow-run-usage
  248 func (s *ActionsService) GetWorkflowRunUsageByID(ctx context.Context, owner, repo string, runID int64) (*WorkflowRunUsage, *Response, error) {
  249     u := fmt.Sprintf("repos/%v/%v/actions/runs/%v/timing", owner, repo, runID)
  250 
  251     req, err := s.client.NewRequest("GET", u, nil)
  252     if err != nil {
  253         return nil, nil, err
  254     }
  255 
  256     workflowRunUsage := new(WorkflowRunUsage)
  257     resp, err := s.client.Do(ctx, req, workflowRunUsage)
  258     if err != nil {
  259         return nil, resp, err
  260     }
  261 
  262     return workflowRunUsage, resp, nil
  263 }