gocd

package module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 6, 2022 License: MIT Imports: 10 Imported by: 0

README

github.com/liumingmin/gocd

golang continue deploy

gocd

tips:

  1. binary from aws s3(or minio)

  2. jenkins concurrent run job may get same taskId(queueId), so create same as num executor jobs to run

cd_server_test.go usage

TestGetNodes

	nodes, err := getTestCdServer().GetNodeBroker().getAllNodes(context.Background())
	if err != nil {
		t.Fatal(err)
	}

	for _, node := range nodes {
		t.Log(node)
	}
TestCreateNode

	err := getTestCdServer().GetNodeBroker().CreateNode(context.Background(), "172.17.0.4", "172.17.0.4",
		CdNodeCredIdOption("defssh"), CdNodeNumExecutorsOption(5))
	t.Log(err)
TestDeleteNode

	ok, err := getTestCdServer().GetNodeBroker().DeleteNode(context.Background(), "172.17.0.4")
	t.Log(ok, err)
TestDeploy

	jserver := getTestCdServer()
	svc := getTestCdService()
	for i := 0; i < 4; i++ {
		jobName, taskId, _ := jserver.DeploySimple(context.Background(), svc, "172.17.0.4") //172.17.0.3

		fmt.Println(jobName, taskId)

		//time.Sleep(time.Second)
	}
TestGetTaskBuild

	build, _ := getTestCdServer().GetDeployResult(context.Background(), "1-prod-runit-172.17.0.4-1", 138)
	bs, _ := json.Marshal(build)
	t.Log(string(bs))
TestS3Get

	sess, _ := session.NewSession(&aws.Config{
		Credentials: credentials.NewStaticCredentials("Vg6p9p/WM55ZbiZkE8Vyzw==",
			"r0yRc7Yxc0fB7yWRoaWJrvLlC3hShtqBFfqj13PKTLo=", ""),
		Region:           aws.String("zh-south-1"),
		Endpoint:         aws.String("http://localhost:9005"),
		DisableSSL:       aws.Bool(true),
		S3ForcePathStyle: aws.Bool(true),
	},
	)

	downloader := s3manager.NewDownloader(sess)
	file, err := os.Create("./pkg.tgz")
	if err != nil {
		t.Log(err)
		return
	}
	_, err = downloader.Download(file,
		&s3.GetObjectInput{
			Bucket: aws.String("test"),
			Key:    aws.String("pkg.tgz"),
		})
	if err != nil {
		t.Log(err)
		return
	}

	//ioutil.WriteFile("./pkg.tgz", buffer.Bytes(), 0666)
TestNewDefaultCdScript

	cdScript := NewDefaultCdScript()
	scriptConfig, _ := cdScript.GetCdTaskScriptConfig("127.0.0.1")
	t.Log(scriptConfig)

cmd

s3get

doc

Documentation

Index

Constants

View Source
const (
	RUN_STATUS_RUNNING = 1
	RUN_STATUS_FINISH  = 2
	RUN_STATUS_ERR     = 3
)
View Source
const DefaultTaskScript = `` /* 1415-byte string literal not displayed */
View Source
const DefaultXmlTpl = `` /* 1332-byte string literal not displayed */

Variables

This section is empty.

Functions

This section is empty.

Types

type CdNodeBroker

type CdNodeBroker struct {
	// contains filtered or unexported fields
}

func NewCdNodeBroker

func NewCdNodeBroker(jenkins *gojenkins.Jenkins, env string, nodeParam *CdNodeParam) *CdNodeBroker

func (*CdNodeBroker) CreateNode

func (t *CdNodeBroker) CreateNode(ctx context.Context, ip, remark string, options ...CdNodeOption) error

最好使用内网IP

func (*CdNodeBroker) DeleteNode

func (t *CdNodeBroker) DeleteNode(ctx context.Context, ip string) (bool, error)

func (*CdNodeBroker) GetNodeByName added in v1.1.0

func (t *CdNodeBroker) GetNodeByName(name string) *gojenkins.Node

func (*CdNodeBroker) SetDefCdNodeParam

func (t *CdNodeBroker) SetDefCdNodeParam(defCdNodeParam *CdNodeParam)

