本文整理汇总了Golang中github.com/concourse/atc.TaskConfig类的典型用法代码示例。如果您正苦于以下问题:Golang TaskConfig类的具体用法?Golang TaskConfig怎么用?Golang TaskConfig使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TaskConfig类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: main
func main() {
path := os.Args[1]
file, err := ioutil.ReadFile(path)
if err != nil {
fmt.Println("could not read file: ", err.Error())
os.Exit(1)
}
fmt.Println("checking " + path + "...")
var config atc.TaskConfig
if err := yaml.Unmarshal(file, &config); err != nil {
fmt.Println("could not unmarshal file: ", err.Error())
os.Exit(1)
}
if err := config.Validate(); err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
}
示例2: FetchConfig
// FetchConfig reads the specified file from the SourceRepository and loads the
// TaskConfig contained therein (expecting it to be YAML format).
//
// The path must be in the format SOURCE_NAME/FILE/PATH.yml. The SOURCE_NAME
// will be used to determine the ArtifactSource in the SourceRepository to
// stream the file out of.
//
// If the source name is missing (i.e. if the path is just "foo.yml"),
// UnspecifiedArtifactSourceError is returned.
//
// If the specified source name cannot be found, UnknownArtifactSourceError is
// returned.
//
// If the task config file is not found, or is invalid YAML, or is an invalid
// task configuration, the respective errors will be bubbled up.
func (configSource FileConfigSource) FetchConfig(repo *SourceRepository) (atc.TaskConfig, error) {
segs := strings.SplitN(configSource.Path, "/", 2)
if len(segs) != 2 {
return atc.TaskConfig{}, UnspecifiedArtifactSourceError{configSource.Path}
}
sourceName := SourceName(segs[0])
filePath := segs[1]
source, found := repo.SourceFor(sourceName)
if !found {
return atc.TaskConfig{}, UnknownArtifactSourceError{sourceName}
}
stream, err := source.StreamFile(filePath)
if err != nil {
return atc.TaskConfig{}, err
}
defer stream.Close()
streamedFile, err := ioutil.ReadAll(stream)
if err != nil {
return atc.TaskConfig{}, err
}
var config atc.TaskConfig
if err := yaml.Unmarshal(streamedFile, &config); err != nil {
return atc.TaskConfig{}, err
}
err = config.Validate()
if err != nil {
return atc.TaskConfig{}, err
}
return config, nil
}
示例3: FetchConfig
// FetchConfig returns the configuration.
func (configSource StaticConfigSource) FetchConfig(*SourceRepository) (atc.TaskConfig, error) {
taskConfig := atc.TaskConfig{}
if configSource.Plan.Config != nil {
taskConfig = *configSource.Plan.Config
}
if configSource.Plan.Params == nil {
return taskConfig, nil
}
if taskConfig.Params == nil {
taskConfig.Params = map[string]string{}
}
for key, val := range configSource.Plan.Params {
switch v := val.(type) {
case string:
taskConfig.Params[key] = v
case float64:
if math.Floor(v) == v {
taskConfig.Params[key] = strconv.FormatInt(int64(v), 10)
} else {
taskConfig.Params[key] = strconv.FormatFloat(v, 'f', -1, 64)
}
default:
bs, err := json.Marshal(val)
if err != nil {
return atc.TaskConfig{}, err
}
taskConfig.Params[key] = string(bs)
}
}
return taskConfig, nil
}
示例4: CreateBuild
func CreateBuild(
atcRequester *deprecated.AtcRequester,
client concourse.Client,
privileged bool,
inputs []Input,
outputs []Output,
config atc.TaskConfig,
tags []string,
target string,
) (atc.Build, error) {
if err := config.Validate(); err != nil {
return atc.Build{}, err
}
targetProps, err := rc.SelectTarget(target)
if err != nil {
return atc.Build{}, err
}
buildInputs := atc.AggregatePlan{}
for i, input := range inputs {
var getPlan atc.GetPlan
if input.Path != "" {
readPipe, err := atcRequester.CreateRequest(
atc.ReadPipe,
rata.Params{"pipe_id": input.Pipe.ID},
nil,
)
if err != nil {
return atc.Build{}, err
}
source := atc.Source{
"uri": readPipe.URL.String(),
}
if targetProps.Token != nil {
source["authorization"] = targetProps.Token.Type + " " + targetProps.Token.Value
}
getPlan = atc.GetPlan{
Name: input.Name,
Type: "archive",
Source: source,
}
} else {
getPlan = atc.GetPlan{
Name: input.Name,
Type: input.BuildInput.Type,
Source: input.BuildInput.Source,
Version: input.BuildInput.Version,
Params: input.BuildInput.Params,
Tags: input.BuildInput.Tags,
}
}
buildInputs = append(buildInputs, atc.Plan{
Location: &atc.Location{
// offset by 2 because aggregate gets parallelgroup ID 1
ID: uint(i) + 2,
ParentID: 0,
ParallelGroup: 1,
},
Get: &getPlan,
})
}
taskPlan := atc.Plan{
Location: &atc.Location{
// offset by 1 because aggregate gets parallelgroup ID 1
ID: uint(len(inputs)) + 2,
ParentID: 0,
},
Task: &atc.TaskPlan{
Name: "one-off",
Privileged: privileged,
Config: &config,
},
}
if len(tags) != 0 {
taskPlan.Task.Tags = tags
}
buildOutputs := atc.AggregatePlan{}
for i, output := range outputs {
writePipe, err := atcRequester.CreateRequest(
atc.WritePipe,
rata.Params{"pipe_id": output.Pipe.ID},
nil,
)
if err != nil {
return atc.Build{}, err
}
source := atc.Source{
"uri": writePipe.URL.String(),
}
params := atc.Params{
"directory": output.Name,
}
//.........这里部分代码省略.........
示例5: CreateBuild
func CreateBuild(
client concourse.Client,
privileged bool,
inputs []Input,
outputs []Output,
config atc.TaskConfig,
tags []string,
target rc.TargetName,
) (atc.Build, error) {
fact := atc.NewPlanFactory(time.Now().Unix())
if err := config.Validate(); err != nil {
return atc.Build{}, err
}
targetProps, err := rc.SelectTarget(target)
if err != nil {
return atc.Build{}, err
}
buildInputs := atc.AggregatePlan{}
for _, input := range inputs {
var getPlan atc.GetPlan
if input.Path != "" {
source := atc.Source{
"uri": input.Pipe.ReadURL,
}
if auth, ok := targetAuthorization(targetProps.Token); ok {
source["authorization"] = auth
}
getPlan = atc.GetPlan{
Name: input.Name,
Type: "archive",
Source: source,
}
} else {
getPlan = atc.GetPlan{
Name: input.Name,
Type: input.BuildInput.Type,
Source: input.BuildInput.Source,
Version: input.BuildInput.Version,
Params: input.BuildInput.Params,
Tags: input.BuildInput.Tags,
}
}
buildInputs = append(buildInputs, fact.NewPlan(getPlan))
}
taskPlan := fact.NewPlan(atc.TaskPlan{
Name: "one-off",
Privileged: privileged,
Config: &config,
})
if len(tags) != 0 {
taskPlan.Task.Tags = tags
}
buildOutputs := atc.AggregatePlan{}
for _, output := range outputs {
source := atc.Source{
"uri": output.Pipe.ReadURL,
}
params := atc.Params{
"directory": output.Name,
}
if auth, ok := targetAuthorization(targetProps.Token); ok {
source["authorization"] = auth
}
buildOutputs = append(buildOutputs, fact.NewPlan(atc.PutPlan{
Name: output.Name,
Type: "archive",
Source: source,
Params: params,
}))
}
var plan atc.Plan
if len(buildOutputs) == 0 {
plan = fact.NewPlan(atc.DoPlan{
fact.NewPlan(buildInputs),
taskPlan,
})
} else {
plan = fact.NewPlan(atc.EnsurePlan{
Step: fact.NewPlan(atc.DoPlan{
fact.NewPlan(buildInputs),
taskPlan,
}),
Next: fact.NewPlan(buildOutputs),
})
}
return client.CreateBuild(plan)
//.........这里部分代码省略.........
示例6: createBuild
func createBuild(
atcRequester *atcRequester,
privileged bool,
inputs []Input,
config atc.TaskConfig,
) atc.Build {
if err := config.Validate(); err != nil {
println(err.Error())
os.Exit(1)
}
buffer := &bytes.Buffer{}
buildInputs := atc.AggregatePlan{}
for i, input := range inputs {
readPipe, err := atcRequester.CreateRequest(
atc.ReadPipe,
rata.Params{"pipe_id": input.Pipe.ID},
nil,
)
if err != nil {
log.Fatalln(err)
}
buildInputs = append(buildInputs, atc.Plan{
Location: &atc.Location{
// offset by 2 because aggregate gets parallelgroup ID 1
ID: uint(i) + 2,
ParentID: 0,
ParallelGroup: 1,
},
Get: &atc.GetPlan{
Name: input.Name,
Type: "archive",
Source: atc.Source{
"uri": readPipe.URL.String(),
},
},
})
}
plan := atc.Plan{
Compose: &atc.ComposePlan{
A: atc.Plan{
Aggregate: &buildInputs,
},
B: atc.Plan{
Location: &atc.Location{
// offset by 1 because aggregate gets parallelgroup ID 1
ID: uint(len(inputs)) + 2,
ParentID: 0,
},
Task: &atc.TaskPlan{
Name: "build",
Privileged: privileged,
Config: &config,
},
},
},
}
err := json.NewEncoder(buffer).Encode(plan)
if err != nil {
log.Fatalln("encoding build failed:", err)
}
createBuild, err := atcRequester.CreateRequest(atc.CreateBuild, nil, buffer)
if err != nil {
log.Fatalln(err)
}
createBuild.Header.Set("Content-Type", "application/json")
response, err := atcRequester.httpClient.Do(createBuild)
if err != nil {
log.Fatalln("request failed:", err)
}
defer response.Body.Close()
if response.StatusCode != http.StatusCreated {
log.Println("bad response when creating build:", response)
response.Write(os.Stderr)
os.Exit(1)
}
var build atc.Build
err = json.NewDecoder(response.Body).Decode(&build)
if err != nil {
log.Fatalln("response decoding failed:", err)
}
return build
}
示例7: CreateBuild
func CreateBuild(
atcRequester *deprecated.AtcRequester,
client concourse.Client,
privileged bool,
inputs []Input,
outputs []Output,
config atc.TaskConfig,
tags []string,
target string,
) (atc.Build, error) {
fact := atc.NewPlanFactory(time.Now().Unix())
if err := config.Validate(); err != nil {
return atc.Build{}, err
}
targetProps, err := rc.SelectTarget(target)
if err != nil {
return atc.Build{}, err
}
buildInputs := atc.AggregatePlan{}
for _, input := range inputs {
var getPlan atc.GetPlan
if input.Path != "" {
readPipe, err := atcRequester.CreateRequest(
atc.ReadPipe,
rata.Params{"pipe_id": input.Pipe.ID},
nil,
)
if err != nil {
return atc.Build{}, err
}
source := atc.Source{
"uri": readPipe.URL.String(),
}
if targetProps.Token != nil {
source["authorization"] = targetProps.Token.Type + " " + targetProps.Token.Value
}
getPlan = atc.GetPlan{
Name: input.Name,
Type: "archive",
Source: source,
}
} else {
getPlan = atc.GetPlan{
Name: input.Name,
Type: input.BuildInput.Type,
Source: input.BuildInput.Source,
Version: input.BuildInput.Version,
Params: input.BuildInput.Params,
Tags: input.BuildInput.Tags,
}
}
buildInputs = append(buildInputs, fact.NewPlan(getPlan))
}
taskPlan := fact.NewPlan(atc.TaskPlan{
Name: "one-off",
Privileged: privileged,
Config: &config,
})
if len(tags) != 0 {
taskPlan.Task.Tags = tags
}
buildOutputs := atc.AggregatePlan{}
for _, output := range outputs {
writePipe, err := atcRequester.CreateRequest(
atc.WritePipe,
rata.Params{"pipe_id": output.Pipe.ID},
nil,
)
if err != nil {
return atc.Build{}, err
}
source := atc.Source{
"uri": writePipe.URL.String(),
}
params := atc.Params{
"directory": output.Name,
}
if targetProps.Token != nil {
source["authorization"] = targetProps.Token.Type + " " + targetProps.Token.Value
}
buildOutputs = append(buildOutputs, fact.NewPlan(atc.PutPlan{
Name: output.Name,
Type: "archive",
Source: source,
Params: params,
}))
}
//.........这里部分代码省略.........