drone-yaml/yaml/converter/gitlab/config.go

130 lines
3.2 KiB
Go
Raw Normal View History

2019-02-10 19:00:16 +00:00
// Copyright 2019 Drone.IO Inc. All rights reserved.
// Use of this source code is governed by the Drone Non-Commercial License
// that can be found in the LICENSE file.
2019-02-10 19:00:16 +00:00
2019-01-22 23:44:17 +00:00
package gitlab
import (
"github.com/drone/drone-yaml/yaml/converter/internal"
)
type (
// Config defines the pipeline configuration.
Config struct {
// Image specifies the Docker image with
// which we run your builds.
Image Image
// Stages is used to group steps into stages,
// where each stage is executed sequentially.
Stages []string
// Services is used to define a set of services
// that should be started and linked to each
// step in the pipeline.
Services []*Image
// Variables is used to customize execution,
// such as the clone strategy.
Variables map[string]string
// Before contains the list of bash commands
// that are executed in sequence before the
// first job.
Before internal.StringSlice `yaml:"before_script"`
// After contains the list of bash commands
// that are executed in sequence after the
// last job.
After internal.StringSlice `yaml:"after_script"`
// Jobs is used to define individual units
// of execution that make up a stage.
Jobs map[string]*Job `yaml:",inline"`
}
// Job defines a build execution unit.
Job struct {
// Name of the pipeline step.
Name string
// Stage is the name of the stage.
Stage string
// Image specifies the Docker image with
// which we run your builds.
Image Image
// Script contains the list of bash commands
// that are executed in sequence.
Script internal.StringSlice
// Before contains the list of bash commands
// that are executed in sequence before the
// primary script.
Before internal.StringSlice `yaml:"before_script"`
// After contains the list of bash commands
// that are executed in sequence after the
// primary script.
After internal.StringSlice `yaml:"after_script"`
// Services defines a set of services linked
// to the job.
Services []*Image
// Only defines the names of branches and tags
// for which the job will run.
Only internal.StringSlice
// Except defines the names of branches and tags
// for which the job will not run.
Except internal.StringSlice
// Variables is used to customize execution,
// such as the clone strategy.
Variables map[string]string
// Allow job to fail. Failed job doesnt contribute
// to commit status
AllowFailure bool
// Define when to run job. Can be on_success, on_failure,
// always or manual
When internal.StringSlice
}
// Image defines a Docker image.
Image struct {
Name string
Entrypoint []string
Command []string
Alias string
}
)
// UnmarshalYAML implements custom parsing for an Image.
func (i *Image) UnmarshalYAML(unmarshal func(interface{}) error) error {
var name string
err := unmarshal(&name)
if err == nil {
i.Name = name
return nil
}
data := struct {
Name string
Entrypoint internal.StringSlice
Command internal.StringSlice
Alias string
}{}
err = unmarshal(&data)
if err != nil {
return err
}
i.Name = data.Name
i.Entrypoint = data.Entrypoint
i.Command = data.Command
i.Alias = data.Alias
return nil
}