diff --git a/Dockerfile b/Dockerfile index e6bfefff6..9b149d15a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,34 +1,15 @@ -FROM golang:1.11 +FROM golang:1.21 ENV PROJ_NAME bitrise RUN apt-get update - RUN DEBIAN_FRONTEND=noninteractive apt-get -y install curl git mercurial rsync ruby sudo -# From the official Golang Dockerfile -# https://github.com/docker-library/golang/blob/master/1.4/Dockerfile -RUN mkdir -p /go/src /go/bin && chmod -R 777 /go -ENV GOPATH /go -ENV PATH /go/bin:$PATH - -# Install required (testing) tools -# Install dependencies -RUN go get -u github.com/tools/godep -# Check for unhandled errors -RUN go get -u github.com/kisielk/errcheck -# Go lint -RUN go get -u github.com/golang/lint/golint - RUN mkdir -p /go/src/github.com/bitrise-io/$PROJ_NAME COPY . /go/src/github.com/bitrise-io/$PROJ_NAME WORKDIR /go/src/github.com/bitrise-io/$PROJ_NAME -# install RUN go install - -# setup (downloads envman & stepman) RUN bitrise setup -RUN $HOME/.bitrise/tools/stepman setup -c https://github.com/bitrise-io/bitrise-steplib.git CMD bitrise version diff --git a/bitrise/dependencies.go b/bitrise/dependencies.go index 5ff0111ee..7709aaff0 100644 --- a/bitrise/dependencies.go +++ b/bitrise/dependencies.go @@ -134,10 +134,6 @@ func CheckIsHomebrewInstalled() error { func checkIsBitriseToolInstalled(toolname, minVersion string, isInstall bool) error { doInstall := func() error { - officialGithub := "https://github.com/bitrise-io/" + toolname - log.Warnf("No supported %s version found", toolname) - log.Printf("You can find more information about %s on its official GitHub page: %s", toolname, officialGithub) - // Install var err error progress.ShowIndicator("Installing", func() { @@ -158,30 +154,39 @@ func checkIsBitriseToolInstalled(toolname, minVersion string, isInstall bool) er } // check whether installed - progInstallPth, err := utils.CheckProgramInstalledPath(toolname) + progInstallPth, err := exec.LookPath(toolname) if err != nil { if !isInstall { return err } + + officialGithub := "https://github.com/bitrise-io/" + toolname + log.Warnf("%s isn't installed", toolname) + log.Printf("You can find more information about %s on its official GitHub page: %s", toolname, officialGithub) return doInstall() } versionOutput, err := command.RunCommandAndReturnCombinedStdoutAndStderr(toolname, "-version") if err != nil { - log.Print(versionOutput) - return fmt.Errorf("run %s -version", toolname) + var exitErr *exec.ExitError + if errors.As(err, &exitErr) { + return fmt.Errorf("run '%s -version' failed: %s", toolname, versionOutput) + } + return fmt.Errorf("run '%s -version' failed: %s", toolname, err) } // version check isVersionOk, err := versions.IsVersionGreaterOrEqual(versionOutput, minVersion) if err != nil { - log.Errorf("Failed to validate installed version") - return err + return fmt.Errorf("failed to check %s version: %w", toolname, err) } if !isVersionOk { if !isInstall { - log.Warnf("Installed %s found, but not a supported version (%s)", toolname, versionOutput) - return errors.New("Failed to install required version") + return fmt.Errorf("incompatible %s version (%s), should be >= %s", toolname, versionOutput, minVersion) } + + officialGithub := "https://github.com/bitrise-io/" + toolname + log.Warnf("Incompatible %s version (%s), minimum version: %s", toolname, versionOutput, minVersion) + log.Printf("You can find more information about %s on its official GitHub page: %s", toolname, officialGithub) return doInstall() } diff --git a/bitrise/setup.go b/bitrise/setup.go index 7bedc3d43..6625bcfef 100644 --- a/bitrise/setup.go +++ b/bitrise/setup.go @@ -22,7 +22,7 @@ const ( const ( minEnvmanVersion = "2.4.3" - minStepmanVersion = "0.16.3" + minStepmanVersion = "0.17.0" ) type PluginDependency struct { diff --git a/docker-compose.yml b/docker-compose.yml index 372383bfb..217f6cf94 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,5 @@ -app: - build: . - volumes: - - .:/go/src/github.com/bitrise-io/bitrise +services: + app: + build: . + volumes: + - .:/go/src/github.com/bitrise-io/bitrise