我想在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
我不知道这样做是否正确 此外,我有一个访问密钥和一个秘密,但我不知道它是如何工作的。
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以内。