GitHub -> GCP,在 shell 脚本中使用 gcloud 命令
GitHub -> GCP, use gcloud commands inside shell script
我在 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.
问题好像是在运行sudo
时没有继承环境变量。有很多方法可以解决这个问题,但我能够确认它会 运行 和 sudo -E
。当然,如果你不需要运行和sudo
,你应该删除它,但我认为这是必要的。
(复现代码很容易复现,谢谢)
我在 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.
问题好像是在运行sudo
时没有继承环境变量。有很多方法可以解决这个问题,但我能够确认它会 运行 和 sudo -E
。当然,如果你不需要运行和sudo
,你应该删除它,但我认为这是必要的。
(复现代码很容易复现,谢谢)