githubactions

package
v0.7.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 4, 2023 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ArchX86   = "X86"
	ArchX64   = "X64"
	ArchARM   = "ARM"
	ArchARM64 = "ARM64"
)
View Source
const (
	DefaultBranch = "main"
	DefaultRemote = "origin"
)
View Source
const (
	EnvVarCI              = "CI"
	EnvVarWorkflow        = "GITHUB_WORKFLOW"
	EnvVarRunID           = "GITHUB_RUN_ID"
	EnvVarRunNumber       = "GITHUB_RUN_NUMBER"
	EnvVarRunAttempt      = "GITHUB_RUN_ATTEMPT"
	EnvVarJob             = "GITHUB_JOB"
	EnvVarAction          = "GITHUB_ACTION"
	EnvVarActionPath      = "GITHUB_ACTION_PATH"
	EnvVarActions         = "GITHUB_ACTIONS"
	EnvVarActor           = "GITHUB_ACTOR"
	EnvVarRepository      = "GITHUB_REPOSITORY"
	EnvVarEventName       = "GITHUB_EVENT_NAME"
	EnvVarEventPath       = "GITHUB_EVENT_PATH"
	EnvVarWorkspace       = "GITHUB_WORKSPACE"
	EnvVarSha             = "GITHUB_SHA"
	EnvVarRef             = "GITHUB_REF"
	EnvVarRefName         = "GITHUB_REF_NAME"
	EnvVarRefProtected    = "GITHUB_REF_PROTECTED"
	EnvVarRefType         = "GITHUB_REF_TYPE"
	EnvVarHeadRef         = "GITHUB_HEAD_REF"
	EnvVarBaseRef         = "GITHUB_BASE_REF"
	EnvVarServerURL       = "GITHUB_SERVER_URL"
	EnvVarAPIURL          = "GITHUB_API_URL"
	EnvVarGraphQLURL      = "GITHUB_GRAPHQL_URL"
	EnvVarRunnerName      = "RUNNER_NAME"
	EnvVarRunnerOS        = "RUNNER_OS"
	EnvVarRunnerArch      = "RUNNER_ARCH"
	EnvVarRunnerTemp      = "RUNNER_TEMP"
	EnvVarRunnerToolCache = "RUNNER_TOOL_CACHE"

	EnvVarEnv    = "GITHUB_ENV"
	EnvVarPath   = "GITHUB_PATH"
	EnvVarState  = "GITHUB_STATE"
	EnvVarOutput = "GITHUB_OUTPUT"

	EnvVarToken = "GITHUB_TOKEN" //nolint:gosec

	EnvVarRepositoryOwner  = "GITHUB_REPOSITORY_OWNER"
	EnvVarRetentionDays    = "GITHUB_RETENTION_DAYS"
	EnvVarStepSummary      = "GITHUB_STEP_SUMMARY"
	EnvVarActionRepository = "GITHUB_ACTION_REPOSITORY"
)
View Source
const (
	RunsUsingDockerfileImage   = "Dockerfile"
	RunsUsingDockerImagePrefix = "docker://"
	RunsUsingDocker            = "docker"
	RunsUsingComposite         = "composite"
	RunsUsingNode12            = "node12"
	RunsUsingNode16            = "node16"
)
View Source
const (
	OSLinux   = "Linux"
	OSWindows = "Windows"
	OSDarwin  = "macOS"
)
View Source
const (
	RefTypeTag    = "tag"
	RefTypeBranch = "branch"
)
View Source
const (
	SecretActionsStepDebug   = "ACTIONS_STEP_DEBUG"
	SecretActionsRunnerDebug = "ACTIONS_RUNNER_DEBUG"
	SecretDebugValue         = "true"
)
View Source
const (
	CommandDebug        = "debug"
	CommandGroup        = "group"
	CommandEndGroup     = "endgroup"
	CommandSaveState    = "save-state"
	CommandSetOutput    = "set-output"
	CommandNotice       = "notice"
	CommandWarning      = "warning"
	CommandError        = "error"
	CommandAddMask      = "add-mask"
	CommandEcho         = "echo"
	CommandStopCommands = "stop-commands"
)

Variables

View Source
var (
	ErrNotAnAction         = errors.New("action.yaml/action.yml not found")
	ErrNotAWorkflowCommand = errors.New("not a workflow command")
)
View Source
var (
	DefaultURL        *url.URL
	DefaultAPIURL     *url.URL
	DefaultGraphQLURL *url.URL
)
View Source
var ActionYAMLFilenames = []string{"action.yml", "action.yaml"}

ActionYAMLFilenames holds the possible names of a GitHub Action metadata file.

