pulumi/pkg/backend/updates.go

126 lines
5.2 KiB
Go
Raw Permalink Normal View History

2018-05-22 19:43:36 +00:00
// Copyright 2016-2018, Pulumi Corporation.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package backend
import (
"github.com/pulumi/pulumi/pkg/v3/display"
"github.com/pulumi/pulumi/sdk/v3/go/common/apitype"
"github.com/pulumi/pulumi/sdk/v3/go/common/resource/config"
)
// UpdateMetadata describes optional metadata about an update.
type UpdateMetadata struct {
// Message is an optional message associated with the update.
Message string `json:"message"`
// Environment contains optional data from the deploying environment. e.g. the current
// source code control commit information.
Environment map[string]string `json:"environment"`
}
// UpdateResult is an enum for the result of the update.
type UpdateResult string
const (
// InProgressResult is for updates that have not yet completed.
InProgressResult UpdateResult = "in-progress"
// SucceededResult is for updates that completed successfully.
SucceededResult UpdateResult = "succeeded"
// FailedResult is for updates that have failed.
FailedResult UpdateResult = "failed"
)
// Keys we use for values put into UpdateInfo.Environment.
const (
// GitHead is the commit hash of HEAD.
GitHead = "git.head"
// GitHeadName is the name of the HEAD ref. e.g. "refs/heads/master" or "refs/tags/v1.0.0".
GitHeadName = "git.headName"
2019-03-19 18:35:17 +00:00
// GitDirty ("true", "false") indicates if there are any unstaged or modified files in the local repo.
GitDirty = "git.dirty"
// GitCommitter is the name of the person who committed the commit at HEAD.
GitCommitter = "git.committer"
// GitCommitterEmail is the Email address associated with the committer.
GitCommitterEmail = "git.committer.email"
// GitAuthor is the name of the person who authored the commit at HEAD.
GitAuthor = "git.author"
// GitAuthorEmail is the email address associated with the commit's author.
GitAuthorEmail = "git.author.email"
// VCSRepoOwner is the user who owns the local repo, if the origin remote is a cloud host.
VCSRepoOwner = "vcs.owner"
// VCSRepoName is the name of the repo, if the local git repo's remote origin is a cloud host.
VCSRepoName = "vcs.repo"
all: Reformat with gofumpt Per team discussion, switching to gofumpt. [gofumpt][1] is an alternative, stricter alternative to gofmt. It addresses other stylistic concerns that gofmt doesn't yet cover. [1]: https://github.com/mvdan/gofumpt See the full list of [Added rules][2], but it includes: - Dropping empty lines around function bodies - Dropping unnecessary variable grouping when there's only one variable - Ensuring an empty line between multi-line functions - simplification (`-s` in gofmt) is always enabled - Ensuring multi-line function signatures end with `) {` on a separate line. [2]: https://github.com/mvdan/gofumpt#Added-rules gofumpt is stricter, but there's no lock-in. All gofumpt output is valid gofmt output, so if we decide we don't like it, it's easy to switch back without any code changes. gofumpt support is built into the tooling we use for development so this won't change development workflows. - golangci-lint includes a gofumpt check (enabled in this PR) - gopls, the LSP for Go, includes a gofumpt option (see [installation instrutions][3]) [3]: https://github.com/mvdan/gofumpt#installation This change was generated by running: ```bash gofumpt -w $(rg --files -g '*.go' | rg -v testdata | rg -v compilation_error) ``` The following files were manually tweaked afterwards: - pkg/cmd/pulumi/stack_change_secrets_provider.go: one of the lines overflowed and had comments in an inconvenient place - pkg/cmd/pulumi/destroy.go: `var x T = y` where `T` wasn't necessary - pkg/cmd/pulumi/policy_new.go: long line because of error message - pkg/backend/snapshot_test.go: long line trying to assign three variables in the same assignment I have included mention of gofumpt in the CONTRIBUTING.md.
2023-03-03 16:36:39 +00:00
// VCSRepoKind is the cloud host where the repo is hosted.
VCSRepoKind = "vcs.kind"
// VCSRepoRoot is the root directory of the project in the repo.
VCSRepoRoot = "vcs.root"
// CISystem is the name of the CI system running the pulumi operation.
CISystem = "ci.system"
2018-08-08 21:12:47 +00:00
// CIBuildID is an opaque ID of the build in the CI system.
CIBuildID = "ci.build.id"
// CIBuildNumber is a sequentially incrementing number specific for a project/repo.
// This value is only set for CI systems that have separate Build ID and a Build Number.
// If this value is blank, use `CIBuildID` always.
CIBuildNumer = "ci.build.number"
2018-08-08 21:12:47 +00:00
// CIBuildType is the type of build of the CI system, e.g. "push", "pull_request", "test_only".
CIBuildType = "ci.build.type"
// CIBuildURL is a URL to get more information about the particular CI build.
CIBuildURL = "ci.build.url"
// CIPRHeadSHA is the SHA of the HEAD commit of a pull request running on CI. This is needed since the CI
// server will run at a different, merge commit. (headSHA merged into the target branch.)
CIPRHeadSHA = "ci.pr.headSHA"
// CIPRNumber is the PR number, for which the current CI job may be executing.
// Combining this information with the `VCSRepoKind` will give us the PR URL.
CIPRNumber = "ci.pr.number"
// ExecutionKind indicates how the update was executed. One of "cli", "auto.local", or "auto.inline".
ExecutionKind = "exec.kind"
// ExecutionAgent indicates the user agent of the updater for automated scenarios (GHA, Kubernetes Operator).
ExecutionAgent = "exec.agent"
// UpdatePlan ("true", "false") indicates if an explicit update plan was used for the update (either
// saving one, or constraining to one).
UpdatePlan = "updatePlan"
// StackEnvironments indicates the list of ESC environments imported by the stack being updated.
StackEnvironments = "stack.environments"
)
// UpdateInfo describes a previous update.
type UpdateInfo struct {
// Information known before an update is started.
Kind apitype.UpdateKind `json:"kind"`
StartTime int64 `json:"startTime"`
// Message is an optional message associated with the update.
Message string `json:"message"`
// Environment contains optional data from the deploying environment. e.g. the current
// source code control commit information.
Environment map[string]string `json:"environment"`
// Config used for the update.
Config config.Map `json:"config"`
// Information obtained from an update completing.
Version int `json:"version"`
Result UpdateResult `json:"result"`
EndTime int64 `json:"endTime"`
ResourceChanges display.ResourceChanges `json:"resourceChanges,omitempty"`
}