drone-yaml/yaml/converter/gitlab/config.go
2019-02-21 12:48:45 -08:00

130 lines
3.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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.
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
}