如何在Github Actions工作流中将文件作为用户输入上传

65次阅读
没有评论

问题描述

想要在Github Actions的构建过程中上传.env文件。他想知道是否有办法实现这个需求。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在Github Actions中,更容易的方法是将密钥存储在secrets或特定的环境变量中:
1. 在仓库的secrets页面中存储密钥。链接:https://github.com/account_name/repo_name/settings/secrets/actions
2. 或者在仓库的环境变量页面中存储密钥。链接:https://github.com/account_name/repo_name/settings/environments
3. 在GitHub Actions的工作流文件中,可以直接访问这些密钥,或者在GitHub Actions运行时生成一个.env文件。
4. 如果要在工作流文件中访问密钥,可以使用${{ secrets.TOKEN }}的方式来访问。
5. 如果要生成一个.env文件并将密钥保存在其中,可以按照以下步骤操作:
– 在工作流文件中添加一个步骤,用于创建.env文件:touch .env
– 使用echo命令将密钥保存到.env文件中:echo TOKEN='${{ secrets.TOKEN }}' >> .env
– 其他操作…
6. 如果使用环境变量来存储密钥,请不要忘记在工作流文件中声明使用哪个环境变量!(参考文档:https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#env

方案2

使用脚本或工具来管理文件上传可能会增加复杂性,并且需要确保文件上传的安全性。
另一种方法是编写脚本或使用工具来控制文件的上传。你可以在GitHub Actions的工作流文件中使用curl命令或其他工具来上传文件。
以下是一个示例bash脚本,可以在GitHub Actions的工作流中上传.env文件:

#!/bin/bash
# 上传.env文件
curl -X POST \
  -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
  -H "Content-Type: application/octet-stream" \
  --data-binary "@.env" \
  "https://api.github.com/repos/${{ github.repository }}/contents/.env"

在这个示例中,我们使用curl命令来发送一个POST请求,将.env文件上传到GitHub仓库中。需要注意的是,我们在请求头中添加了Authorization字段,使用${{ secrets.GITHUB_TOKEN }}作为token。同时,我们指定了请求的Content-Type为application/octet-stream,并将.env文件作为二进制数据发送。
请注意,这只是一个示例,你可以根据自己的需求和环境进行相应的修改和调整。

正文完