2

golang 앱을 앱 엔진에 배포하려고합니다. 이제 Mac에서 gcloud CLI를 통해이 작업을 수행 할 수 있습니다.이 작업은 잘 작동합니다 (gcloud 앱 실행 app.yaml 실행). 이 문제가되지는 않지만에 배포 이후,Bitbucket 파이프 라인 Google App Engine에 문제 배포

image: golang:onbuild 

pipelines: 
    branches: 
    develop: 
    - step: 
     script: # Modify the commands below to build your repository. 
      # Downloading the Google Cloud SDK 
      - curl -o /tmp/google-cloud-sdk.tar.gz https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-155.0.0-linux-x86_64.tar.gz 
      - tar -xvf /tmp/google-cloud-sdk.tar.gz -C /tmp/ 
      - /tmp/google-cloud-sdk/install.sh -q 
      - source /tmp/google-cloud-sdk/path.bash.inc 
      - PACKAGE_PATH="${GOPATH}/src/bitbucket.org/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}" 
      - mkdir -pv "${PACKAGE_PATH}" 
      - tar -cO --exclude-vcs --exclude=bitbucket-pipelines.yml . | tar -xv -C "${PACKAGE_PATH}" 
      - cd "${PACKAGE_PATH}" 
      - go get -v 
      - go get -u github.com/golang/dep/cmd/dep 
      - go build -v 
      - go install 
      - go test -v 
      - echo $GOOGLE_CLIENT_SECRET | base64 --decode --ignore-garbage > ./gcloud-api-key.json 
      - gcloud auth activate-service-account --key-file gcloud-api-key.json 
      - gcloud components install app-engine-go 
      #- GOROOT="/tmp/go" 
      # Linking to the Google Cloud project 
      - gcloud config set project $CLOUDSDK_CORE_PROJECT 
      # Deploying the application 
      - gcloud --quiet --verbosity=error app deploy app.yaml --promote 
      - echo $GCLOUD_API_KEYFILE | base64 --decode --ignore-garbage > ./gcloud-api-key.json 
      #- gcloud auth activate-service-account --key-file gcloud-api-key.json 

그리고 다음은

+ gcloud --quiet --verbosity=error app deploy app.yaml --promote 
You are about to deploy the following services: 
- some-project/default/20171128t070345 (from [/go/src/bitbucket.org/acme/some-app/app.yaml]) 
    Deploying to URL: [https://project-url.appspot.com] 

Beginning deployment of service [default]... 
ERROR: (gcloud.app.deploy) Staging command [/tmp/google-cloud-sdk/platform/google_appengine/goroot/bin/go-app-stager /go/src/bitbucket.org/acme/some-app/app.yaml /tmp/tmpLbUCA5] failed with return code [1]. 

------------------------------------ STDOUT ------------------------------------ 
------------------------------------ STDERR ------------------------------------ 
2017/11/28 07:03:45 failed analyzing /go/src/bitbucket.org/acme/some-app: cannot find package "github.com/gorilla/context" in any of: 
    ($GOROOT not set) 
    /go/src/github.com/gorilla/context (from $GOPATH) 
GOPATH: /go 
-------------------------------------------------------------------------------- 

내의 bitbucket-pipelines.yaml 내용이다 : 그러나, 나는의 Bitbucket 파이프 라인에 다음과 같은 오류를 받고 있어요 클라우드뿐만 아니라 내 애플리케이션 제목 파일, 잘 작동 :

runtime: go 
api_version: go1 

handlers: 
- url: /.* 
    script: _go_app 


nobuild_files: 
- vendor 

skip_files: 
- | 
    ^(.*/)?(
    (#.*#)| 
    (.*\.mapping)| 
    (.*\.po)| 
    (.*\.pot)| 
    (.*\.py[co])| 
    (.*\.sw?)| 
    (.*\.yaml)| 
    (.*_test\.go)| 
    (.*~)| 
    (LICENSE)| 
    (Makefile.*)| 
    (\..*)| 
    (vendor/.*)| 
)$ 

내 문제는 내의 bitbucket의 YAML 파일 또는 고정 표시기 이미지가 I로 시작하는거야 어떻게 함께 상당히 확실 해요,하지만 난 붙어있어. 이견있는 사람?

+0

자동으로 실행되는 스크립트의 일반적인 문제는 수작업으로 성공적으로 실행될 때 수동 또는 일부 .rc 파일을 통해 어떻게 든 설정되는 일부 환경 변수가 부족하다는 것입니다. 오류 메시지의'($ GOROOT not set)'이이를 암시 할 수 있습니다. 2 가지 경우에서 환경을 비교하십시오. –

+0

나는 이동 사용자가 아니므로 이것에 대해 확신 할 수 없습니다. 앱에 외부 종속성 (/go/src/github.com/gorilla/context)이있는 것 같습니다. * 시스템에서 이미 사용 가능할 수도 있습니다. 수동으로 배포하지만 bitbucket 파이프 라인에서 명시 적으로 가져와야 할 수도 있습니다. –

+0

@DanCornilescu 그래서 나는 그것도 생각하고 GOROOT를 스스로 설정하려고 노력했다. 그러나 다음 줄 중 하나에서 "github.com/gorilla/context"패키지를 찾을 수 없습니다. ($ GOROOT not set) /go/src/github.com/gorilla/context ($ GOPATH에서) – ephilip

답변

1

github.com/gorilla/context은 테스트 파일에서만 사용됩니까?

go get은 기본적으로 테스트 종속성을 얻지 않습니다.

파이프 라인 스크립트에만 go get github.com/gorilla/context을 추가 할 수 있습니다.