You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions中sed替换变量遇语法错误的排查与解决

GitHub Actions中sed替换变量报错的解决方法

我在GitHub Actions工作流文件中使用sed替换配置文件内的变量,遇到的错误出现在GA_MP_SECRET对应的行:

Run sed -i 's/${GA_MP_SECRET}/***/g' configs/myworkflow.yaml
sed: -e expression #1, char 53: unknown option to `s'

起初我以为通过${{ env.CONTAINER_APP_YAML }}插入的路径因含斜杠引发问题,但“Modify app yaml basics”下的前三行sed命令未报错。我尝试将“Modify app yaml secrets”中的所有sed行合并到“Modify app yaml basics”的sed行下方,突然IMAGE_TAG对应的sed行也出现相同错误,尽管此前它并未报错。我推测存在隐藏字符等问题,但始终无法定位。

工作流文件

jobs:
  build:
    runs-on: ubuntu-latest
    environment: dev
    env:
      CONTAINER_APP_NAME: software-api-test
      LOCATION: central_us
      RESOURCE_GROUP: softwareDevRg
      ACR_NAME: softwareacr
      CONTAINER_APP_YAML: "configs/myworkflow.yaml"
    steps:
      - uses: actions/checkout@v2

      - name: Log into Azure
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      - name: Modify app yaml basics
        run: |
          sed -i 's/${IMAGE_TAG}/${{ github.sha }}/g' ${{ env.CONTAINER_APP_YAML }}
          sed -i 's/${CONTAINER_APP_NAME}/${{ env.CONTAINER_APP_NAME }}/g' ${{ env.CONTAINER_APP_YAML }}
          sed -i 's/${RESOURCE_GROUP}/${{ env.RESOURCE_GROUP }}/g' ${{ env.CONTAINER_APP_YAML }}

      - name: Modify app yaml secrets
        run: |
          sed -i 's/${GA_MP_SECRET}/${{ secrets.GA_MP_SECRET }}/g' ${{ env.CONTAINER_APP_YAML }}
          sed -i 's/${FB_ACCESS_TOKEN}/${{ secrets.FB_ACCESS_TOKEN }}/g' ${{ env.CONTAINER_APP_YAML }}

解决方案

已解决:我之前未意识到在run中使用多命令会链式执行,任何命令失败都会看似首行出错。最终我改用envsubst替代sed,该工具更适配此场景。

内容的提问来源于stack exchange,提问作者Max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:48:18