Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix same branch name different sources #222

Merged
merged 9 commits into from
Feb 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- name: setup go environment 1.19.3
- name: setup go environment stable
uses: actions/setup-go@v3
with:
go-version: '1.19.3'
Expand Down
83 changes: 63 additions & 20 deletions g10k_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2153,14 +2153,14 @@ func TestPurgeStaleDeploymentOnly(t *testing.T) {

expectedLines := []string{
"DEBUG purgeUnmanagedContent(): Glob'ing with path /tmp/full/full_*",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: full_another",
"DEBUG purgeUnmanagedContent(): Not purging environment full_another",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: full_master",
"DEBUG purgeUnmanagedContent(): Not purging environment full_master",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: full_qa",
"DEBUG purgeUnmanagedContent(): Not purging environment full_qa",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: full_stale",
"Removing unmanaged environment full_stale",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: /tmp/full/full_another",
"DEBUG purgeUnmanagedContent(): Not purging environment /tmp/full/full_another",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: /tmp/full/full_master",
"DEBUG purgeUnmanagedContent(): Not purging environment /tmp/full/full_master",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: /tmp/full/full_qa",
"DEBUG purgeUnmanagedContent(): Not purging environment /tmp/full/full_qa",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: /tmp/full/full_stale",
"Removing unmanaged environment /tmp/full/full_stale",
}

for _, expectedLine := range expectedLines {
Expand Down Expand Up @@ -2221,14 +2221,14 @@ func TestPurgeStaleDeploymentOnlyWithAllowList(t *testing.T) {

expectedLines := []string{
"DEBUG purgeUnmanagedContent(): Glob'ing with path /tmp/full/full_*",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: full_another",
"DEBUG purgeUnmanagedContent(): Not purging environment full_another",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: full_master",
"DEBUG purgeUnmanagedContent(): Not purging environment full_master",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: full_qa",
"DEBUG purgeUnmanagedContent(): Not purging environment full_qa",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: full_stale",
"Removing unmanaged environment full_stale",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: /tmp/full/full_another",
"DEBUG purgeUnmanagedContent(): Not purging environment /tmp/full/full_another",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: /tmp/full/full_master",
"DEBUG purgeUnmanagedContent(): Not purging environment /tmp/full/full_master",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: /tmp/full/full_qa",
"DEBUG purgeUnmanagedContent(): Not purging environment /tmp/full/full_qa",
"DEBUG purgeUnmanagedContent(): Checking if environment should exist: /tmp/full/full_stale",
"Removing unmanaged environment /tmp/full/full_stale",
}

for _, expectedLine := range expectedLines {
Expand Down Expand Up @@ -2882,7 +2882,7 @@ func TestResolvePuppetfileUseSSHAgent(t *testing.T) {
if exitCode != 1 {
t.Errorf("terminated with %v, but we expected exit status %v Output: %s", exitCode, 1, string(out))
}
//fmt.Println(string(out))
// fmt.Println(string(out))

sshAddCmd := "ssh-add"
if runtime.GOOS == "darwin" {
Expand All @@ -2891,11 +2891,11 @@ func TestResolvePuppetfileUseSSHAgent(t *testing.T) {

expectedLines := []string{
"DEBUG git repo url git@local.git.server:foo/git_module_with_ssh_agent.git with loaded SSH keys from ssh-agent",
"DEBUG git repo url git@github.com:foobar/github_module_without_ssh_add.git with SSH key tests/TestConfigUseSSHAgent.yaml",
"DEBUG git repo url git@local.git.server:bar/git_module_with_ssh_add.git with SSH key tests/TestConfigUseSSHAgent.yaml",
"DEBUG git repo url git@github.com:foobar/github_module_without_ssh_add.git with SSH key tests/test-fake-key",
"DEBUG git repo url git@local.git.server:bar/git_module_with_ssh_add.git with SSH key tests/test-fake-key",
"DEBUG executeCommand(): Executing git clone --mirror git@local.git.server:foo/git_module_with_ssh_agent.git /tmp/g10k/modules/git@local.git.server-foo_git_module_with_ssh_agent.git",
"DEBUG executeCommand(): Executing git clone --mirror git@github.com:foobar/github_module_without_ssh_add.git /tmp/g10k/modules/git@github.com-foobar_github_module_without_ssh_add.git",
"DEBUG executeCommand(): Executing ssh-agent bash -c '" + sshAddCmd + " tests/TestConfigUseSSHAgent.yaml; git clone --mirror git@local.git.server:bar/git_module_with_ssh_add.git /tmp/g10k/modules/git@local.git.server-bar_git_module_with_ssh_add.git'",
"DEBUG executeCommand(): Executing ssh-agent bash -c '" + sshAddCmd + " tests/test-fake-key; git clone --mirror git@local.git.server:bar/git_module_with_ssh_add.git /tmp/g10k/modules/git@local.git.server-bar_git_module_with_ssh_add.git'",
}

for _, expectedLine := range expectedLines {
Expand Down Expand Up @@ -3262,3 +3262,46 @@ func TestNoProxy(t *testing.T) {
}
}
}

func TestMultipleSourcesWithSameBrancheName(t *testing.T) {
funcName := strings.Split(funcName(), ".")[len(strings.Split(funcName(), "."))-1]
config = readConfigfile(filepath.Join("tests", "TestConfig2SourcesSameBranchNameDiffBaseDir.yaml"))
if os.Getenv("TEST_FOR_CRASH_"+funcName) == "1" {
debug = true
info = true
resolvePuppetEnvironment(false, "")
return
}
purgeDir("/tmp/example/", funcName)
purgeDir("/tmp/out/", funcName)
purgeDir("/tmp/out-clone/", funcName)

cmd := exec.Command(os.Args[0], "-test.run="+funcName+"$")
cmd.Env = append(os.Environ(), "TEST_FOR_CRASH_"+funcName+"=1")
_, err := cmd.CombinedOutput()

exitCode := 0
if msg, ok := err.(*exec.ExitError); ok { // there is error code
exitCode = msg.Sys().(syscall.WaitStatus).ExitStatus()
}

expectedExitCode := 0
if exitCode != expectedExitCode {
t.Errorf("terminated with %v, but we expected exit status %v", exitCode, expectedExitCode)
}
// fmt.Println(string(out))

expectedFiles := []string{
"/tmp/out-clone/another/Puppetfile",
"/tmp/out-clone/master/.g10k-deploy.json",
"/tmp/out/master/Puppetfile",
"/tmp/out/ref/uuui/d0",
}

for _, expectedFile := range expectedFiles {
if !fileExists(expectedFile) {
t.Errorf("files and/or directory missing that should be there! " + expectedFile)
}
}

}
6 changes: 1 addition & 5 deletions helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@
}
}

func executeCommand(command string, commandDir string, timeout int, allowFail bool, disableHttpProxy bool) ExecResult {

Check failure on line 173 in helper.go

View workflow job for this annotation

GitHub Actions / Test on go version and ubuntu-latest

func parameter disableHttpProxy should be disableHTTPProxy

Check failure on line 173 in helper.go

View workflow job for this annotation

GitHub Actions / Test on go version and macOS-latest

func parameter disableHttpProxy should be disableHTTPProxy

Check failure on line 173 in helper.go

View workflow job for this annotation

GitHub Actions / Test on go version and ubuntu-latest

func parameter disableHttpProxy should be disableHTTPProxy

Check failure on line 173 in helper.go

View workflow job for this annotation

GitHub Actions / Test on go version and macOS-latest

func parameter disableHttpProxy should be disableHTTPProxy
if len(commandDir) > 0 {
Debugf("Executing " + command + " in cwd " + commandDir)
} else {
Expand Down Expand Up @@ -201,12 +201,8 @@
os.Unsetenv("https_proxy")
os.Unsetenv("HTTP_PROXY")
os.Unsetenv("HTTPS_PROXY")
execCommand.Env = os.Environ()
Debugf("exec OS env:" + strings.Join(execCommand.Env, ",") + " for command " + command)
} else {
execCommand.Env = os.Environ()
Debugf("exec OS env:" + strings.Join(execCommand.Env, ",") + " for command " + command)
}
execCommand.Env = os.Environ()
out, err := execCommand.CombinedOutput()
duration := time.Since(before).Seconds()
er := ExecResult{0, string(out)}
Expand Down Expand Up @@ -350,7 +346,7 @@
func stripComponent(component string, env string) string {
if regexp.MustCompile(`^/.*/$`).MatchString(component) {
return regexp.MustCompile(component[1:len(component)-1]).ReplaceAllString(env, "")
} else {

Check failure on line 349 in helper.go

View workflow job for this annotation

GitHub Actions / Test on go version and ubuntu-latest

if block ends with a return statement, so drop this else and outdent its block

Check failure on line 349 in helper.go

View workflow job for this annotation

GitHub Actions / Test on go version and macOS-latest

if block ends with a return statement, so drop this else and outdent its block

Check failure on line 349 in helper.go

View workflow job for this annotation

GitHub Actions / Test on go version and ubuntu-latest

if block ends with a return statement, so drop this else and outdent its block

Check failure on line 349 in helper.go

View workflow job for this annotation

GitHub Actions / Test on go version and macOS-latest

if block ends with a return statement, so drop this else and outdent its block
return strings.TrimPrefix(env, component)
}
}
Expand Down
4 changes: 2 additions & 2 deletions puppetfile.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,8 @@ func resolvePuppetEnvironment(tags bool, outputNameTag string) {
}

mutex.Lock()
if _, ok := allEnvironments[prefix+renamedBranch]; !ok {
allEnvironments[prefix+renamedBranch] = true
if _, ok := allEnvironments[filepath.Join(sa.Basedir, prefix+renamedBranch)]; !ok {
allEnvironments[filepath.Join(sa.Basedir, prefix+renamedBranch)] = true
} else {
Fatalf("Renamed environment naming conflict detected with renamed environment " + prefix + renamedBranch)
}
Expand Down
14 changes: 7 additions & 7 deletions stale.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,15 @@ func purgeUnmanagedContent(allBasedirs map[string]bool, allEnvironments map[stri
}
}
if stringSliceContains(config.PurgeLevels, "deployment") {
Debugf("Checking if environment should exist: " + envName)
if allEnvironments[envName] {
Debugf("Not purging environment " + envName)
} else if stringSliceContains(allowlistEnvironments, filepath.Join(basedir, envName)) {
Debugf("Not purging environment " + envName + " due to deployment_purge_allowlist match")
Debugf("Checking if environment should exist: " + env)
if allEnvironments[env] {
Debugf("Not purging environment " + env)
} else if stringSliceContains(allowlistEnvironments, env) {
Debugf("Not purging environment " + env + " due to deployment_purge_allowlist match")
} else {
Infof("Removing unmanaged environment " + envName)
Infof("Removing unmanaged environment " + env)
if !dryRun {
purgeDir(filepath.Join(basedir, envName), "purgeStaleContent()")
purgeDir(env, "purgeStaleContent()")
}
}
}
Expand Down
10 changes: 10 additions & 0 deletions tests/TestConfig2SourcesSameBranchNameDiffBaseDir.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
cachedir: '/tmp/g10k'

sources:
example:
remote: 'https://github.com/xorpaul/g10k-fullworking-env-clone.git'
basedir: '/tmp/out/'
full:
remote: 'https://github.com/xorpaul/g10k-fullworking-env.git'
basedir: '/tmp/out-clone/'
8 changes: 4 additions & 4 deletions tests/TestConfigUseSSHAgent.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
:cachedir: '/tmp/g10k'
:cachedir: "/tmp/g10k"

sources:
example:
remote: 'https://github.com/xorpaul/g10k-environment.git'
basedir: '/tmp/example/'
private_key: 'tests/TestConfigUseSSHAgent.yaml' # just some existing file, we just want to check if the ssh-add command isn't used
remote: "https://github.com/xorpaul/g10k-environment.git"
basedir: "/tmp/example/"
private_key: "tests/test-fake-key" # just some existing file, we just want to check if the ssh-add command isn't used
38 changes: 38 additions & 0 deletions tests/test-fake-key
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----
Loading