如何在GitHub Actions工作流中引用GitHub Secrets生成.Renviron文件
问题根因
你当前的配置存在两个核心错误:
- bash步骤中直接使用
$AWS_HOST这类变量,但未提前将GitHub Secrets映射为当前步骤的环境变量,bash无法读取到对应值 - 你将
.Renviron写入了用户主目录~/.Renviron,而非rsconnect部署时需要读取的仓库根目录
修复方案
修改创建.Renviron的步骤配置
把原有的「Create and populate .Renviron file」步骤替换为以下内容即可:
- name: Create and populate .Renviron file env: AWS_HOST: ${{ secrets.AWS_HOST }} AWS_PORT: ${{ secrets.AWS_PORT }} AWS_PW: ${{ secrets.AWS_PW }} AWS_USER: ${{ secrets.AWS_USER }} DBNAME: ${{ secrets.DBNAME }} run: | echo aws_host="$AWS_HOST" >> .Renviron echo aws_port="$AWS_PORT" >> .Renviron echo aws_pw="$AWS_PW" >> .Renviron echo aws_user="$AWS_USER" >> .Renviron echo dbname="$DBNAME" >> .Renviron shell: bash
调试验证方法(可选)
如果需要确认文件生成是否正确,可以在上述步骤后新增一个调试步骤,无需打印敏感凭证也能验证配置有效性:
- name: Verify .Renviron file run: | pwd ls -la .Renviron grep -E '^aws_host|^aws_port|^aws_user|^dbname' .Renviron shell: bash
注意事项
- 所有需要在bash脚本中使用的GitHub Secrets,都必须先在当前步骤的
env字段中完成映射,bash才能读取到对应值 - 去掉路径前的
~/,直接写.Renviron就会写入当前工作目录(也就是checkout后的仓库根目录),rsconnect部署时会自动读取根目录下的该文件 - R脚本中用
Sys.getenv()读取变量时,变量名大小写需要和.Renviron中定义的完全一致,比如.Renviron里写的是aws_host,读取时就要用Sys.getenv("aws_host")
内容的提问来源于stack exchange,提问作者jyablonski
相关产品推荐
相关产品推荐

