feat: support specifying branch for cloning
Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>
This commit is contained in:
parent
baba32c308
commit
f0b9ad3a57
|
|
@ -278,6 +278,49 @@ func TestGitBuildcontext(t *testing.T) {
|
||||||
checkContainerDiffOutput(t, diff, expected)
|
checkContainerDiffOutput(t, diff, expected)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGitBuildContextWithBranch(t *testing.T) {
|
||||||
|
repo := "github.com/GoogleContainerTools/kaniko#v0.10.0"
|
||||||
|
dockerfile := "integration/dockerfiles/Dockerfile_test_run_2"
|
||||||
|
|
||||||
|
// Build with docker
|
||||||
|
dockerImage := GetDockerImage(config.imageRepo, "Dockerfile_test_git")
|
||||||
|
dockerCmd := exec.Command("docker",
|
||||||
|
append([]string{"build",
|
||||||
|
"-t", dockerImage,
|
||||||
|
"-f", dockerfile,
|
||||||
|
repo})...)
|
||||||
|
out, err := RunCommandWithoutTest(dockerCmd)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Failed to build image %s with docker command \"%s\": %s %s", dockerImage, dockerCmd.Args, err, string(out))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build with kaniko
|
||||||
|
kanikoImage := GetKanikoImage(config.imageRepo, "Dockerfile_test_git")
|
||||||
|
kanikoCmd := exec.Command("docker",
|
||||||
|
append([]string{"run",
|
||||||
|
"-v", os.Getenv("HOME") + "/.config/gcloud:/root/.config/gcloud",
|
||||||
|
ExecutorImage,
|
||||||
|
"-f", dockerfile,
|
||||||
|
"-d", kanikoImage,
|
||||||
|
"-c", fmt.Sprintf("git://%s", repo)})...)
|
||||||
|
|
||||||
|
out, err = RunCommandWithoutTest(kanikoCmd)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Failed to build image %s with kaniko command \"%s\": %v %s", dockerImage, kanikoCmd.Args, err, string(out))
|
||||||
|
}
|
||||||
|
|
||||||
|
// container-diff
|
||||||
|
daemonDockerImage := daemonPrefix + dockerImage
|
||||||
|
containerdiffCmd := exec.Command("container-diff", "diff", "--no-cache",
|
||||||
|
daemonDockerImage, kanikoImage,
|
||||||
|
"-q", "--type=file", "--type=metadata", "--json")
|
||||||
|
diff := RunCommand(containerdiffCmd, t)
|
||||||
|
t.Logf("diff = %s", string(diff))
|
||||||
|
|
||||||
|
expected := fmt.Sprintf(emptyContainerDiff, dockerImage, kanikoImage, dockerImage, kanikoImage)
|
||||||
|
checkContainerDiffOutput(t, diff, expected)
|
||||||
|
}
|
||||||
|
|
||||||
func TestLayers(t *testing.T) {
|
func TestLayers(t *testing.T) {
|
||||||
offset := map[string]int{
|
offset := map[string]int{
|
||||||
"Dockerfile_test_add": 11,
|
"Dockerfile_test_add": 11,
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,13 @@ limitations under the License.
|
||||||
package buildcontext
|
package buildcontext
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/GoogleContainerTools/kaniko/pkg/constants"
|
"github.com/GoogleContainerTools/kaniko/pkg/constants"
|
||||||
git "gopkg.in/src-d/go-git.v4"
|
git "gopkg.in/src-d/go-git.v4"
|
||||||
|
"gopkg.in/src-d/go-git.v4/plumbing"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Git unifies calls to download and unpack the build context.
|
// Git unifies calls to download and unpack the build context.
|
||||||
|
|
@ -31,9 +34,18 @@ type Git struct {
|
||||||
// UnpackTarFromBuildContext will provide the directory where Git Repository is Cloned
|
// UnpackTarFromBuildContext will provide the directory where Git Repository is Cloned
|
||||||
func (g *Git) UnpackTarFromBuildContext() (string, error) {
|
func (g *Git) UnpackTarFromBuildContext() (string, error) {
|
||||||
directory := constants.BuildContextDir
|
directory := constants.BuildContextDir
|
||||||
|
parts := strings.Split(g.context, "#")
|
||||||
|
url := "https://" + parts[0]
|
||||||
|
branch := "master"
|
||||||
|
if len(parts) > 1 {
|
||||||
|
branch = parts[1]
|
||||||
|
}
|
||||||
|
fmt.Println("will clone branch", branch)
|
||||||
_, err := git.PlainClone(directory, false, &git.CloneOptions{
|
_, err := git.PlainClone(directory, false, &git.CloneOptions{
|
||||||
URL: "https://" + g.context,
|
URL: url,
|
||||||
Progress: os.Stdout,
|
Progress: os.Stdout,
|
||||||
|
ReferenceName: plumbing.ReferenceName(branch),
|
||||||
|
SingleBranch: true,
|
||||||
})
|
})
|
||||||
return directory, err
|
return directory, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue