github.com/drone/go-convert@v0.0.0-20240307072510-6bd371c65e61/convert/travis/yaml/pipeline.go (about)

     1  // Copyright 2022 Harness, Inc.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package yaml
    16  
    17  type (
    18  	// Pipeline defines a gitlab pipeline.
    19  	// https://config.travis-ci.com/index
    20  	Pipeline struct {
    21  		Language      string         `yaml:"language,omitempty"`
    22  		OS            Stringorslice  `yaml:"os,omitempty"`
    23  		OSXImage      Stringorslice  `yaml:"osx_image,omitempty"`
    24  		Arch          Stringorslice  `yaml:"arch,omitempty"`
    25  		Addons        *Addons        `yaml:"addons,omitempty"`
    26  		Branches      *Branches      `yaml:"branches,omitempty"`
    27  		Cache         *Cache         `yaml:"cache,omitempty"`
    28  		Compiler      Stringorslice  `yaml:"compiler,omitempty"`
    29  		Deploy        interface{}    `yaml:"deploy,omitempty"` // TODO
    30  		Dist          string         `yaml:"dist,omitempty"`
    31  		Env           *Env           `yaml:"env,omitempty"`
    32  		Git           *Git           `yaml:"git,omitempty"`
    33  		If            string         `yaml:"if,omitempty"`
    34  		Import        *Imports       `yaml:"import,omitempty"`
    35  		Jobs          *Jobs          `yaml:"jobs,omitempty"`
    36  		Notifications *Notifications `yaml:"notifications,omitempty"` // TODO
    37  		Services      Stringorslice  `yaml:"services,omitempty"`
    38  		Stages        *Stages        `yaml:"stages,omitempty"`
    39  		Version       string         `yaml:"version,omitempty"`
    40  
    41  		BeforeInstall Stringorslice `yaml:"before_install,omitempty"`
    42  		Install       Stringorslice `yaml:"install,omitempty"`
    43  		BeforeScript  Stringorslice `yaml:"before_script,omitempty"`
    44  		Script        Stringorslice `yaml:"script,omitempty"`
    45  		BeforeCache   Stringorslice `yaml:"before_cache,omitempty"`
    46  		AfterSuccess  Stringorslice `yaml:"after_success,omitempty"`
    47  		AfterFailure  Stringorslice `yaml:"after_failure,omitempty"`
    48  		BeforeDeploy  Stringorslice `yaml:"before_deploy,omitempty"`
    49  		AfterDeploy   Stringorslice `yaml:"after_deploy,omitempty"`
    50  		AfterScript   Stringorslice `yaml:"after_script,omitempty"`
    51  
    52  		//
    53  		// Language Keywords
    54  		//
    55  
    56  		// Android
    57  		// https://config.travis-ci.com/ref/language/android
    58  		Android interface{} `yaml:"android,omitempty"` // matrix expand key (TODO)
    59  
    60  		// Clojure
    61  		Lein string `yaml:"lein,omitempty"`
    62  
    63  		// Crystal
    64  		Crystal Stringorslice `yaml:"crystal,omitempty"` // matrix expand key
    65  
    66  		// D
    67  		D Stringorslice `yaml:"d,omitempty"` // matrix expand key
    68  
    69  		// Dart Language
    70  		Dart                 Stringorslice `yaml:"dart,omitempty"`      // matrix expand key
    71  		DartTask             interface{}   `yaml:"dart_task,omitempty"` // matrix expand key (TODO)
    72  		DartWithContentShell bool          `yaml:"with_content_shell,omitempty"`
    73  
    74  		// Dotnet Language (C#)
    75  		Dotnet         Stringorslice `yaml:"dotnet,omitempty"`   // matrix expand key
    76  		DotnetMono     Stringorslice `yaml:"mono,omitempty"`     // matrix expand key
    77  		DotnetSolution Stringorslice `yaml:"solution,omitempty"` // matrix expand key
    78  
    79  		// Elixir Language
    80  		Elixir Stringorslice `yaml:"elixir,omitempty"` // matrix expand key
    81  
    82  		// Elm Language
    83  		Elm       Stringorslice `yaml:"elm,omitempty"` // matrix expand key
    84  		ElmFormat string        `yaml:"elm_format,omitempty"`
    85  		ElmTest   string        `yaml:"elm_test,omitempty"`
    86  
    87  		// Erlang Language
    88  		ErlangOTP Stringorslice `yaml:"otp_release,omitempty"` // matrix expand key
    89  
    90  		// Go Language
    91  		Go           Stringorslice `yaml:"go,omitempty"` // matrix expand key
    92  		GoBuildArgs  string        `yaml:"gobuild_args,omitempty"`
    93  		GoImportPath string        `yaml:"go_import_path,omitempty"`
    94  
    95  		// Hack Language
    96  		HHVM Stringorslice `yaml:"hhvm,omitempty"` // matrix expand key
    97  
    98  		// Haxe Language
    99  		Haxe     Stringorslice `yaml:"haxe,omitempty"` // matrix expand key
   100  		HaxeXML  Stringorslice `yaml:"hxml,omitempty"`
   101  		HaxeNeko string        `yaml:"neko,omitempty"`
   102  
   103  		// Haskell Language
   104  		GHC Stringorslice `yaml:"ghc,omitempty"` // matrix expand key
   105  
   106  		// Java Language
   107  		JDK Stringorslice `yaml:"jdk,omitempty"` // matrix expand key
   108  
   109  		// Javascript Language
   110  		Node        Stringorslice `yaml:"node_js,omitempty"` // matrix expand key
   111  		NodeNpmArgs string        `yaml:"npm_args,omitempty"`
   112  
   113  		// Julia Language
   114  		Julia Stringorslice `yaml:"julia,omitempty"` // matrix expand key
   115  
   116  		// Matlab Language
   117  		Matlab Stringorslice `yaml:"matlab,omitempty"` // matrix expand key
   118  
   119  		// Nix Language
   120  		Nix Stringorslice `yaml:"nix,omitempty"` // matrix expand key
   121  
   122  		// ObjectiveC
   123  		XcodeScheme      Stringorslice `yaml:"xcode_scheme,omitempty"` // matrix expand key
   124  		XcodeSDK         Stringorslice `yaml:"xcode_sdk,omitempty"`    // matrix expand key
   125  		XcodeDestination string        `yaml:"xcode_destination,omitempty"`
   126  		XcodeProject     string        `yaml:"xcode_project,omitempty"`
   127  		XcodeToolArgs    string        `yaml:"xctool_args,omitempty"`
   128  		XcodePodfile     string        `yaml:"xctool_podfile,omitempty"`
   129  
   130  		// Php Language
   131  		PHP             Stringorslice `yaml:"php,omitempty"` // matrix expand key
   132  		PHPComposerArgs string        `yaml:"composer_args,omitempty"`
   133  
   134  		// Perl Language
   135  		Perl  Stringorslice `yaml:"perl,omitempty"`  // matrix expand key
   136  		Perl6 Stringorslice `yaml:"perl6,omitempty"` // matrix expand key
   137  
   138  		// Python Langauge
   139  		Python                Stringorslice          `yaml:"python,omitempty"` // matrix expand key
   140  		PythonVirtualenv      map[string]interface{} `yaml:"virtualenv,omitempty"`
   141  		PythonVirtualenvAlias map[string]interface{} `yaml:"virtual_env,omitempty"`
   142  
   143  		// R Langauge
   144  		// https://config.travis-ci.com/ref/language/r
   145  		R               Stringorslice `yaml:"r,omitempty"` // matrix expand key
   146  		RPackage        Stringorslice `yaml:"r_packages,omitempty"`
   147  		RBinaryPackages Stringorslice `yaml:"r_binary_packages,omitempty"`
   148  		RGithubPackage  Stringorslice `yaml:"r_github_packages,omitempty"`
   149  
   150  		// Ruby Language
   151  		Ruby            Stringorslice `yaml:"ruby,omitempty"`  // matrix expand key
   152  		RubyRVM         Stringorslice `yaml:"rvm,omitempty"`   // alias for ruby
   153  		RubyRBenv       Stringorslice `yaml:"rbenv,omitempty"` // alias for ruby
   154  		RubyGemfile     Stringorslice `yaml:"gemfile,omitempty"`
   155  		RubyGemfiles    Stringorslice `yaml:"gemfiles,omitempty"` // alias for gemfile
   156  		RubyBundlerArgs string        `yaml:"bundler_args,omitempty"`
   157  
   158  		// Rust Langauge
   159  		Rust Stringorslice `yaml:"rust,omitempty"` // matrix expand key
   160  
   161  		// Scala Langauge
   162  		Scala        Stringorslice `yaml:"scala,omitempty"` // matrix expand key
   163  		ScalaSbtArgs string        `yaml:"sbt_args,omitempty"`
   164  
   165  		// Smalltalk Language
   166  		Smalltalk       Stringorslice `yaml:"smalltalk,omitempty"`        // matrix expand key
   167  		SmalltalkConfig Stringorslice `yaml:"smalltalk_config,omitempty"` // matrix expand key
   168  		SmalltalkVM     Stringorslice `yaml:"smalltalk_vm,omitempty"`     // matrix expand key
   169  	}
   170  )