View Source
var ErrMissingRequiredInput = errors.New("required input missing")

Functions

func APIURLFromBaseURL

func APIURLFromBaseURL(base *url.URL) (*url.URL, error)

func Expand

func Expand(b []byte, expand ExpandFunc) (p []byte)

Expand takes bytes and an ExpandFunc. Whenever it encounters a variable in the bytes, signified by e.g. "${{ example }}", it calls ExpandFunc with the variable name and replaces the variable with the result. It returns the fully expanded bytes.

func ExpandString

func ExpandString(s string, expand ExpandFunc) string

ExpandString is a convenience method for Expanding strings. See Expand.

func GetGitHubAPIURL

func GetGitHubAPIURL() *url.URL

func GetGitHubServerURL

func GetGitHubServerURL() *url.URL

func GetGitHubURL

func GetGitHubURL() *url.URL

func GetGraphQLURL

func GetGraphQLURL() *url.URL

func GraphQLURLFromBaseURL

func GraphQLURLFromBaseURL(base *url.URL) (*url.URL, error)

func IsErrNotAWorkflowCommand

func IsErrNotAWorkflowCommand(err error) bool

func IsErrNotAnAction

func IsErrNotAnAction(err error) bool

func NewWorkflowCommandWriter

func NewWorkflowCommandWriter(callback func(*WorkflowCommand) []byte, w io.Writer) io.Writer

func OpenDirectoryMetadata

func OpenDirectoryMetadata(dir string) (_ io.Reader, err error)

func OpenUsesMetadata

func OpenUsesMetadata(uses *Uses) (io.Reader, error)

func ParseEnvFile added in v0.6.0

func ParseEnvFile(r io.Reader) (map[string]string, error)

func ParsePathFile added in v0.6.0

func ParsePathFile(r io.Reader) (string, error)

PathFromReader takes a Reader with newline-delimited directory paths e.g.

/usr/local/bin
/usr/bin

and returns a corresponding PATH environment variable

/usr/local/bin:/usr/bin

func WithGlobalContext

func WithGlobalContext(ctx context.Context, globalContext *GlobalContext) context.Context

Types

type ExpandFunc

type ExpandFunc func(string) string

ExpandFunc takes a variable name and returns the variable value.

func (ExpandFunc) Expand added in v0.4.3

func (e ExpandFunc) Expand(b []byte) []byte

func (ExpandFunc) ExpandString added in v0.4.3

func (e ExpandFunc) ExpandString(s string) string

type GitHubContext

type GitHubContext struct {
	Action          string
	ActionPath      string
	Actor           string
	BaseRef         string
	Event           string
	EventName       string
	EventPath       string
	HeadRef         string
	Job             string
	Ref             string
	RefName         string
	RefProtected    bool
	RefType         string
	Repository      string
	RepositoryOwner string
	RunID           string
	RunNumber       int64
	RunAttempt      int64
	ServerURL       string
	Sha             string
	Token           string
	Workflow        string
	Workspace       string
}

func (*GitHubContext) GetString

func (c *GitHubContext) GetString(key string) string

type GlobalContext

type GlobalContext struct {
	GitHubContext  *GitHubContext
	EnvContext     map[string]string
	JobContext     *JobContext
	StepsContext   map[string]StepContext
	RunnerContext  *RunnerContext
	InputsContext  map[string]string
	SecretsContext map[string]string
	NeedsContext   map[string]NeedContext
}

func GlobalContextFrom

func GlobalContextFrom(ctx context.Context) (globalContext *GlobalContext, ok bool)

func NewGlobalContextFromEnv

func NewGlobalContextFromEnv() *GlobalContext

func NewGlobalContextFromPath

func NewGlobalContextFromPath(ctx context.Context, path string) (*GlobalContext, error)

func (*GlobalContext) AddEnv

func (c *GlobalContext) AddEnv(env map[string]string)

func (*GlobalContext) Env

func (c *GlobalContext) Env() []string

func (*GlobalContext) GetString

func (c *GlobalContext) GetString(key string) string

type JobContext

type JobContext struct {
	Container *JobContextContainer
	Services  map[string]JobContextService
	Status    string
}

func (*JobContext) GetString

func (c *JobContext) GetString(key string) string

type JobContextContainer

type JobContextContainer struct {
	ID      string
	Network string
}

type JobContextService

type JobContextService struct {
	ID      string
	Network string
	Ports   map[string]string
}

type Metadata

