Github动作和谷歌云存储凭证 python

问题描述 投票:1回答:1

我想在github actions中使用python脚本处理一个csv。

这个csv存储在GCP中。

所以我想使用下面的代码从google存储中上传和下载文件。

from google.cloud import storage
class gcpConection(object,st):

    def __init__(self):

        self.credentials_path = 'credentials.json'
        self.bucket_name = 'name'

    def download_and_read_files(filename):
        st = storage.Client.from_service_account_json(self.credentials_path)
        bucket = st.get_bucket(self.bucket_name)
        blob_csv = bucket.get_blob(filename)
        blob_csv.download_to_filename(filename)
        df = pd.read_csv(filename)
        return df
    def upload_files(folder,filename):
        st = storage.Client.from_service_account_json(self.credentials_path)
        bucket = st.get_bucket(self.bucket_name)
        blob = bucket.blob('{}/{}'.format(folder,filename))
        blob.upload_from_filename(filename)

这段代码在我的电脑里运行得很好 credentials.json和脚本存放在同一个文件夹里。

为了在Github动作中运行它,我不能上传这个json文件,所以我想把这个json作为一个秘密存储在github secrets中。

我知道这个秘密存储在这里 secrents.gcp_credential 但我不知道如何改变脚本中的代码,告诉谷歌云存储看的凭证,像这样。

self.credentials_path = path/secrents.gcp_credential

我不知道这样做是否正确 此外,我有一个访问密钥和一个秘密,但我不知道它是如何工作的。

json google-cloud-platform credentials github-actions
1个回答
1
投票

根据 "创建和存储加密的文件 secrets":

Secrets 是您在仓库中创建的用于 GitHub Actions 的加密环境变量。 要想让一个动作使用一个秘密,你必须在工作流文件中把这个秘密设置为输入或环境变量。

您可以在工作流文件中输入 如何创建加密的 secrets:

要为一个动作提供一个秘密作为输入或环境变量,你可以使用秘密上下文来访问你在仓库中创建的秘密。更多信息,请参阅 "GitHub Actions 的上下文和表达式语法 "和 "GitHub Actions 的工作流语法"。

steps:
  - name: Hello world action
    with: # Set the secret as an input
      super_secret: ${{ secrets.SuperSecret }}
    env: # Or as an environment variable
      super_secret: ${{ secrets.SuperSecret }}

只需记住,对以下情况有一些限制 secrets比如你最多可以有100个secrests,这些secrests在一个仓库里必须是唯一的,它们的大小限制在64KB以内。

© www.soinside.com 2019 - 2024. All rights reserved.