Skip to content

Commit

Permalink
.dockerignore, internal/build: Read git information directly from file (
Browse files Browse the repository at this point in the history
ethereum#15458)

* .dockerignore, internal/build: Read git information directly from file

This commit changes the way of retrieving git commit and branch for build
environment from running git command to reading git files directly.

This commit also adds required git files into Docker build context.

fixes: ethereum#15346

* .dockerignore: workaround for including some files in .git
  • Loading branch information
asasmoyo authored and karalabe committed Nov 12, 2017
1 parent 86f6568 commit f47adc9
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
**/.git
/.git
!/.git/HEAD
!/.git/refs/heads
**/*_test.go

build/_workspace
Expand Down
13 changes: 8 additions & 5 deletions internal/build/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,18 +82,21 @@ func Env() Environment {
// LocalEnv returns build environment metadata gathered from git.
func LocalEnv() Environment {
env := applyEnvFlags(Environment{Name: "local", Repo: "ethereum/go-ethereum"})
if _, err := os.Stat(".git"); err != nil {
head := ReadGitFile("HEAD")
if splits := strings.Split(head, " "); len(splits) == 2 {
head = splits[1]
} else {
return env
}
if env.Commit == "" {
env.Commit = RunGit("rev-parse", "HEAD")
env.Commit = ReadGitFile(head)
}
if env.Branch == "" {
if b := RunGit("rev-parse", "--abbrev-ref", "HEAD"); b != "HEAD" {
env.Branch = b
if head != "HEAD" {
env.Branch = strings.TrimLeft(head, "refs/heads/")
}
}
if env.Tag == "" {
if info, err := os.Stat(".git/objects"); err == nil && info.IsDir() && env.Tag == "" {
env.Tag = firstLine(RunGit("tag", "-l", "--points-at", "HEAD"))
}
return env
Expand Down
10 changes: 10 additions & 0 deletions internal/build/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"log"
"os"
"os/exec"
"path"
"path/filepath"
"runtime"
"strings"
Expand Down Expand Up @@ -88,6 +89,15 @@ func RunGit(args ...string) string {
return strings.TrimSpace(stdout.String())
}

// ReadGitFile returns content of file in .git directory.
func ReadGitFile(file string) string {
content, err := ioutil.ReadFile(path.Join(".git", file))
if err != nil {
return ""
}
return strings.TrimSpace(string(content))
}

// Render renders the given template file into outputFile.
func Render(templateFile, outputFile string, outputPerm os.FileMode, x interface{}) {
tpl := template.Must(template.ParseFiles(templateFile))
Expand Down

0 comments on commit f47adc9

Please sign in to comment.