使用GitHub Actions+sops加密文件时执行报错,寻求技术帮助
解决GitHub Actions中sops执行报错的问题
错误根源
你下载的是Darwin(macOS)版本的sops二进制文件,但你的GitHub Actions runner是Ubuntu(Linux)系统,跨平台二进制不兼容,导致系统把sops二进制当成shell脚本解析,从而出现乱码和语法错误。
修正方案
将sops的下载链接替换为Linux版本,同时简化冗余操作步骤:
name: Encrypt application secrets on: workflow_dispatch: jobs: encrypt: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 with: fetch-depth: 1 - name: Install sops run: | # 下载Linux版本的sops二进制 curl -O -L -C - https://github.com/mozilla/sops/releases/download/v3.7.1/sops-v3.7.1.linux sudo mv sops-v3.7.1.linux /usr/bin/sops sudo chmod +x /usr/bin/sops - name: Import GPG key run: | # 批量导入GPG密钥,避免交互提示 gpg --batch --import .github/.gpg - name: Encrypt secrets file run: | sops --encrypt --in-place .github/application.secrets.yaml
关键修改点
- 替换sops下载链接:把
darwin后缀改为linux,匹配Ubuntu runner的操作系统 - 移除冗余的
sudo chmod +x:安装步骤已经执行过一次,无需重复操作 - 给GPG导入添加
--batch参数:避免GitHub Actions环境中出现交互提示导致流程卡住 - 移除
sudo执行sops:普通用户权限足够执行加密操作(除非文件权限有特殊限制)
额外建议
如果后续需要升级sops版本,可直接从mozilla/sops的官方发布页面获取对应Linux版本的下载链接,或者使用官方安装脚本自动适配系统:
curl -s https://raw.githubusercontent.com/mozilla/sops/main/install.sh | bash
内容的提问来源于stack exchange,提问作者nadia univ
相关产品推荐
相关产品推荐