type Metadata struct {
	Name        string                    `json:"name,omitempty"`
	Author      string                    `json:"author,omitempty"`
	Description string                    `json:"description,omitempty"`
	Inputs      map[string]MetadataInput  `json:"inputs,omitempty"`
	Output      map[string]MetadataOutput `json:"output,omitempty"`
	Runs        *MetadataRuns             `json:"runs,omitempty"`
}

func DownloadAction added in v0.6.0

func DownloadAction(ctx context.Context, u *Uses) (*Metadata, io.ReadCloser, error)

DownloadAction takes a Uses reference and returns the corresponding GitHub Action Metadata, a tarball of the GitHub Action repository.

func GetUsesMetadata

func GetUsesMetadata(ctx context.Context, uses *Uses, dir string) (*Metadata, error)

func NewMetadataFromReader

func NewMetadataFromReader(r io.Reader) (*Metadata, error)

func (*Metadata) InputsFromWith

func (m *Metadata) InputsFromWith(with map[string]string) (map[string]string, error)

func (*Metadata) IsComposite

func (m *Metadata) IsComposite() bool

func (*Metadata) IsDockerfile

func (m *Metadata) IsDockerfile() bool

type MetadataInput

type MetadataInput struct {
	Description        string `json:"description,omitempty"`
	Required           bool   `json:"required,omitempty"`
	Default            string `json:"default,omitempty"`
	DeprecationMessage string `json:"deprecation_message,omitempty"`
}

type MetadataOutput

type MetadataOutput struct {
	Description string `json:"description,omitempty"`
}

type MetadataRuns

type MetadataRuns struct {
	Plugin         string            `json:"plugin,omitempty"`
	Using          string            `json:"using,omitempty"`
	Pre            string            `json:"pre,omitempty"`
	Main           string            `json:"main,omitempty"`
	Post           string            `json:"post,omitempty"`
	Image          string            `json:"image,omitempty"`
	PreEntrypoint  string            `json:"pre_entrypoint,omitempty"`
	Entrypoint     string            `json:"entrypoint,omitempty"`
	PostEntrypoint string            `json:"post_entrypoint,omitempty"`
	Args           []string          `json:"args,omitempty"`
	Env            map[string]string `json:"env,omitempty"`
	Steps          []Step            `json:"steps,omitempty"`
}

type NeedContext

type NeedContext struct {
	Outputs map[string]string
}

func (*NeedContext) GetString

func (c *NeedContext) GetString(key string) string

type RunnerContext

type RunnerContext struct {
	Name      string
	OS        string
	Arch      string
	Temp      string
	ToolCache string
}

func (*RunnerContext) GetString

func (c *RunnerContext) GetString(key string) string

type Step

type Step struct {
	Shell      string            `json:"shell,omitempty"`
	If         string            `json:"if,omitempty"`
	Name       string            `json:"name,omitempty"`
	ID         string            `json:"id,omitempty"`
	Env        map[string]string `json:"env,omitempty"`
	WorkingDir string            `json:"working_dir,omitempty"`
	Uses       string            `json:"uses,omitempty"`
	With       map[string]string `json:"with,omitempty"`
	Run        string            `json:"run,omitempty"`
}

type StepContext

type StepContext struct {
	Outputs    map[string]string
	Conclusion string
	Outcome    string
}

func (*StepContext) GetString

func (c *StepContext) GetString(key string) string

type Uses

type Uses struct {
	Path    string
	Version string
}

func Parse

func Parse(uses string) (*Uses, error)

TODO regexp.

func (*Uses) GetActionPath

func (u *Uses) GetActionPath() string

func (*Uses) GetOwner added in v0.6.0

func (u *Uses) GetOwner() string

func (*Uses) GetRepository

func (u *Uses) GetRepository() string

func (*Uses) GoString

func (u *Uses) GoString() string

func (*Uses) IsLocal

func (u *Uses) IsLocal() bool

func (*Uses) IsRemote

func (u *Uses) IsRemote() bool

func (*Uses) MarshalJSON

func (u *Uses) MarshalJSON() ([]byte, error)

func (*Uses) String added in v0.4.3

func (u *Uses) String() string

type WorkflowCommand

type WorkflowCommand struct {
	Command    string
	Parameters map[string]string
	Value      string
}

func ParseWorkflowCommand

func ParseWorkflowCommand(b []byte) (*WorkflowCommand, error)

func ParseWorkflowCommandString

func ParseWorkflowCommandString(workflowCommand string) (*WorkflowCommand, error)

TODO regexp.

func (*WorkflowCommand) GetName

func (c *WorkflowCommand) GetName() string

func (*WorkflowCommand) GoString

func (c *WorkflowCommand) GoString() string

func (*WorkflowCommand) String

func (c *WorkflowCommand) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL