CodeArtsPipeline创建流水线示例
引导式阅读
Go
CodeArtsPipeline创建流水线示例
作者
c***r
上架时间
2023-11-23 12:40:00

1. 示例简介

华为云流水线CodeArtsPipeline服务可以帮助客户快速搭建和灵活编排从编译构建-代码检查-测试-部署的机制自动化持续交付能力,帮助研发团队有效减少手工操作和提升应用发布效率。

该示例展示如何通过 CodeArtsPipeline Go SDK 进行创建流水线操作。

2. 开发前准备

  • 注册 华为云,并完成 实名认证
  • 已获取华为云开发Go 软件开发工具包SDK,SDK版本号请参见SDK开发中心
  • 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见 访问密钥
  • 已在CodeArts平台创建流水线

3. 安装SDK

使用服务端SDK前,您需要安装“huaweicloud-sdk-codeartspipeline”,具体的SDK版本号请参见 SDK开发中心 。 使用go get安装华为云Go SDK,执行如下命令安装华为云Go SDK库以及相关依赖库,命令如下:

go get github.com/huaweicloud/huaweicloud-sdk-go-v3

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 }

相关参数说明如下所示:

  • createPipeAk:华为云账号Access Key。
  • createPipeSk:华为云账号Secret Access Key。
  • createPipeRegion:服务所在区域。

5. 参考

更多api及参数详细说明信息请参考如下链接流水线 CodeArtsPipeline Api详细说明文档 中的"流水线管理--新"目录下内容。

6. 修订记录

发布日期 文档版本 修订说明
2023-11-15 1.0 文档首次发布