Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrNoResult = errors.New("no remote gitlab url could validate due to invalid responses, this indicates that either there is no remote defined which has an API endpoint or the API endpoint differs from the clone url")
ErrNoResult happens when no remote can validate the CI as the requests don't succeed
var ErrTimeout = errors.New("no remote url could validate due to a timeout")
ErrTimeout happens when no remote can validate the CI linting after the specified timeout
Functions ¶
func ExtractScripts ¶ added in v0.0.2
func ExtractScripts(doc *yaml.Node) chan JobWithScripts
ExtractScripts from a YAML document
Types ¶
type JobWithScripts ¶ added in v0.0.2
type JobWithScripts struct { // JobName contains the name of the job the scripts are part of JobName string // ScriptParts contains the script parts indexed by the key of the job ScriptParts map[string][]ScriptPart }
JobWithScripts represents the parsed scripts from a job and the name of the job
type ScriptPart ¶ added in v0.0.2
type ScriptPart struct { // Content is the script content lines Content string // Node the script was extracted from Node *yaml.Node }
ScriptPart represents a part of a script
func (*ScriptPart) SplitContentLines ¶ added in v0.0.2
func (s *ScriptPart) SplitContentLines() []ScriptPartLine
SplitContentLines from a part
type ScriptPartLine ¶ added in v0.0.2
type ScriptPartLine struct { // LineContent is a line of a script part LineContent string // LineNumber contains the number in which the line was found LineNumber int // Node the script was extracted from Node *yaml.Node }
ScriptPartLine represents a line of a script part
func Concat ¶ added in v0.0.2
func Concat(parts []ScriptPart) ([]ScriptPartLine, []byte)
Concat all given ScriptPart's into one string and return the lines as well as the buffer
type VerificationResultWithRemoteInfo ¶
type VerificationResultWithRemoteInfo struct { RemoteInfo *git.GitlabRemoteUrlInfo LintResult *api.CiLintResult }
VerificationResultWithRemoteInfo contains both the remote that was used and the according lint result
func GetFirstValidationResult ¶
func GetFirstValidationResult(remoteInfos []git.GitlabRemoteUrlInfo, token string, baseUrlOverwrite string, ciYaml []byte, timeout time.Duration) (*VerificationResultWithRemoteInfo, error)
GetFirstValidationResult starts a parallel request to all remotes and tries to use the API to lint the CI file the first to report a result will be used as a validation result. If none of the remotes can produce a result or timeout is reached, the validation is aborted and the error is set accordingly.