func (*CdNodeBroker) UpdateNodeCache added in v1.1.0

func (t *CdNodeBroker) UpdateNodeCache(ctx context.Context) error

type CdNodeOption

type CdNodeOption func(*CdNodeParam)

func CdNodeCredIdOption

func CdNodeCredIdOption(credId string) CdNodeOption

func CdNodeJvmOption

func CdNodeJvmOption(jvm string) CdNodeOption

func CdNodeNumExecutorsOption

func CdNodeNumExecutorsOption(numExecutors int) CdNodeOption

func CdNodeRemoteFsOption

func CdNodeRemoteFsOption(remoteFs string) CdNodeOption

func CdNodeSshPortOption

func CdNodeSshPortOption(sshPort string) CdNodeOption

type CdNodeParam

type CdNodeParam struct {
	// contains filtered or unexported fields
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

func NewCdNodeParam

func NewCdNodeParam(options ...CdNodeOption) *CdNodeParam

type CdS3Info

type CdS3Info struct {
	// contains filtered or unexported fields
}

func NewCdS3Info

func NewCdS3Info(s3AK, s3SK, s3Endpoint, s3Bucket, s3Region, s3getToolUrl string) *CdS3Info

type CdScript

type CdScript struct {
	// contains filtered or unexported fields
}

func NewCdScript

func NewCdScript(scriptParamDefs []*CdScriptParamDef, scriptXmlTpl, scriptContent string, scriptVersion int) *CdScript

func NewDefaultCdScript

func NewDefaultCdScript() *CdScript

func (*CdScript) GetCdTaskScriptConfig

func (t *CdScript) GetCdTaskScriptConfig(hostIp string) (string, error)

type CdScriptParamDef

type CdScriptParamDef struct {
	Name         string
	Description  string
	DefaultValue string
}

type CdServer

type CdServer struct {
	// contains filtered or unexported fields
}

func NewCdServer

func NewCdServer(ctx context.Context, url, username, token, env string, options ...CdServerOption) *CdServer

func (*CdServer) DeploySimple

func (j *CdServer) DeploySimple(ctx context.Context, service CdService, nodeName string) (string, int64, error)

func (*CdServer) GetDeployResult

func (j *CdServer) GetDeployResult(ctx context.Context, jobName string, taskId int64) (*DeployResult, error)

func (*CdServer) GetNodeBroker

func (j *CdServer) GetNodeBroker() *CdNodeBroker

type CdServerOption

type CdServerOption func(*CdServer)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

func CdServerNodeOption

func CdServerNodeOption(options ...CdNodeOption) CdServerOption

func CdServerS3Option

func CdServerS3Option(s3AK, s3SK, s3Endpoint, s3Bucket, s3Region, s3getToolUrl string) CdServerOption

type CdService

type CdService interface {
	GetName() string              // service name 服务名
	GetParams() map[string]string // invoke script dynamic params,see cdScript 传入脚本的动态参数与cdScript定义必须一致
	GetCdScript() *CdScript       // deploy script  部署脚本
	IncDeployCounter() uint32     // deploy counter 部署计数器,用于并发部署和计数
}

func NewDefaultCdService

func NewDefaultCdService(name, pkgUrl, targetPath, runCmd string, envVar map[string]string) CdService

type DefaultCdService added in v1.1.0

type DefaultCdService struct {
	// contains filtered or unexported fields
}

func (*DefaultCdService) GetCdScript added in v1.1.0

func (t *DefaultCdService) GetCdScript() *CdScript

func (*DefaultCdService) GetName added in v1.1.0

func (t *DefaultCdService) GetName() string

func (*DefaultCdService) GetParams added in v1.1.0

func (t *DefaultCdService) GetParams() map[string]string

func (*DefaultCdService) IncDeployCounter added in v1.1.0

func (t *DefaultCdService) IncDeployCounter() uint32

func (*DefaultCdService) UpdatePkgUrl added in v1.1.0

func (t *DefaultCdService) UpdatePkgUrl(pkgUrl string)

implements

type DeployResult

type DeployResult struct {
	Status        int
	Result        string
	ConsoleOutput string
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL