Skip to content

Latest commit

History

History
570 lines (349 loc) · 10 KB

File metadata and controls

570 lines (349 loc) · 10 KB

Table of Contents

github

Module to interface with GitHub API

GitHubRequests Objects

classGitHubRequests()

Parent class to execute GitHub API requests

__init__

def__init__(token: str, endpoint: str, debug: bool=False)

Contructor

Arguments:

  • token: GitHub token (gotten from the user Settings page)
  • endpoint: Resource endpoint
  • debug: Debug mode

download

defdownload(url: str, output_file: str)

Download object from GitHub

Arguments:

  • url: URL
  • output_file: local file name

add_variable

defadd_variable(name: str, value: str)

Add variable

Arguments:

  • name: variable name to add
  • value: variable value

delete_variable

defdelete_variable(name: str)

Delete variable

Arguments:

  • name: variable to delete

list_variables

deflist_variables() ->dict

List variables

Returns:

variable dict

list_secrets

deflist_secrets() ->dict

List secrets

Returns:

secret dict

delete_runner

defdelete_runner(runner_id: int)

Delete runner

Arguments:

  • runner_id: runner to delete

list_runners

deflist_runners() ->dict

List runners

Returns:

runner dict

get_issues

defget_issues() ->dict

List issues

Returns:

issues dict

GitHubOrganization Objects

classGitHubOrganization(GitHubRequests)

Class to manage Organizations via GitHub API

__init__

def__init__(token: str, organization: str, debug: bool=False)

Contructor

Arguments:

  • token: GitHub token (needs the admin:org rights)
  • organization: Organization name
  • debug: Debug mode

list_repositories

deflist_repositories() ->dict

List organization repositories (generator to handle pagination)

Returns:

repository infos

get_pull_requests

defget_pull_requests(state: str, author: str=None) ->dict

Get pull requests at organization level

Arguments:

  • state: Status (open, closed)
  • author: Author (GitHub login)

Returns:

GitHub API JSON Response

find

deffind(pattern: str, path: str=None) ->dict

Get pull requests at organization level

Arguments:

  • state: Status (open, closed)
  • author: Author (GitHub login)

Returns:

GitHub API JSON Response

GitHubRepository Objects

classGitHubRepository(GitHubRequests)

Class to manage Repositories via GitHub API

__init__

def__init__(token: str, repository: str, debug: bool=False)

Contructor

Arguments:

  • token: GitHub token (needs the repo rights)
  • repository: repository name
  • debug: Debug mode

clone

defclone(destination: str=None, ref: str=None)

Clone a remote repository locally

Arguments:

  • destination: local destination directory
  • ref: remote branch or tag to clone

list_runs

deflist_runs(**kwargs) ->dict

List repository action runs (generator to handle pagination)

Returns:

run infos

get_run

defget_run(run_id: int) ->dict

Get a specific repository action run

Arguments:

  • run_id: Run ID

Returns:

run info (JSON format)

cancel_run

defcancel_run(run_id: int)

Cancel a specific run

Arguments:

  • run_id: ID of the run to cancel

list_commits

deflist_commits() ->dict

List repository commits (generator to handle pagination)

Returns:

commit infos

get_deploy_keys

defget_deploy_keys() ->dict

Get the deploy keys in a repository

Returns:

Keys (JSON format)

add_deploy_key

defadd_deploy_key(title: str,
content: str,
write_access: bool=False) ->dict

Add a new deploy key in a repository

Arguments:

  • title: Title
  • content: Key content
  • write_access: Allow write access

Returns:

Response (JSON format)

add_secret

defadd_secret(name: str, value: str) ->dict

Add Secret

Arguments:

  • name: variable name to add
  • value: secret value

Returns:

Secret in JSON format

get_commit

defget_commit(branch: str) ->dict

Get the latest commit of a specific branch

Arguments:

  • branch: branch name

Returns:

commit info (JSON format)

get_pull_request

defget_pull_request(number: int) ->dict

Get a specific pull request info

Arguments:

  • branch: pull request number

Returns:

pull request info (JSON format)

pull_request_approved

defpull_request_approved(number: int) ->bool

Get a list of pull requests reviewers

Arguments:

  • branch: pull request number

Returns:

pull request reviewers (JSON format)

browse

defbrowse(path: str) ->dict

Browse the repository file structure on the default branch

Arguments:

  • path: Path to browse

Returns:

JSON file structure

list_artifacts

deflist_artifacts(run_id: int) ->str

List of the artifacts generated by a specific run

Arguments:

  • run_id: Run ID

Returns:

JSON artifact details

execute_workflow

defexecute_workflow(workflow: str,
payload: dict,
head_sha: str=None) ->int

Execute a workflow dispatch run and return the run ID

Arguments:

  • workflow: Remote workflow file name
  • payload: Parameters to send to the workflow
  • head_sha: current HEAD SHA of the branch where the workflow is executed

Returns:

Run ID

export_variables

defexport_variables(url: str, workflow: str, output: str, prefix: str=None)

Extract variables from artifacts and fill a file with the variables

Arguments:

  • url: Remote artifact URL
  • workflow: variable name workflow
  • output: Local file name where the variables are exported
  • prefix: exported variable prefix

create_pull_request

defcreate_pull_request(branch: str,
commit_message: str,
files: dict,
target_branch: str=None) ->str

Create a pull request

Arguments:

  • branch: Source branch
  • commit_message: Commit message
  • files: Dict of {path: content}
  • target_branch: Destination branch (default: default branch)

Returns:

Pull Request URL