Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Interface ¶
type Interface interface {
// init method will generate an authenticated client that can be used to comunicate with Scm
// MUST set pipelineData.GitParentPath
Init(pipelineData *pipeline.Data, config config.Interface, client *http.Client) error
// Determine if this is a pull request or a push.
// if it's a pull request the scm must retrieve the pull request payload and return it
// if its a push, the scm must retrieve the push payload and return it
// CAN NOT override
// MUST set pipelineData.IsPullRequest
// RETURNS scm.Payload
RetrievePayload() (*Payload, error)
// start processing the payload, which should result in a local git repository that we
// can begin to test. Since this is a push, no packaging is required
// CAN NOT override
// MUST set pipelineData.GitLocalPath
// MUST set pipelineData.GitLocalBranch
// MUST set pipelienData.GitRemote
// MUST set pipelineData.GitHeadInfo
// SHOULD set pipelineData.NearestTagDetails
// REQUIRES pipelineData.GitParentPath
CheckoutPushPayload(payload *Payload) error
// all capsule CD processing will be kicked off via a payload. In Github's case, the payload is the pull request data.
// should check if the pull request opener even has permissions to create a release.
// all sources should process the payload by downloading a git repository that contains the master branch merged with the test branch
// CAN NOT override
// MUST set pipelineData.GitLocalPath
// MUST set pipelineData.GitLocalBranch
// MUST set pipelienData.GitRemote
// MUST set pipelineData.GitBaseInfo
// MUST set pipelineData.GitHeadInfo
// SHOULD set pipelineData.NearestTagDetails
// REQUIRES pipelineData.GitParentPath
CheckoutPullRequestPayload(payload *Payload) error
// The repository should now contain code that has been the merged, tested and version bumped.
// This method will push these changes to the source code repository
// this step should also do any scm specific releases (github release, asset uploading, etc)
// CAN override
// REQUIRES config.scm_repo_full_name
// REQUIRES pipelineData.ScmReleaseCommit
// REQUIRES pipelineData.GitLocalPath
// REQUIRES pipelineData.GitLocalBranch
// REQUIRES pipelineData.GitBaseInfo
// REQUIRES pipelineData.GitHeadInfo
// REQUIRES pipelineData.ReleaseArtifacts
// REQUIRES pipelineData.ReleaseVersion
// REQUIRES pipelineData.ReleaseCommit
// REQUIRES pipelineData.GitParentPath
// USES set pipelineData.NearestTagDetails
Publish() error //create release.
//Upload assets to SCM, and attach to SCM release if possible.
//Failing to upload Assets to SCM will not fail the publish (we'll retry 5 times)
//Should not be called directly, will be called via Publish()
//ReleaseData will be different for each SCM, but is probably a release ID that we can attach files to.
//REQUIRES config.scm_repo_full_name
//REQUIRES pipelineData.ReleaseAssets
//REQUIRES pipelineData.GitLocalPath
PublishAssets(releaseData interface{}) error
// optionally delete the PR branch after the code has been merged into master.
// only do so if:
// - "scm_enable_branch_cleanup" is true
// - HEAD PR branch is in the same repository as the BASE
// - branch is not the default branch or "master" for this repository
// - branch is not protected (SCM specific feature)
// CAN override
// USES scm_enable_branch_cleanup
// REQUIRES config.scm_repo_full_name
// REQUIRES pipelineData.GitBaseInfo.Repo.FullName
// REQUIRES pipelineData.GitHeadInfo.Repo.FullName
// REQUIRES pipelineData.GitHeadInfo.Ref
Cleanup() error
// Notify should update the scm with the build status at each stage.
// If the scm does not support notifications this should be a no-op
// In general, if the Notify method returns an error, we'll ignore it, and continue the pipeline.
// REQUIRES config.scm_repo_full_name
Notify(ref string, state string, message string) error
}
Create mock using: mockgen -source=pkg/scm/interface.go -destination=pkg/scm/mock/mock_scm.go
type Payload ¶
type Payload struct {
Head *pipeline.ScmCommitInfo
Base *pipeline.ScmCommitInfo
//Pull Request specific fields
Title string
PullRequestNumber string
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.