// Package env stores the environment variables from actions environment. package env import ( "fmt" "os" "time" ) const ( ConfName = "JOJ3_CONF_NAME" Groups = "JOJ3_GROUPS" RunID = "JOJ3_RUN_ID" CommitMsg = "JOJ3_COMMIT_MSG" ForceQuitStageName = "JOJ3_FORCE_QUIT_STAGE_NAME" OutputPath = "JOJ3_OUTPUT_PATH" ) type Attribute struct { ConfName string CommitMsg string Groups string RunID string Actor string Repository string Sha string Ref string Workflow string RunNumber string ActorName string ActorID string ForceQuitStageName string OutputPath string } var Attr Attribute func init() { timestamp := time.Now().UnixNano() pid := os.Getpid() high := timestamp >> 32 low := timestamp & 0xFFFFFFFF combined := high ^ low combined ^= int64(pid) combined ^= timestamp >> 16 combined ^= (combined >> 8) combined ^= (combined << 16) Attr.RunID = fmt.Sprintf("%08X", combined&0xFFFFFFFF) Attr.Actor = os.Getenv("GITHUB_ACTOR") Attr.Repository = os.Getenv("GITHUB_REPOSITORY") Attr.Sha = os.Getenv("GITHUB_SHA") Attr.Ref = os.Getenv("GITHUB_REF") Attr.Workflow = os.Getenv("GITHUB_WORKFLOW") Attr.RunNumber = os.Getenv("GITHUB_RUN_NUMBER") } func Set() { os.Setenv(ConfName, Attr.ConfName) os.Setenv(Groups, Attr.Groups) os.Setenv(RunID, Attr.RunID) os.Setenv(CommitMsg, Attr.CommitMsg) os.Setenv(ForceQuitStageName, Attr.ForceQuitStageName) os.Setenv(OutputPath, Attr.OutputPath) }