Documentation ¶
Index ¶
- func UpgradeConfig(cfgBytes []byte, disterFactory distgo.DisterFactory, ...) ([]byte, error)
- type Almanac
- type BinDist
- type Build
- type Dist
- type DistInfo
- type DistInfoType
- type DockerDep
- type DockerImage
- type DockerImageInfo
- type ManualDist
- type OSArchBinDist
- type Product
- type Project
- type Publish
- type RPMDist
- type RawDistConfigs
- type Run
- type SLSDist
- type SLSDockerImageInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func UpgradeConfig ¶
func UpgradeConfig( cfgBytes []byte, disterFactory distgo.DisterFactory, dockerBuilderFactory distgo.DockerBuilderFactory, publisherFactory distgo.PublisherFactory) ([]byte, error)
Types ¶
type Almanac ¶
type Almanac struct { versionedconfig.ConfigWithLegacy `yaml:",inline"` // Metadata contains the metadata provided to the Almanac publish task. Metadata map[string]string `yaml:"metadata"` // Tags contains the tags provided to the Almanac publish task. Tags []string `yaml:"tags"` }
type BinDist ¶
type BinDist struct { versionedconfig.ConfigWithLegacy `yaml:",inline,omitempty"` // OmitInitSh specifies whether or not the distribution should omit the auto-generated initialization script for the // product (a script in the "bin" directory that chooses the binary to invoke based on the host platform). If the // value is present and false, then the initialization script will be generated; otherwise, it will not. OmitInitSh *bool `yaml:"omit-init-sh,omitempty"` // InitShTemplateFile is the relative path to the template that should be used to generate the "init.sh" script. // If the value is absent, the default template will be used. InitShTemplateFile string `yaml:"init-sh-template-file,omitempty"` }
type Build ¶
type Build struct { // Skip specifies whether the build step should be skipped entirely. Its primary use is for products that handle // their own build logic in the "dist" step ("dist-only" products). Skip bool `yaml:"skip,omitempty"` // Script is the content of a script that is written to file a file and run before this product is built. The // contents of this value are written to a file with a header `#!/bin/bash` and executed. The script process // inherits the environment variables of the Go process and also has the following environment variables // defined: // // PROJECT_DIR: the root directory of project // PRODUCT: product name // VERSION: product version // IS_SNAPSHOT: 1 if the version contains a git hash as part of the string, 0 otherwise Script string `yaml:"script,omitempty"` // MainPkg is the location of the main package for the product relative to the root directory. For example, // "./distgo/main". MainPkg string `yaml:"main-pkg,omitempty"` // OutputDir is the directory to which the executable is written. OutputDir string `yaml:"output-dir,omitempty"` // BuildArgsScript is the content of a script that is written to a file and run before this product is built // to provide supplemental build arguments for the product. The contents of this value are written to a file // with a header `#!/bin/bash` and executed. The script process inherits the environment variables of the Go // process. Each line of output of the script is provided to the "build" command as a separate argument. For // example, the following script would add the arguments "-ldflags" "-X" "main.year=$YEAR" to the build command: // // build-args-script: | // YEAR=$(date +%Y) // echo "-ldflags" // echo "-X" // echo "main.year=$YEAR" BuildArgsScript string `yaml:"build-args-script,omitempty"` // VersionVar is the path to a variable that is set with the version information for the build. For example, // "github.com/palantir/godel/v2/cmd/godel.Version". If specified, it is provided to the "build" command as an // ldflag. VersionVar string `yaml:"version-var,omitempty"` // Environment specifies values for the environment variables that should be set for the build. For example, // the following sets CGO to false: // // environment: // CGO_ENABLED: "0" Environment map[string]string `yaml:"environment,omitempty"` // OSArchs specifies the GOOS and GOARCH pairs for which the product is built. If blank, defaults to the GOOS // and GOARCH of the host system at runtime. OSArchs []osarch.OSArch `yaml:"os-archs,omitempty"` }
type Dist ¶
type Dist struct { // OutputDir is the directory to which the distribution is written. OutputDir string `yaml:"output-dir,omitempty"` // Path is the path (from the project root) to a directory whose contents will be copied into the output // distribution directory at the beginning of the "dist" command. Can be used to include static resources and // other files required in a distribution. InputDir string `yaml:"input-dir,omitempty"` // InputProducts is a slice of the names of products in the project (other than the current one) whose binaries // are required for the "dist" task. The "dist" task will ensure that the outputs of "build" exist for all of // the products specified in this slice (and will build the products as part of the task if necessary) and make // the outputs available to the "dist" script as environment variables. Note that the "dist" task only // guarantees that the products will be built and their locations will be available in the environment variables // provided to the script -- it is the responsibility of the user to write logic in the dist script to copy the // generated binaries. InputProducts []string `yaml:"input-products,omitempty"` // Script is the content of a script that is written to file a file and run after the initial distribution // process but before the artifact generation process. The contents of this value are written to a file with a // header `#!/bin/bash` with the contents of the global `dist-script-include` prepended and executed. The script // process inherits the environment variables of the Go process and also has the following environment variables // defined: // // DIST_DIR: the absolute path to the root directory of the distribution created for the current product // PROJECT_DIR: the root directory of project // PRODUCT: product name // VERSION: product version // IS_SNAPSHOT: 1 if the version contains a git hash as part of the string, 0 otherwise Script string `yaml:"script,omitempty"` // DistType specifies the type of the distribution to be built and configuration for it. If unspecified, // defaults to a DistInfo of type OSArchBinDistType. DistType DistInfo `yaml:"dist-type,omitempty"` // Publish is the configuration for the "publish" task. Publish Publish `yaml:"publish,omitempty"` }
type DistInfo ¶
type DistInfo struct { // Type is the type of the distribution. Value should be a valid value defined by DistInfoType. Type string `yaml:"type,omitempty"` // Info is the configuration content of the dist info. Info interface{} `yaml:"info,omitempty"` }
func (*DistInfo) UnmarshalYAML ¶
type DistInfoType ¶
type DistInfoType string
const ( SLSDistType DistInfoType = "sls" // distribution that uses the Standard Layout Specification BinDistType DistInfoType = "bin" // distribution that includes all of the binaries for a product RPMDistType DistInfoType = "rpm" // RPM distribution OSArchBinDistType DistInfoType = "os-arch-bin" // distribution that consists of the binaries for a specific OS/Architecture ManualDistType DistInfoType = "manual" // distribution that consists of a distribution whose output is created by the distribution script )
type DockerImage ¶
type DockerImage struct { Repository string `yaml:"repository,omitempty"` Tag string `yaml:"tag,omitempty"` ContextDir string `yaml:"context-dir,omitempty"` Deps []DockerDep `yaml:"dependencies,omitempty"` Info DockerImageInfo `yaml:"info,omitempty"` BuildArgsScript string `yaml:"build-args-script,omitempty"` }
type DockerImageInfo ¶
type DockerImageInfo struct { Type string `yaml:"type,omitempty"` Data interface{} `yaml:"data,omitempty"` }
func (*DockerImageInfo) UnmarshalYAML ¶
func (cfg *DockerImageInfo) UnmarshalYAML(unmarshal func(interface{}) error) error
type ManualDist ¶
type ManualDist struct { versionedconfig.ConfigWithLegacy `yaml:",inline,omitempty"` // Extension is the extension used by the target output generated by the dist script: for example, "tgz", // "zip", etc. Extension is used to locate the output generated by the dist script. The output should be a file // of the form "{{product-name}}-{{version}}.{{Extension}}". If Extension is empty, it is assumed that the // output has no extension and is of the form "{{product-name}}-{{version}}". Extension string `yaml:"extension,omitempty"` }
type OSArchBinDist ¶
type OSArchBinDist struct { versionedconfig.ConfigWithLegacy `yaml:",inline,omitempty"` // OSArchs specifies the GOOS and GOARCH pairs for which TGZ distributions are created. If blank, defaults to // the GOOS and GOARCH of the host system at runtime. OSArchs []osarch.OSArch `yaml:"os-archs,omitempty"` }
type Product ¶
type Product struct { // Build specifies the build configuration for the product. Build Build `yaml:"build,omitempty"` // Run specifies the run configuration for the product. Run Run `yaml:"run,omitempty"` // Dist specifies the dist configurations for the product. Dist RawDistConfigs `yaml:"dist,omitempty"` // DockerImages specifies the docker build configurations for the product. DockerImages []DockerImage `yaml:"docker,omitempty"` // DefaultPublish specifies the publish configuration that is applied to distributions that do not specify their // own publish configurations. DefaultPublish Publish `yaml:"publish,omitempty"` }
type Project ¶
type Project struct { versionedconfig.ConfigWithLegacy `yaml:",inline,omitempty"` // Products maps product names to configurations. Products map[string]Product `yaml:"products,omitempty"` // BuildOutputDir specifies the default build output directory for products executables built by the "build" // command. The executables generated by "build" will be written to this directory unless the location is // overridden by the product-specific configuration. BuildOutputDir string `yaml:"build-output-dir,omitempty"` // DistOutputDir specifies the default distribution output directory for product distributions created by the // "dist" command. The distribution directory and artifact generated by "dist" will be written to this directory // unless the location is overridden by the product-specific configuration. DistOutputDir string `yaml:"dist-output-dir,omitempty"` // DistScriptInclude is script content that is prepended to any non-empty ProductDistCfg.Script. It can be used // to define common functionality used in the distribution script for multiple different products. DistScriptInclude string `yaml:"dist-script-include,omitempty"` // GroupID is the identifier used as the group ID for the POM. GroupID string `yaml:"group-id,omitempty"` // Exclude matches the paths to exclude when determining the projects to build. Exclude matcher.NamesPathsCfg `yaml:"exclude,omitempty"` }
type RPMDist ¶
type RPMDist struct { versionedconfig.ConfigWithLegacy `yaml:",inline,omitempty"` // Release is the release identifier that forms part of the name/version/release/architecture quadruplet // uniquely identifying the RPM package. Default is "1". Release string `yaml:"release,omitempty"` // ConfigFiles is a slice of absolute paths within the RPM that correspond to configuration files. RPM // identifies these as mutable. Default is no files. ConfigFiles []string `yaml:"config-files,omitempty"` // BeforeInstallScript is the content of shell script to run before this RPM is installed. Optional. BeforeInstallScript string `yaml:"before-install-script,omitempty"` // AfterInstallScript is the content of shell script to run immediately after this RPM is installed. Optional. AfterInstallScript string `yaml:"after-install-script,omitempty"` // AfterRemoveScript is the content of shell script to clean up after this RPM is removed. Optional. AfterRemoveScript string `yaml:"after-remove-script,omitempty"` }
type RawDistConfigs ¶
type RawDistConfigs []Dist
func (*RawDistConfigs) UnmarshalYAML ¶
func (out *RawDistConfigs) UnmarshalYAML(unmarshal func(interface{}) error) error
type Run ¶
type Run struct { // Args contain the arguments provided to the product when invoked using the "run" task. Args []string `yaml:"args,omitempty"` }
type SLSDist ¶
type SLSDist struct { versionedconfig.ConfigWithLegacy `yaml:",inline,omitempty"` // InitShTemplateFile is the path to a template file that is used as the basis for the init.sh script of the // distribution. The path is relative to the project root directory. The contents of the file is processed using // Go templates and is provided with a distgo.ProductBuildSpec struct. If omitted, the default init.sh script // is used. InitShTemplateFile string `yaml:"init-sh-template-file,omitempty"` // ManifestTemplateFile is the path to a template file that is used as the basis for the manifest.yml file of // the distribution. The path is relative to the project root directory. The contents of the file is processed // using Go templates and is provided with a distgo.ProductBuildSpec struct. ManifestTemplateFile string `yaml:"manifest-template-file,omitempty"` // ServiceArgs is the string provided as the service arguments for the default init.sh file generated for the distribution. ServiceArgs string `yaml:"service-args,omitempty"` // ProductType is the SLS product type for the distribution. ProductType string `yaml:"product-type,omitempty"` // ManifestExtensions contain the SLS manifest extensions for the distribution. ManifestExtensions map[string]interface{} `yaml:"manifest-extensions,omitempty"` // Reloadable will enable the `init.sh reload` command which sends SIGHUP to the process. Reloadable bool `yaml:"reloadable,omitempty"` // YMLValidationExclude specifies a matcher used to specify YML files or paths that should not be validated as // part of creating the distribution. By default, the SLS distribution task verifies that all "*.yml" and // "*.yaml" files in the distribution are syntactically valid. If a distribution is known to ship with YML files // that are not valid YML, this parameter can be used to exclude those files from validation. YMLValidationExclude matcher.NamesPathsCfg `yaml:"yml-validation-exclude,omitempty"` }
Click to show internal directories.
Click to hide internal directories.