11# GITHUB_ACTOR=user
22# GITHUB_API_URL=https://api.github.com/
3+ # GITHUB_BASE_REF=feature/FFS-2-test
34# GITHUB_EVENT_NAME=workflow_dispatch
5+ # GITHUB_HEAD_REF=feature/FFS-3-test
46# GITHUB_REF=refs/heads/feature-branch-1
57# GITHUB_REF_NAME=feature/FFS-123-test
68# GITHUB_REF_TYPE=branch
79# GITHUB_REPOSITORY=octocat/Hello-World
810# GITHUB_REPOSITORY_OWNER=octocat
911# GITHUB_RUN_ATTEMPT=1
1012# GITHUB_RUN_ID=1658821493
13+ # GITHUB_RUN_NUMBER=1
1114# GITHUB_SERVER_URL=https://github.com
15+ # GITHUB_SHA=ffac537e6cbbf934b08745a378932722df287a53
1216
1317import os
1418
2024class GitHubContext :
2125 actor : str
2226 api_url : str
27+ base_ref : str
2328 event_name : str
29+ head_ref : str
2430 ref : str
2531 ref_name : str
2632 ref_type : str
2733 repository : str
2834 repository_owner : str
2935 run_attempt : str
3036 run_id : str
37+ run_number : str
3138 server_url : str
39+ sha : str
3240
3341 @staticmethod
34- def from_env () -> "GitHubContext" :
42+ def from_env (github_custom_ref = "" , github_custom_ref_name = "" ) -> "GitHubContext" :
3543 required_env_vars = [
3644 "GITHUB_ACTOR" ,
3745 "GITHUB_API_URL" ,
46+ "GITHUB_BASE_REF" ,
3847 "GITHUB_EVENT_NAME" ,
48+ "GITHUB_HEAD_REF" ,
3949 "GITHUB_REF" ,
4050 "GITHUB_REF_NAME" ,
4151 "GITHUB_REF_TYPE" ,
4252 "GITHUB_REPOSITORY" ,
4353 "GITHUB_REPOSITORY_OWNER" ,
4454 "GITHUB_RUN_ATTEMPT" ,
4555 "GITHUB_RUN_ID" ,
56+ "GITHUB_RUN_NUMBER" ,
4657 "GITHUB_SERVER_URL" ,
58+ "GITHUB_SHA" ,
4759 ]
4860
4961 missing_vars = [var for var in required_env_vars if os .getenv (var ) is None ]
@@ -53,31 +65,39 @@ def from_env() -> "GitHubContext":
5365 return GitHubContext (
5466 actor = os .getenv ("GITHUB_ACTOR" ),
5567 api_url = os .getenv ("GITHUB_API_URL" ),
56- event_name = os .getenv ("GITHUB_EVENT_NAME" ),
57- ref = os .getenv ("GITHUB_REF" ),
58- ref_name = os .getenv ("GITHUB_REF_NAME" ),
68+ base_ref = os .getenv ("GITHUB_EVENT_NAME" ),
69+ event_name = os .getenv ("GITHUB_BASE_REF" ),
70+ head_ref = os .getenv ("GITHUB_HEAD_REF" ),
71+ ref = github_custom_ref if github_custom_ref else os .getenv ("GITHUB_REF" ),
72+ ref_name = github_custom_ref_name if github_custom_ref_name else os .getenv ("GITHUB_REF_NAME" ),
5973 ref_type = os .getenv ("GITHUB_REF_TYPE" ),
6074 repository = os .getenv ("GITHUB_REPOSITORY" ),
6175 repository_owner = os .getenv ("GITHUB_REPOSITORY_OWNER" ),
6276 run_attempt = os .getenv ("GITHUB_RUN_ATTEMPT" ),
6377 run_id = os .getenv ("GITHUB_RUN_ID" ),
78+ run_number = os .getenv ("GITHUB_RUN_NUMBER" ),
6479 server_url = os .getenv ("GITHUB_SERVER_URL" ),
80+ sha = os .getenv ("GITHUB_SHA" ),
6581 )
6682
6783 def to_list (self ) -> List [str ]:
6884 """Return context attributes as a list."""
6985 return [
7086 f"actor: { self .actor } " ,
7187 f"api_url: { self .api_url } " ,
88+ f"base_ref: { self .base_ref } " ,
7289 f"event_name: { self .event_name } " ,
90+ f"head_ref: { self .head_ref } " ,
7391 f"ref: { self .ref } " ,
7492 f"ref_name: { self .ref_name } " ,
7593 f"ref_type: { self .ref_type } " ,
7694 f"repository: { self .repository } " ,
7795 f"repository_owner: { self .repository_owner } " ,
7896 f"run_attempt: { self .run_attempt } " ,
7997 f"run_id: { self .run_id } " ,
98+ f"run_number: { self .run_number } " ,
8099 f"server_url: { self .server_url } " ,
100+ f"sha: { self .sha } " ,
81101 ]
82102
83103 def to_string (self ) -> str :
0 commit comments