image
This commit is contained in:
95
app/modules/docker/docker.go
Normal file
95
app/modules/docker/docker.go
Normal file
@ -0,0 +1,95 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
b64 "encoding/base64"
|
||||
"fmt"
|
||||
"github.com/urfave/cli/v2"
|
||||
"ledo/app/modules/aws_ledo"
|
||||
"ledo/app/modules/context"
|
||||
"net/url"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func trimLeftChars(s string, n int) string {
|
||||
m := 0
|
||||
for i := range s {
|
||||
if m >= n {
|
||||
return s[i:]
|
||||
}
|
||||
m++
|
||||
}
|
||||
return s[:0]
|
||||
}
|
||||
|
||||
func DockerEcrLogin(ctx *context.LedoContext) error {
|
||||
ecr, err := aws_ledo.EcrLogin()
|
||||
if err != nil {
|
||||
fmt.Println("Ecr login error: %s", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
password := *ecr.AuthorizationData[0].AuthorizationToken
|
||||
ecrUrl := *ecr.AuthorizationData[0].ProxyEndpoint
|
||||
sDec, _ := b64.StdEncoding.DecodeString(password)
|
||||
registryAddr, err := url.Parse(ecrUrl)
|
||||
if err != nil {
|
||||
fmt.Printf("Ecr endpoint addr parse error: %s", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
ctx.ExecCmdSilent("docker", []string{"login", "-u", "AWS", "-p", string(trimLeftChars(string(sDec), 4)), registryAddr.Host})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ShowDockerImageFQN(ctx *context.LedoContext) string {
|
||||
fqn := fmt.Sprintf("%s/%s/%s", ctx.Config.Docker.Registry, ctx.Config.Docker.Namespace, ctx.Config.Docker.Name)
|
||||
return strings.ToLower(fqn)
|
||||
}
|
||||
|
||||
func ExecDockerPush(ctx *context.LedoContext, command cli.Args) {
|
||||
var version string
|
||||
var args []string
|
||||
if command.First() == "" {
|
||||
version = "latest"
|
||||
} else {
|
||||
version = command.First()
|
||||
}
|
||||
image := ShowDockerImageFQN(ctx)
|
||||
args = append(args, "push")
|
||||
args = append(args, "-f", image + ":" + version)
|
||||
ctx.ExecCmd("docker", args[0:])
|
||||
}
|
||||
|
||||
func ExecDockerRetag(ctx *context.LedoContext, command cli.Args) {
|
||||
var args []string
|
||||
|
||||
from := command.Get(0)
|
||||
to := command.Get(1)
|
||||
image := ShowDockerImageFQN(ctx)
|
||||
args = append(args, "tag")
|
||||
args = append(args, image + ":" + from)
|
||||
args = append(args, image + ":" + to)
|
||||
ctx.ExecCmd("docker", args[0:])
|
||||
}
|
||||
|
||||
func ExecDockerBuild(ctx *context.LedoContext, command cli.Args, cmdCtx cli.Context) {
|
||||
var version string
|
||||
var args []string
|
||||
if command.First() == "" {
|
||||
version = "latest"
|
||||
} else {
|
||||
version = command.First()
|
||||
}
|
||||
|
||||
opts := strings.Split(strings.Trim(cmdCtx.String("opts"), " "), " ")
|
||||
image := ShowDockerImageFQN(ctx)
|
||||
args = append(args, "build")
|
||||
args = append(args, "-t", image+":"+version)
|
||||
args = append(args, "-f", cmdCtx.String("dockerfile"))
|
||||
args = append(args, opts...)
|
||||
if cmdCtx.String("stage") != "" {
|
||||
args = append(args, "--target", cmdCtx.String("stage"))
|
||||
}
|
||||
args = append(args, ".")
|
||||
ctx.ExecCmd("docker", args[0:])
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
b64 "encoding/base64"
|
||||
"fmt"
|
||||
"ledo/app/modules/aws_ledo"
|
||||
"ledo/app/modules/context"
|
||||
"net/url"
|
||||
"os"
|
||||
)
|
||||
|
||||
func trimLeftChars(s string, n int) string {
|
||||
m := 0
|
||||
for i := range s {
|
||||
if m >= n {
|
||||
return s[i:]
|
||||
}
|
||||
m++
|
||||
}
|
||||
return s[:0]
|
||||
}
|
||||
|
||||
func DockerEcrLogin(ctx *context.LedoContext) error {
|
||||
ecr, err := aws_ledo.EcrLogin()
|
||||
if err != nil {
|
||||
fmt.Println("Ecr login error: %s", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
password := *ecr.AuthorizationData[0].AuthorizationToken
|
||||
ecrUrl := *ecr.AuthorizationData[0].ProxyEndpoint
|
||||
sDec, _ := b64.StdEncoding.DecodeString(password)
|
||||
registryAddr, err := url.Parse(ecrUrl)
|
||||
if err != nil {
|
||||
fmt.Printf("Ecr endpoint addr parse error: %s", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
ctx.ExecCmdSilent("docker", []string{"login", "-u", "AWS", "-p", string(trimLeftChars(string(sDec), 4)), registryAddr.Host})
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user