【问题标题】:Console into Google Cloud Build?控制台进入 Google Cloud Build?
【发布时间】:2019-04-14 16:02:38
【问题描述】:

我正在使用谷歌云构建来运行 CI/CD 测试。我在构建时遇到了错误,我想通过控制台登录到正在运行的容器以检查环境。

我收到的错误来自在 Angular 应用程序中运行“ng test”。业力给了我以下错误:

第 1 步:14 04 2019 12:00:01.869:ERROR [launcher]: No binary for 您平台上的 Chrome 浏览器。
步骤#1:请设置“CHROME_BIN”环境 变量。

所以我希望能够通过控制台进入环境,这样我就可以直观地检查并确定 chrome bin 的路径可能在哪里。

目前这里的文档声明我只能查看输出历史记录。

https://cloud.google.com/cloud-build/docs/view-build-results

是否可以通过控制台登录谷歌云构建?如果是这样,我如何通过控制台登录到 google cloud build?

谢谢


更新:

感谢ffd03e的回复。

这是添加 bash 实体点后我现在使用的 yaml 文件,以及云输出。我将查看您发布的链接并进行另一次更新。 (由于 chrome ENV 为空,我曾尝试通过 ls 设置查找它)虽然这是使用 YAML 文件进行调试的唯一方法吗?我希望远程访问云中的 bash shell,这样我就不必为了记录某些内容而不断将更改推送到我的存储库。

下面列出的配置和输出:

steps:
# Install
- name: 'gcr.io/cloud-builders/npm'
  args: ['install']
# bash -c | echo $CHROME_ENV - and checking chrome paths
- id: 'print env vars'
  name: 'gcr.io/$PROJECT_ID/ng:latest'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    echo 'getting env'
    env
    echo 'NODE_VERSION: ' $$NODE_VERSION
    echo 'CHROME_ENV: '  $$CHROME_ENV
# Test - running this in root also runs test for libraries
- name: 'gcr.io/cloud-builders/npm'
  args: ['run', 'test']
# Build
- name: 'gcr.io/cloud-builders/npm'
  args: ['run', 'build']
# Deploy
- name: 'gcr.io/$PROJECT_ID/firebase'
  args: ['deploy']

Starting Step #1 - "print env vars"
Step #1 - "print env vars": Pulling image: gcr.io/library-master/ng:latest
Step #1 - "print env vars": latest: Pulling from library-master/ng
Step #1 - "print env vars": 4b105072aa89: Already exists
Step #1 - "print env vars": b775667b1fd0: Already exists
Step #1 - "print env vars": 0fe156bcb4b1: Already exists
Step #1 - "print env vars": fb9906355a0f: Already exists
Step #1 - "print env vars": 880a3b83482f: Already exists
Step #1 - "print env vars": 228e101c8671: Already exists
Step #1 - "print env vars": f77ff8405034: Already exists
Step #1 - "print env vars": cd091f7b9743: Already exists
Step #1 - "print env vars": 60af6f0efde7: Pulling fs layer
Step #1 - "print env vars": 60af6f0efde7: Verifying Checksum
Step #1 - "print env vars": 60af6f0efde7: Download complete
Step #1 - "print env vars": 60af6f0efde7: Pull complete
Step #1 - "print env vars": Digest: sha256:2758958b0130229397599ce976ab163e8959ee2d1c4f13143d6c2233d792e79e
Step #1 - "print env vars": Status: Downloaded newer image for gcr.io/library-master/ng:latest
Step #1 - "print env vars": getting env
Step #1 - "print env vars": NODE_VERSION=8.12.0
Step #1 - "print env vars": HOSTNAME=c2dc51ef6be7
Step #1 - "print env vars": PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Step #1 - "print env vars": PWD=/workspace
Step #1 - "print env vars": SHLVL=1
Step #1 - "print env vars": HOME=/builder/home
Step #1 - "print env vars": YARN_VERSION=1.9.4
Step #1 - "print env vars": BUILDER_OUTPUT=/builder/outputs
Step #1 - "print env vars": _=/usr/bin/env
Step #1 - "print env vars": NODE_VERSION: 8.12.0
Step #1 - "print env vars": CHROME_ENV: 
Finished Step #1 - "print env vars"
Starting Step #2
Step #2: Already have image (with digest): gcr.io/cloud-builders/npm
Step #2: 
Step #2: > library-master@0.0.0 test /workspace
Step #2: > ng test
Step #2: 
Step #2: 17 04 2019 13:32:21.481:WARN [karma]: No captured browser, open http://localhost:9876/
Step #2: 17 04 2019 13:32:21.486:INFO [karma-server]: Karma v3.1.4 server started at http://0.0.0.0:9876/
Step #2: 17 04 2019 13:32:21.487:INFO [launcher]: Launching browsers Chrome with concurrency unlimited
Step #2: 17 04 2019 13:32:21.497:INFO [launcher]: Starting browser Chrome
Step #2: 17 04 2019 13:32:21.498:ERROR [launcher]: No binary for Chrome browser on your platform.
Step #2: Please, set "CHROME_BIN" env variable.
Step #2: 17 04 2019 13:32:27.258:WARN [karma]: No captured browser, open http://localhost:9876/

----------- 另一个尝试使用 ls 查找 Chrome ---------

# Using 'ls' to look for chrome..
Step #1 - "print env vars": ls /usr/bin/google-chrome
Step #1 - "print env vars": ls: cannot access /usr/bin/google-chrome: No such file or directory
Step #1 - "print env vars": ls /usr/bin/chromium-browser
Step #1 - "print env vars": ls: cannot access /usr/bin/chromium-browser: No such file or directory

【问题讨论】:

    标签: continuous-integration devops continuous-delivery google-cloud-build


    【解决方案1】:

    您是在构建步骤还是在 Dockerfile 中运行 ng test?查看您的云构建配置会很有帮助。

    这是一个打印环境变量的示例cloudbuild.yaml。如果与ng new my-app 一起使用并使用ng community cloud builder,它也会重现错误。

    # npm install
    - id: 'install dependencies'
      name: 'gcr.io/cloud-builders/npm'
      args: ['install']
    
    # bash -c | echo $CHROME_ENV
    - id: 'print env vars'
      name: 'gcr.io/$PROJECT_ID/ng:latest'
      entrypoint: 'bash'
      args:
      - '-c'
      - |
        echo 'getting env'
        env
        echo 'NODE_VERSION: ' $$NODE_VERSION
        echo 'CHROME_ENV: '  $$CHROME_ENV
    
    # ng test
    - id: 'run unit tests'
      name: 'gcr.io/$PROJECT_ID/ng:latest'
      args: ['test']
    

    资源:Substitute Variable ValuesMastering Google Cloud Build Config Syntax

    您的测试似乎使用了 chrome。从 Cloud Build 运行时,应使用 headless chrome 或 phantomjs 运行测试。您正在运行的构建步骤 ng test 可能没有安装 headless chrome。

    相关链接

    【讨论】:

    • 感谢您的回复,我已经用配置和输出更新了问题。
    • 如何添加 chrom_bin 环境或安装 chromeheadless?
    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 2020-11-22
    相关资源
    最近更新 更多