Google App Engine, Google Cloud Console, Jenkins t

2019-09-12 16:39发布

I'm trying to deploy my GAE app remotely with a URL, and this part works nicely. Jenkins checks out the latest revision correctly but when trying to build with the command specified in the Google Cloud Help:

gcloud --project=<project-id> preview app deploy -q app.yaml

I get the follow error message:

[workspace] $ /bin/sh -xe /opt/bitnami/apache-tomcat/temp/hudson7352698921882428590.sh
+ gcloud --project=XYZXYZXYZ preview app deploy -q app.yaml
/opt/bitnami/apache-tomcat/temp/hudson7352698921882428590.sh: 2:
/opt/bitnami/apache-tomcat/temp/hudson7352698921882428590.sh: gcloud: not found
Build step 'Execute shell' marked build as failure

I have changed the project-id to mine, but i can't figure out why it's missing the gcloud command..

EDIT

I ran

/usr/local/bin/gcloud --project=<project-id> preview app deploy -q app.yaml

and now i got this error:

Traceback (most recent call last):
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/gcloud/gcloud.py", line 199, in <module>
_cli = CreateCLI()
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/gcloud/gcloud.py", line 197, in CreateCLI
return loader.Generate()
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/cli.py", line 384, in Generate
cli = self.__MakeCLI(top_group)
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/calliope/cli.py", line 546, in __MakeCLI
log.AddFileLogging(self.__logs_dir)
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/core/log.py", line 546, in AddFileLogging
_log_manager.AddLogsDir(logs_dir=logs_dir)
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/core/log.py", line 330, in AddLogsDir
log_file = self._SetupLogsDir(logs_dir)
File "/usr/local/bin/../share/google/google-cloud-sdk/./lib/googlecloudsdk/core/log.py", line 407, in _SetupLogsDir
os.makedirs(day_dir_path)
File "/usr/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.7/os.py", line 150, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/.config'
Build step 'Execute shell' marked build as failure

FINAL EDIT

For anyone comming around here later, i did not exactly solve this, but at least i managed to get around this error by creating an all new VM through the command Google has written in the guide Push-to-Deploy with Jenkins:

$ PASSWORD=<password>                # 12 or more chars, with letters and numbers
$ PROJECT_ID=<project-id>
$ BITNAMI_IMAGE=<bitnami-image>      # e.g. bitnami-jenkins-1-606-0-linux-debian-7-x86-64


$ gcloud compute \
    instances create bitnami-jenkins \
    --project ${PROJECT_ID} \
    --image-project bitnami-launchpad \
    --image ${BITNAMI_IMAGE} \
    --zone us-central1-a \
    --machine-type n1-standard-1 \
    --metadata "bitnami-base-password=${PASSWORD},bitnami-default-user=user,bitnami-key=jenkins,bitnami-name=Jenkins,bitnami-url=//bitnami.com/stack/jenkins,bitnami-description=Jenkins,startup-script-url=https://dl.google.com/dl/jenkins/p2dsetup/setup-script.sh" \
    --scopes "https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapis.com/auth/projecthosting,https://www.googleapis.com/auth/appengine.admin" \
    --tags "bitnami-launchpad"

At least with this new VM i could move forward and i'm now close to get it working, but i'm stuck on another error which i've created another question for now: Gcloud preview app can't parse my yaml

3条回答
狗以群分
2楼-- · 2019-09-12 17:39

Try specifying the gcloud executable with its full path - it might not be accessible in jenkins' shell PATH environment.

查看更多
趁早两清
3楼-- · 2019-09-12 17:43

OSError: [Errno 13] Permission denied: '/.config' suggests that Jenkins is attempting to use the root directory as a configuration directory, possibly because of an unusual $HOME directory configuration.

Try setting $CLOUDSDK_CONFIG to point to a directory that the Jenkins user has access to:

CLOUDSDK_CONFIG=/tmp /home/margorjon/google-cloud-sdk/bin/gcloud version
查看更多
劫难
4楼-- · 2019-09-12 17:43

As Dan Cornilescu said, path env variable was not set correctly. Run:

ln -s /var/jenkins_home/google-cloud-sdk/bin/gcloud /usr/local/bin/gcloud

in your worker node to symlink gcloud to global path

查看更多
登录 后发表回答