diff --git a/go.mod b/go.mod index 5d4d8e6..8883181 100644 --- a/go.mod +++ b/go.mod @@ -1,16 +1,26 @@ module github.com/drone-plugins/drone-codedeploy +go 1.25.7 + require ( - github.com/aws/aws-sdk-go v1.16.31 + github.com/aws/aws-sdk-go-v2 v1.32.6 + github.com/aws/aws-sdk-go-v2/config v1.28.6 + github.com/aws/aws-sdk-go-v2/credentials v1.17.47 + github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6 github.com/drone/drone-go v0.0.0-20160502151758-eaa41f7836a1 - github.com/go-ini/ini v1.41.0 // indirect - github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect - github.com/jmespath/go-jmespath v0.0.0-20190123100345-c2b33e8439af // indirect - github.com/jtolds/gls v4.2.1+incompatible // indirect - github.com/smartystreets/assertions v0.0.0-20190123210625-b6c0e53d7304 // indirect - github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c // indirect - github.com/stretchr/testify v1.3.0 // indirect - golang.org/x/net v0.0.0-20190206194604-65e2d4e15006 // indirect - golang.org/x/oauth2 v0.0.0-20190211080748-99b60b757ec1 // indirect - gopkg.in/ini.v1 v1.41.0 // indirect +) + +require ( + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.2 // indirect + github.com/aws/smithy-go v1.22.1 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + golang.org/x/oauth2 v0.35.0 // indirect ) diff --git a/go.sum b/go.sum index 5eac785..0151be0 100644 --- a/go.sum +++ b/go.sum @@ -1,28 +1,44 @@ -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/aws/aws-sdk-go v1.16.31 h1:bE4FW2uulhXiAaF4Guw0OzX9gBZ4iWvXWe6VT8Jxr28= -github.com/aws/aws-sdk-go v1.16.31/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go-v2 v1.32.6 h1:7BokKRgRPuGmKkFMhEg/jSul+tB9VvXhcViILtfG8b4= +github.com/aws/aws-sdk-go-v2 v1.32.6/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U= +github.com/aws/aws-sdk-go-v2/config v1.28.6 h1:D89IKtGrs/I3QXOLNTH93NJYtDhm8SYa9Q5CsPShmyo= +github.com/aws/aws-sdk-go-v2/config v1.28.6/go.mod h1:GDzxJ5wyyFSCoLkS+UhGB0dArhb9mI+Co4dHtoTxbko= +github.com/aws/aws-sdk-go-v2/credentials v1.17.47 h1:48bA+3/fCdi2yAwVt+3COvmatZ6jUDNkDTIsqDiMUdw= +github.com/aws/aws-sdk-go-v2/credentials v1.17.47/go.mod h1:+KdckOejLW3Ks3b0E3b5rHsr2f9yuORBum0WPnE5o5w= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21 h1:AmoU1pziydclFT/xRV+xXE/Vb8fttJCLRPv8oAkprc0= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.21/go.mod h1:AjUdLYe4Tgs6kpH4Bv7uMZo7pottoyHMn4eTcIcneaY= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 h1:s/fF4+yDQDoElYhfIVvSNyeCydfbuTKzhxSXDXCPasU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25/go.mod h1:IgPfDv5jqFIzQSNbUEMoitNooSMXjRSDkhXv8jiROvU= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 h1:ZntTCl5EsYnhN/IygQEUugpdwbhdkom9uHcbCftiGgA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25/go.mod h1:DBdPrgeocww+CSl1C8cEV8PN1mHMBhuCDLpXezyvWkE= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= +github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6 h1:jwaOL3HT0yXEIs/2Bs35sx6DM6L755ppdW9DejXYYa4= +github.com/aws/aws-sdk-go-v2/service/codedeploy v1.29.6/go.mod h1:wOfD5vHIuGIe9aMoujgn0teM3fGOvtW1uxeZPs+MluI= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 h1:iXtILhvDxB6kPvEXgsDhGaZCSC6LQET5ZHSdJozeI0Y= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1/go.mod h1:9nu0fVANtYiAePIBh2/pFUSwtJ402hLnp854CNoDOeE= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6 h1:50+XsN70RS7dwJ2CkVNXzj7U2L1HKP8nqTd3XWEXBN4= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.6/go.mod h1:WqgLmwY7so32kG01zD8CPTJWVWM+TzJoOVHwTg4aPug= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.7 h1:rLnYAfXQ3YAccocshIH5mzNNwZBkBo+bP6EhIxak6Hw= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.7/go.mod h1:ZHtuQJ6t9A/+YDuxOLnbryAmITtr8UysSny3qcyvJTc= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6 h1:JnhTZR3PiYDNKlXy50/pNeix9aGMo6lLpXwJ1mw8MD4= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.6/go.mod h1:URronUEGfXZN1VpdktPSD1EkAL9mfrV+2F4sjH38qOY= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.2 h1:s4074ZO1Hk8qv65GqNXqDjmkf4HSQqJukaLuuW0TpDA= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.2/go.mod h1:mVggCnIWoM09jP71Wh+ea7+5gAp53q+49wDFs1SW5z8= +github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= +github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/drone/drone-go v0.0.0-20160502151758-eaa41f7836a1 h1:2fZ6NZF8Z37FLn5NIElsW3OELMY2xzQ2XPuXJmnAowE= github.com/drone/drone-go v0.0.0-20160502151758-eaa41f7836a1/go.mod h1:qVb1k1w9X5jgoGyLtbnfWNnd4XZfAwokxBmiutbpGqw= -github.com/go-ini/ini v1.41.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20190123100345-c2b33e8439af h1:k+eOsW90/c2wzUDsDpePUym9RExY7dxU7LJ5tpuTQmU= -github.com/jmespath/go-jmespath v0.0.0-20190123100345-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/smartystreets/assertions v0.0.0-20190123210625-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190206194604-65e2d4e15006 h1:5+mxxz7u03gaM5j1PTGWCyxAtp8KK/eS5D+qRXS8LUc= -golang.org/x/net v0.0.0-20190206194604-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/oauth2 v0.0.0-20190211080748-99b60b757ec1 h1:taDVZtRtb9KCidnRETam7yKcj0ZTaeLEdToIzk8LWR8= -golang.org/x/oauth2 v0.0.0-20190211080748-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -gopkg.in/ini.v1 v1.41.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ= +golang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/main.go b/main.go index 79617ce..8af5c5e 100755 --- a/main.go +++ b/main.go @@ -1,13 +1,15 @@ package main import ( + "context" "fmt" "os" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/codedeploy" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/credentials" + "github.com/aws/aws-sdk-go-v2/service/codedeploy" + "github.com/aws/aws-sdk-go-v2/service/codedeploy/types" "github.com/drone/drone-go/drone" "github.com/drone/drone-go/plugin" ) @@ -33,7 +35,7 @@ func main() { } if vargs.RevisionType == "" { - vargs.RevisionType = codedeploy.RevisionLocationTypeGitHub + vargs.RevisionType = string(types.RevisionLocationTypeGitHub) } if vargs.AccessKey == "" { @@ -56,18 +58,18 @@ func main() { os.Exit(1) } - var location *codedeploy.RevisionLocation + var location *types.RevisionLocation - switch vargs.RevisionType { - case codedeploy.RevisionLocationTypeGitHub: - location = &codedeploy.RevisionLocation{ - RevisionType: aws.String(vargs.RevisionType), - GitHubLocation: &codedeploy.GitHubLocation{ + switch types.RevisionLocationType(vargs.RevisionType) { + case types.RevisionLocationTypeGitHub: + location = &types.RevisionLocation{ + RevisionType: types.RevisionLocationTypeGitHub, + GitHubLocation: &types.GitHubLocation{ CommitId: aws.String(build.Commit), Repository: aws.String(repo.FullName), }, } - case codedeploy.RevisionLocationTypeS3: + case types.RevisionLocationTypeS3: if vargs.BundleType == "" { fmt.Println("Please provide a bundle type") os.Exit(1) @@ -83,17 +85,17 @@ func main() { os.Exit(1) } - switch vargs.BundleType { - case codedeploy.BundleTypeTar: - case codedeploy.BundleTypeTgz: - case codedeploy.BundleTypeZip: + switch types.BundleType(vargs.BundleType) { + case types.BundleTypeTar: + case types.BundleTypeTarGZip: // tgz + case types.BundleTypeZip: default: fmt.Println("Invalid bundle type") os.Exit(1) } - s3location := &codedeploy.S3Location{ - BundleType: aws.String(vargs.BundleType), + s3location := &types.S3Location{ + BundleType: types.BundleType(vargs.BundleType), Bucket: aws.String(vargs.BucketName), Key: aws.String(vargs.BucketKey), } @@ -106,8 +108,8 @@ func main() { s3location.Version = aws.String(vargs.BucketVersion) } - location = &codedeploy.RevisionLocation{ - RevisionType: aws.String(vargs.RevisionType), + location = &types.RevisionLocation{ + RevisionType: types.RevisionLocationTypeS3, S3Location: s3location, } default: @@ -115,24 +117,30 @@ func main() { os.Exit(1) } - svc := codedeploy.New( - session.New(&aws.Config{ - Region: aws.String(vargs.Region), - Credentials: credentials.NewStaticCredentials( - vargs.AccessKey, - vargs.SecretKey, - "", - ), - }), + ctx := context.Background() + + cfg, err := config.LoadDefaultConfig(ctx, + config.WithRegion(vargs.Region), + config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider( + vargs.AccessKey, + vargs.SecretKey, + "", + )), ) + if err != nil { + fmt.Printf("Failed to load AWS config: %v\n", err) + os.Exit(1) + } + + svc := codedeploy.NewFromConfig(cfg) - _, err := svc.CreateDeployment( + _, err = svc.CreateDeployment(ctx, &codedeploy.CreateDeploymentInput{ ApplicationName: aws.String(vargs.Application), DeploymentConfigName: aws.String(vargs.DeploymentConfig), DeploymentGroupName: aws.String(vargs.DeploymentGroup), Description: aws.String(vargs.Description), - IgnoreApplicationStopFailures: aws.Bool(vargs.IgnoreStopFailures), + IgnoreApplicationStopFailures: vargs.IgnoreStopFailures, Revision: location, }, )