Package: github-action-utils
GitHub Action UtilsThis package is a collection of python functions that can be used to runGitHub Action Workflow Commandsfrom a python script inside an action workflow run.RequirementsPython:3.6, 3.7, 3.8, 3.9, 3.10, 3.11InstallationInstallgithub-action-utilsusing pip:pip install github-action-utilsExampleExample Codeimportgithub_action_utilsasgha_utilswithgha_utils.group("My Group"):gha_utils.set_output("test_var","test_value")gha_utils.save_state("state","val")gha_utils.debug("Debug message")gha_utils.warning("Warning message",title="Warning Title",file="example.py",col=1,end_column=2,line=5,end_line=6,)gha_utils.warning("Another warning message")gha_utils.error("Error message",title="Error Title",file="example.py",col=1,end_column=2,line=1,end_line=2,)gha_utils.notice("Another notice message")gha_utils.append_job_summary("# Hello World")gha_utils.append_job_summary("- Point 1")gha_utils.append_job_summary("- Point 2")Can be used inside a Workflowname:run-python-scripton:pull_request:branches:["main"]jobs:build:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v3-name:Set up Python 3.10uses:actions/setup-python@v3with:python-version:"3.10"-name:Install dependenciesrun:python -m pip install github-action-utils-name:Run Python Scriptshell:pythonrun:|import github_action_utils as gha_utilswith gha_utils.group("My Group"):gha_utils.error("Error message", title="Error Title", file="example.py",col=1, end_column=2, line=1, end_line=2,)gha_utils.notice("Another notice message")gha_utils.append_job_summary("# Hello World")Colorful Grouped Build Log OutputLog Annotations and Build SummeryLog Annotations Associated with a FileAvailable FunctionsThis section documents all the functions provided bygithub-action-utils. The functions in the package should be used inside a workflow run.Note:You can run the commands using python'ssubprocessmodule by usinguse_subprocessfunction parameter orCOMMANDS_USE_SUBPROCESSenvironment variable.echo(message, use_subprocess=False)Prints specified message to the action workflow console.example:>>fromgithub_action_utilsimportecho>>echo("Hello World")# Output:# Hello Worlddebug(message, use_subprocess=False)Prints colorful debug message to the action workflow console.
GitHub Actions Docs:debugexample:>>fromgithub_action_utilsimportdebug>>debug("Hello World")# Output:# ::debug ::Hello Worldnotice(message, title=None, file=None, col=None, end_column=None, line=None, end_line=None, use_subprocess=False)Prints colorful notice message to the action workflow console.
GitHub Actions Docs:noticeexample:>>fromgithub_action_utilsimportnotice>>notice("test message",title="test title",file="abc.py",col=1,end_column=2,line=4,end_line=5,)# Output:# ::notice title=test title,file=abc.py,col=1,endColumn=2,line=4,endLine=5::test message=warning(message, title=None, file=None, col=None, end_column=None, line=None, end_line=None, use_subprocess=False)Prints colorful warning message to the action workflow console.
GitHub Actions Docs:warningexample:>>fromgithub_action_utilsimportwarning>>warning("test message",title="test title",file="abc.py",col=1,end_column=2,line=4,end_line=5,)# Output:# ::warning title=test title,file=abc.py,col=1,endColumn=2,line=4,endLine=5::test messageerror(message, title=None, file=None, col=None, end_column=None, line=None, end_line=None, use_subprocess=False)Prints colorful error message to the action workflow console.
GitHub Actions Docs:errorexample:>>fromgithub_action_utilsimporterror>>error("test message",title="test title",file="abc.py",col=1,end_column=2,line=4,end_line=5,)# Output:# ::error title=test title,file=abc.py,col=1,endColumn=2,line=4,endLine=5::test messageset_output(name, value)Sets a step's output parameter by writing toGITHUB_OUTPUTenvironment file. Note that the step will need anidto be defined to later retrieve the output value.
GitHub Actions Docs:set_outputexample:>>fromgithub_action_utilsimportset_output>>set_output("my_output","test value")save_state(name, value)Creates an environment variable by writing this to theGITHUB_STATEenvironment file which is available to workflow's pre: or post: actions.
GitHub Actions Docs:save_stateexample:>>fromgithub_action_utilsimportsave_state>>save_state("my_state","test value")get_state(name)Gets state environment variable from running workflow.example:>>fromgithub_action_utilsimportget_state>>get_state("test_name")# Output:# test_valueget_user_input(name)Gets user input from running workflow.example:>>fromgithub_action_utilsimportget_user_input>>get_user_input("my_input")# Output:# my valuebegin_stop_commands(token=None, use_subprocess=False)andend_stop_commands(token, use_subprocess=False)Stops processing any workflow commands. This special command allows you to log anything without accidentally running a workflow command.
GitHub Actions Docs:stop_commandsexample:>>fromgithub_action_utilsimportecho,begin_stop_commands,end_stop_commands,stop_commands>>begin_stop_commands(token="my_token")>>echo("Hello World")>>end_stop_commands("my_token")# Output:# ::stop-commands ::my_token# Hello World# ::my_token::# ====================# Using Stop Commands Context Manager# ====================>>withstop_commands(token="my_token"):...echo("Hello World")# Output:# ::stop-commands ::my_token# Hello World# ::my_token::start_group(title, use_subprocess=False)andend_group(use_subprocess=False)Creates an expandable group in the workflow log.
GitHub Actions Docs:groupexample:>>fromgithub_action_utilsimportecho,start_group,end_group,group>>start_group("My Group Title")>>echo("Hello World")>>end_group()# Output:# ::group ::My Group Title# Hello World# ::endgroup::# ====================# Using Group Context Manager# ====================>>withgroup("My Group Title"):...echo("Hello World")# Output:# ::group ::My Group Title# Hello World# ::endgroup::add_mask(value, use_subprocess=False)Masking a value prevents a string or variable from being printed in the workflow console.
GitHub Actions Docs:add_maskexample:>>fromgithub_action_utilsimportadd_mask>>add_mask("test value")# Output:# ::add-mask ::test valueset_env(name, value)Creates an environment variable by writing this to theGITHUB_ENVenvironment file which is available to any subsequent steps in a workflow job.
GitHub Actions Docs:set_envexample:>>fromgithub_action_utilsimportset_env>>set_env("my_env","test value")get_workflow_environment_variables()Gets all environment variables from theGITHUB_ENVenvironment file which is available to the workflow.
GitHub Actions Docs:set_envexample:>>fromgithub_action_utilsimportget_workflow_environment_variables>>get_workflow_environment_variables()# Output:# {"my_env": "test value"}get_env(name)Gets all environment variables fromos.environor theGITHUB_ENVenvironment file which is available to the workflow.
This can also be used to getenvironment variables set by GitHub Actions.
GitHub Actions Docs:set_envexample:>>fromgithub_action_utilsimportget_env>>get_env("my_env")>>get_env("GITHUB_API_URL")# Output:# test value# https://api.github.comappend_job_summary(markdown_text)Sets some custom Markdown for each job so that it will be displayed on the summary page of a workflow run.
GitHub Actions Docs:append_job_summaryexample:>>fromgithub_action_utilsimportappend_job_summary>>append_job_summary("# test summary")overwrite_job_summary(markdown_text)Clears all content for the current step, and adds new job summary.
GitHub Actions Docs:overwrite_job_summaryexample:>>fromgithub_action_utilsimportoverwrite_job_summary>>overwrite_job_summary("# test summary")remove_job_summary()completely removes job summary for the current step.
GitHub Actions Docs:remove_job_summaryexample:>>fromgithub_action_utilsimportremove_job_summary>>remove_job_summary()add_system_path(path)Prepends a directory to the system PATH variable (GITHUB_PATH) and automatically makes it available to all subsequent actions in the current job.
GitHub Actions Docs:add_system_pathexample:>>fromgithub_action_utilsimportadd_system_path>>add_system_path("var/path/to/file")event_payload()Get GitHub Event payload that triggered the workflow.More details:GitHub Actions Event Payloadexample:>>fromgithub_action_utilsimportevent_payload>>event_payload()# Output:# {"action": "opened", "number": 1, "pull_request": {"url": "https://api.github.com/repos/octocat/Hello-World/pulls/1"}, "repository": {"url": "https://api.github.com/repos/octocat/Hello-World"}, "sender": {"login": "octocat"}...}LicenseThe code in this project is released under theMIT License.