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 Community
|
|
|
|
|
// License that can be found in the LICENSE file.
|
|
|
|
|
|
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 doesn’t 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
|
|
|
|
|
}
|