【问题标题】:GitHub -> GCP, use gcloud commands inside shell scriptGitHub -> GCP,在 shell 脚本中使用 gcloud 命令
【发布时间】:2021-08-13 16:06:25
【问题描述】:

我在 GitHub 中有一个将执行 shell 脚本的工作流,在这个脚本中我需要使用 gsutil

在我的工作流程 yml 文件中,我有以下步骤:

name: Dummy Script
on:
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    environment: alfa    
    env:
      _PROJECT_ID: my-project
    steps:
    - uses: actions/checkout@v2
    - name: Set up Cloud SDK for ${{env._PROJECT_ID}}
      uses: google-github-actions/setup-gcloud@master
      with:
        project_id: ${{env._PROJECT_ID}}
        service_account_key: ${{ secrets.SA_ALFA }}
        export_default_credentials: true
    - run: gcloud projects list
    - name: Run script.sh
      run: |
        path="${GITHUB_WORKSPACE}/script.sh"
        chmod +x $path
        sudo $path 
      shell: bash

脚本如下:

#!/bin/bash
apt-get update -y
gcloud projects list

yml 中的第二步(运行:gcloud 项目列表)按预期工作,列出 SA_USER 有权访问的项目。

但是在步骤 3 中运行脚本时,我得到以下输出:

WARNING: Could not open the configuration file: [/root/.config/gcloud/configurations/config_default].
ERROR: (gcloud.projects.list) You do not currently have an active account selected.
Please run:

  $ gcloud auth login

to obtain new credentials.

If you have already logged in with a different account:

    $ gcloud config set account ACCOUNT

to select an already authenticated account to use.
Error: Process completed with exit code 1.

所以我的问题是: 如何运行 shell 脚本文件并传递我对我的服务帐户的身份验证,以便我可以从脚本文件运行 gcloud 命令?

由于某些原因,要求脚本文件应该能够在开发人员计算机上本地运行,并且可以从 GitHub 运行。

【问题讨论】:

标签: bash yaml gcloud github-actions


【解决方案1】:

问题似乎是使用sudo运行时没有继承环境变量。有很多方法可以解决这个问题,但我能够确认它可以使用sudo -E 运行。当然,如果你不需要运行sudo,你应该删除它,但我想这是必要的。

(复制代码对我来说很容易复制。谢谢)

【讨论】:

  • 谢谢!我们做了一个需要 sudo 的“apt-get ....”,但结果我们不需要 apt-get 开始。我们没有 sudo,所以它可以工作。现在我知道了 E 标志。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 2021-03-26
  • 2016-12-10
相关资源
最近更新 更多