1. 示例简介
华为云流水线CodeArtsPipeline服务可以帮助客户快速搭建和灵活编排从编译构建-代码检查-测试-部署的机制自动化持续交付能力,帮助研发团队有效减少手工操作和提升应用发布效率。
该示例展示如何通过 CodeArtsPipeline Go SDK 进行创建流水线操作。
3. 安装SDK
使用服务端SDK前,您需要安装“huaweicloud-sdk-codeartspipeline”,具体的SDK版本号请参见 SDK开发中心 。
使用go get安装华为云Go SDK,执行如下命令安装华为云Go SDK库以及相关依赖库,命令如下:
Copied!
go get github.com/huaweicloud/huaweicloud-sdk-go-v3
4. 示例代码
Copied!
package main
import (
"fmt"
coreBasic "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
codeartspipeline "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/codeartspipeline/v2"
codeartspipelineModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/codeartspipeline/v2/model"
codeartspipelineRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/codeartspipeline/v2/region"
"log"
"os"
)
type CreatePipelineNewDemo struct{}
func NewCreatePipelineNewDemoDefault() CreatePipelineNewDemo {
c := CreatePipelineNewDemo{}
return c
}
func main() {
createPipeAk := os.Getenv("HUAWEICLOUD_SDK_AK")
createPipeSk := os.Getenv("HUAWEICLOUD_SDK_SK")
createPipeProjectId := "<Corresponding region Iam Project Id>"
createPipeRegion := codeartspipelineRegion.ValueOf("cn-north-4")
createPipeAuth := coreBasic.NewCredentialsBuilder().WithAk(createPipeAk).WithSk(createPipeSk).WithProjectId(createPipeProjectId).Build()
codeArtsPipelineClient := *codeartspipeline.NewCodeArtsPipelineClient(codeartspipeline.CodeArtsPipelineClientBuilder().
WithCredential(createPipeAuth).
WithRegion(createPipeRegion).
Build())
log.Println("start to create a pipeline")
createPipelineNewRequest := codeartspipelineModel.CreatePipelineNewRequest{}
codeArtsProjectId := "<ProjectId your pipeline belongs to>"
createPipelineNewRequest.ProjectId = codeArtsProjectId
pipelineDTO := codeartspipelineModel.PipelineDto{}
pipelineName := "<Name of the pipeline to be created>"
description := "<Description of the pipeline to be created>"
isPublish := false
manifestVersion := "<Pipeline Manifest Version, default to 3.0>"
definition := "<Definition of pipeline structure>"
pipelineDTO.Name = &pipelineName
pipelineDTO.Description = &description
pipelineDTO.IsPublish = &isPublish
pipelineDTO.ManifestVersion = &manifestVersion
pipelineDTO.Definition = &definition
codeSource := generateCodeSource()
customVariable := generateCustomVariables()
sources := append([]codeartspipelineModel.CodeSource{}, codeSource)
pipelineDTO.Sources = &sources
variables := append([]codeartspipelineModel.CustomVariable{}, customVariable)
pipelineDTO.Variables = &variables
createPipelineNewRequest.Body = &pipelineDTO
response, err := codeArtsPipelineClient.CreatePipelineNew(&createPipelineNewRequest)
if err != nil {
fmt.Println(err)
return
}
log.Printf("create pipeline with projectId:%+v, pipelineDto:%+v, result:%+v", codeArtsProjectId, pipelineDTO, response)
}
func generateCodeSource() codeartspipelineModel.CodeSource {
gitType := "<Git type>"
gitUrl := "<Git link>"
sshGitUrl := "<Ssh git link>"
webUrl := "<Web page url>"
repoName := "<Pipeline source name>"
defaultBranch := "<Default branch>"
codehubId := "<CodeHub code repository ID>"
endpointId := "<Extension point ID>"
alias := "<Code repository alias>"
codeSourceParams := codeartspipelineModel.CodeSourceParams{
GitType: &gitType,
GitUrl: &gitUrl,
SshGitUrl: &sshGitUrl,
WebUrl: &webUrl,
RepoName: &repoName,
DefaultBranch: &defaultBranch,
CodehubId: &codehubId,
EndpointId: &endpointId,
Alias: &alias,
}
codeSourceType := "<Pipeline Source Type>"
codeSource := codeartspipelineModel.CodeSource{
Type: &codeSourceType,
Params: &codeSourceParams,
}
return codeSource
}
func generateCustomVariables() codeartspipelineModel.CustomVariable {
name := "<Custom parameter name>"
sequence := int32(1)
paramType := "<Custom Parameter Type>"
paramValue := "<Default values of customized parameters>"
paramDescription := "<User-defined Parameter Description>"
isRuntime := false
isSecret := false
isReset := false
latestValue := "<Latest Parameter Value>"
limit := make([]interface{}, 0)
customVariable := codeartspipelineModel.CustomVariable{
Name: &name,
Sequence: &sequence,
Type: ¶mType,
Value: ¶mValue,
Description: ¶mDescription,
IsRuntime: &isRuntime,
IsSecret: &isSecret,
IsReset: &isReset,
LatestValue: &latestValue,
Limits: &limit,
}
return customVariable
}
相关参数说明如下所示:
- createPipeAk:华为云账号Access Key。
- createPipeSk:华为云账号Secret Access Key。
- createPipeRegion:服务所在区域。
1. 示例简介
华为云流水线CodeArtsPipeline服务可以帮助客户快速搭建和灵活编排从编译构建-代码检查-测试-部署的机制自动化持续交付能力,帮助研发团队有效减少手工操作和提升应用发布效率。
该示例展示如何通过 CodeArtsPipeline Go SDK 进行创建流水线操作。
2. 开发前准备
3. 安装SDK
使用服务端SDK前,您需要安装“huaweicloud-sdk-codeartspipeline”,具体的SDK版本号请参见 SDK开发中心 。 使用go get安装华为云Go SDK,执行如下命令安装华为云Go SDK库以及相关依赖库,命令如下:
4. 示例代码
package main import ( "fmt" coreBasic "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" codeartspipeline "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/codeartspipeline/v2" codeartspipelineModel "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/codeartspipeline/v2/model" codeartspipelineRegion "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/codeartspipeline/v2/region" "log" "os" ) type CreatePipelineNewDemo struct{} func NewCreatePipelineNewDemoDefault() CreatePipelineNewDemo { c := CreatePipelineNewDemo{} return c } func main() { // 初始化必要参数及客户端 // 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 createPipeAk := os.Getenv("HUAWEICLOUD_SDK_AK") createPipeSk := os.Getenv("HUAWEICLOUD_SDK_SK") // 注意,如下的createPipeProjectId请使用华为云console->iam我的凭证->对应region所属项目的项目ID createPipeProjectId := "<Corresponding region Iam Project Id>" // 所需请求的region信息 createPipeRegion := codeartspipelineRegion.ValueOf("cn-north-4") // 配置认证信息 createPipeAuth := coreBasic.NewCredentialsBuilder().WithAk(createPipeAk).WithSk(createPipeSk).WithProjectId(createPipeProjectId).Build() // 创建服务客户端 codeArtsPipelineClient := *codeartspipeline.NewCodeArtsPipelineClient(codeartspipeline.CodeArtsPipelineClientBuilder(). WithCredential(createPipeAuth). WithRegion(createPipeRegion). Build()) // 创建流水线 log.Println("start to create a pipeline") createPipelineNewRequest := codeartspipelineModel.CreatePipelineNewRequest{} // 流水线所属的项目ID codeArtsProjectId := "<ProjectId your pipeline belongs to>" createPipelineNewRequest.ProjectId = codeArtsProjectId // 设置流水线基本信息 pipelineDTO := codeartspipelineModel.PipelineDto{} pipelineName := "<Name of the pipeline to be created>" description := "<Description of the pipeline to be created>" // 是否为发布流水线 isPublish := false // 流水线版本信息,新版默认为3.0 manifestVersion := "<Pipeline Manifest Version, default to 3.0>" // 流水线定义信息 definition := "<Definition of pipeline structure>" pipelineDTO.Name = &pipelineName pipelineDTO.Description = &description pipelineDTO.IsPublish = &isPublish pipelineDTO.ManifestVersion = &manifestVersion pipelineDTO.Definition = &definition // 设置流水线代码源 codeSource := generateCodeSource() // 设置流水线自定义参数 customVariable := generateCustomVariables() sources := append([]codeartspipelineModel.CodeSource{}, codeSource) pipelineDTO.Sources = &sources variables := append([]codeartspipelineModel.CustomVariable{}, customVariable) pipelineDTO.Variables = &variables createPipelineNewRequest.Body = &pipelineDTO response, err := codeArtsPipelineClient.CreatePipelineNew(&createPipelineNewRequest) if err != nil { fmt.Println(err) return } log.Printf("create pipeline with projectId:%+v, pipelineDto:%+v, result:%+v", codeArtsProjectId, pipelineDTO, response) } func generateCodeSource() codeartspipelineModel.CodeSource { gitType := "<Git type>" gitUrl := "<Git link>" sshGitUrl := "<Ssh git link>" webUrl := "<Web page url>" repoName := "<Pipeline source name>" defaultBranch := "<Default branch>" codehubId := "<CodeHub code repository ID>" endpointId := "<Extension point ID>" alias := "<Code repository alias>" codeSourceParams := codeartspipelineModel.CodeSourceParams{ GitType: &gitType, GitUrl: &gitUrl, SshGitUrl: &sshGitUrl, WebUrl: &webUrl, RepoName: &repoName, DefaultBranch: &defaultBranch, CodehubId: &codehubId, EndpointId: &endpointId, Alias: &alias, } codeSourceType := "<Pipeline Source Type>" codeSource := codeartspipelineModel.CodeSource{ Type: &codeSourceType, Params: &codeSourceParams, } return codeSource } func generateCustomVariables() codeartspipelineModel.CustomVariable { name := "<Custom parameter name>" // User-defined Parameter Sequence sequence := int32(1) paramType := "<Custom Parameter Type>" paramValue := "<Default values of customized parameters>" paramDescription := "<User-defined Parameter Description>" // Indicates whether to set during running. isRuntime := false // Indicates whether the parameter is private. isSecret := false // Reset or Not isReset := false latestValue := "<Latest Parameter Value>" limit := make([]interface{}, 0) customVariable := codeartspipelineModel.CustomVariable{ Name: &name, Sequence: &sequence, Type: ¶mType, Value: ¶mValue, Description: ¶mDescription, IsRuntime: &isRuntime, IsSecret: &isSecret, IsReset: &isReset, LatestValue: &latestValue, Limits: &limit, } return customVariable }
相关参数说明如下所示:
5. 参考
更多api及参数详细说明信息请参考如下链接流水线 CodeArtsPipeline Api详细说明文档 中的"流水线管理--新"目录下内容。
6. 修订记录