authelia/cmd/authelia-scripts/cmd_docker.go
Clement Michaud b9fea361c9 Create suite for testing the docker image.
Running this suite is the first advice given by the
bootstrap script to help the user move forward.

This commit also updates the documentation to reflect
changes introduced by the Go rewrite.
2019-11-03 16:53:47 +01:00

104 lines
2.2 KiB
Go

package main
import (
"errors"
"fmt"
"log"
"os"
"github.com/spf13/cobra"
)
func DockerBuildOfficialImage() error {
docker := &Docker{}
return docker.Build(IntermediateDockerImageName, ".")
}
// DockerBuildCmd Command for building docker image of Authelia.
var DockerBuildCmd = &cobra.Command{
Use: "build",
Short: "Build the docker image of Authelia",
Run: func(cmd *cobra.Command, args []string) {
err := DockerBuildOfficialImage()
if err != nil {
log.Fatal(err)
}
docker := &Docker{}
err = docker.Tag(IntermediateDockerImageName, DockerImageName)
if err != nil {
panic(err)
}
},
}
// DockerPushCmd Command for pushing Authelia docker image to Dockerhub
var DockerPushCmd = &cobra.Command{
Use: "publish",
Short: "Publish Authelia docker image to Dockerhub",
Run: func(cmd *cobra.Command, args []string) {
publishDockerImage()
},
}
func login(docker *Docker) {
username := os.Getenv("DOCKER_USERNAME")
password := os.Getenv("DOCKER_PASSWORD")
if username == "" {
panic(errors.New("DOCKER_USERNAME is empty"))
}
if password == "" {
panic(errors.New("DOCKER_PASSWORD is empty"))
}
fmt.Println("Login to dockerhub as " + username)
err := docker.Login(username, password)
if err != nil {
fmt.Println("Login to dockerhub failed")
panic(err)
}
}
func deploy(docker *Docker, tag string) {
imageWithTag := DockerImageName + ":" + tag
fmt.Println("===================================================")
fmt.Println("Docker image " + imageWithTag + " will be deployed on Dockerhub.")
fmt.Println("===================================================")
err := docker.Tag(DockerImageName, imageWithTag)
if err != nil {
panic(err)
}
docker.Push(imageWithTag)
if err != nil {
panic(err)
}
}
func publishDockerImage() {
docker := &Docker{}
travisBranch := os.Getenv("TRAVIS_BRANCH")
travisPullRequest := os.Getenv("TRAVIS_PULL_REQUEST")
travisTag := os.Getenv("TRAVIS_TAG")
if travisBranch == "master" && travisPullRequest == "false" {
login(docker)
deploy(docker, "master")
} else if travisTag != "" {
login(docker)
deploy(docker, travisTag)
deploy(docker, "latest")
} else {
fmt.Println("Docker image will not be built")
}
}