artifact

package
v0.0.0-...-e25005f Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2024 License: Apache-2.0 Imports: 13 Imported by: 44

Documentation

Overview

Package artifact models links to files created during task execution.

Index

Constants

View Source
const (
	// strings for setting visibility
	Public  = "public"
	Private = "private"
	None    = "none"
	Signed  = "signed"
)
View Source
const Collection = "artifact_files"

Variables

View Source
var (
	// BSON fields for artifact file structs
	TaskIdKey      = bsonutil.MustHaveTag(Entry{}, "TaskId")
	TaskNameKey    = bsonutil.MustHaveTag(Entry{}, "TaskDisplayName")
	BuildIdKey     = bsonutil.MustHaveTag(Entry{}, "BuildId")
	FilesKey       = bsonutil.MustHaveTag(Entry{}, "Files")
	ExecutionKey   = bsonutil.MustHaveTag(Entry{}, "Execution")
	CreateTimeKey  = bsonutil.MustHaveTag(Entry{}, "CreateTime")
	NameKey        = bsonutil.MustHaveTag(File{}, "Name")
	LinkKey        = bsonutil.MustHaveTag(File{}, "Link")
	ContentTypeKey = bsonutil.MustHaveTag(File{}, "ContentType")
	AwsSecretKey   = bsonutil.MustHaveTag(File{}, "AwsSecret")
)
View Source
var ValidVisibilities = []string{Public, Private, None, Signed, ""}

Functions

func ByBuildId

func ByBuildId(id string) db.Q

ByBuildId returns all entries with the given Build Id, sorted by Task name

func BySecret

func BySecret(secret string) db.Q

func ByTaskId

func ByTaskId(id string) db.Q

ByTaskId returns a query for entries with the given Task Id

func ByTaskIdAndExecution

func ByTaskIdAndExecution(id string, execution int) db.Q

ByTaskIdAndExecution returns a query for entries with the given Task Id and execution number

func ByTaskIdWithoutExecution

func ByTaskIdWithoutExecution(id string) db.Q

ByTaskIdWithoutExecution returns a query for entries with the given Task Id that do not have an execution number associated with them

func ByTaskIds

func ByTaskIds(taskIds []string) db.Q

func ByTaskIdsAndExecutions

func ByTaskIdsAndExecutions(tasks []TaskIDAndExecution) db.Q

func RotateSecrets

func RotateSecrets(toReplace, replacement string, dryRun bool) (map[TaskIDAndExecution][]string, error)

Types

type Entry

type Entry struct {
	TaskId          string    `json:"task" bson:"task"`
	TaskDisplayName string    `json:"task_name" bson:"task_name"`
	BuildId         string    `json:"build" bson:"build"`
	Files           []File    `json:"files" bson:"files"`
	Execution       int       `json:"execution" bson:"execution"`
	CreateTime      time.Time `json:"create_time" bson:"create_time"`
}

Entry stores groups of names and links (not content!) for files uploaded to the api server by a running agent. These links could be for build or task-relevant files (things like extra results, test coverage, etc.)

func FindAll

func FindAll(query db.Q) ([]Entry, error)

FindAll gets every Entry for the given query

func FindOne

func FindOne(query db.Q) (*Entry, error)

FindOne gets one Entry for the given query

func (Entry) Update

func (e Entry) Update() error

func (Entry) Upsert

func (e Entry) Upsert() error

Upsert updates the files entry in the db if an entry already exists, overwriting the existing file data. If no entry exists, one is created

type File

type File struct {
	// Name is a human-readable name for the file being linked, e.g. "Coverage Report"
	Name string `json:"name" bson:"name"`
	// Link is the link to the file, e.g. "http://fileserver/coverage.html"
	Link string `json:"link" bson:"link"`
	// Visibility determines who can see the file in the UI
	Visibility string `json:"visibility" bson:"visibility"`
	// When true, these artifacts are excluded from reproduction
	IgnoreForFetch bool `bson:"fetch_ignore,omitempty" json:"ignore_for_fetch"`
	// AwsKey is the key with which the file was uploaded to S3.
	AwsKey string `json:"aws_key,omitempty" bson:"aws_key,omitempty"`
	// AwsSecret is the secret with which the file was uploaded to S3.
	AwsSecret string `json:"aws_secret,omitempty" bson:"aws_secret,omitempty"`
	// Bucket is the aws bucket in which the file is stored.
	Bucket string `json:"bucket,omitempty" bson:"bucket,omitempty"`
	// FileKey is the path to the file in the bucket.
	FileKey string `json:"filekey,omitempty" bson:"filekey,omitempty"`
	// ContentType is the content type of the file.
	ContentType string `json:"content_type" bson:"content_type"`
}

File is a pairing of name and link for easy storage/display

func EscapeFiles

func EscapeFiles(files []File) []File

EscapeFiles escapes the base of the file link to avoid issues opening links with special characters in the UI. For example, "url.com/something/file#1.tar.gz" will be escaped to "url.com/something/file%231.tar.gz

func GetAllArtifacts

func GetAllArtifacts(tasks []TaskIDAndExecution) ([]File, error)

func StripHiddenFiles

func StripHiddenFiles(ctx context.Context, files []File, hasUser bool) ([]File, error)

StripHiddenFiles is a helper for only showing users the files they are allowed to see. It also pre-signs file URLs.

type Params

type Params map[string]string

Params stores file entries as key-value pairs, for easy parameter parsing.

Key = Human-readable name for file
Value = link for the file

type TaskIDAndExecution

type TaskIDAndExecution struct {
	TaskID    string
	Execution int
}

Jump to

Keyboard shortcuts

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