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
相关产品推荐
相关产品推荐

