GitHub Actions中sed替换含特殊字符变量失败如何修复?
问题:GitHub Actions中sed替换含特殊字符的变量失败
我配置了一个GitHub Actions工作流,用于构建完成后发送邮件。流程是先创建带有占位符的HTML模板文件,再在流水线里用sed命令把占位符替换成对应的GitHub变量。
我的工作流步骤代码如下:
- name: Update HTML file values shell: cmd run: | set html=".\installs_repo\Projectwise ISM files\${{ env.Version }}\mart_installs_email.html" copy /Y ".\installs_repo\Projectwise ISM files\${{ env.Version }}\mart_installs_email.template" %html% sed -i "s|VAR_WORKFLOW|${{ github.workflow }}|g" %html% sed -i "s|VAR_REPO|${{ github.repository }}|g" %html% sed -i "s|VAR_RUNNER|${{ github.run_number }}|g" %html% sed -i "s|VAR_REF|${{ github.ref_name }}|g" %html% sed -i "s|VAR_COMMIT|${{ github.event.head_commit.message }}|g" %html% sed -i "s|VAR_COUNT|${{ env.git_commit_count }}|g" %html% sed -i "s|VAR_URL|${{ secrets.DAILY_BUILDS_URL }}|g" %html% sed -i "s|VAR_VERSION|${{ env.Version }}|g" %html%
但当变量值包含空格、换行、*这类特殊字符时,尤其是提交消息(对应占位符VAR_COMMIT),流水线会执行失败。比如提交消息开头有空格/换行、包含多行内容或者带有*符号时,都会触发失败。
我的HTML模板内容如下(VAR_开头的是占位符):
<!DOCTYPE html> <html> <head> <style> table { font-family: arial, sans-serif; border-collapse: collapse; width: 100%; } td, th { border: 1px solid #dddddd; text-align: left; padding: 8px; } tr:nth-child(even) { background-color: #dddddd; } </style> </head> <body> <h2>VAR_WORKFLOW - Successful</h2> <table> <tr> <td>GitHub Repository</td> <td>VAR_REPO</td> </tr> <tr> <td>Version</td> <td>VAR_VERSION</td> </tr> <tr> <td>Github Actions Build Number</td> <td>VAR_RUNNER</td> </tr> <tr> <td>GitHub Branch Name</td> <td>VAR_REF</td> </tr> <tr> <td>Commit Message</td> <td>**VAR_COMMIT**</td> </tr> <tr> <td>Commit Count or Build Number</td> <td>VAR_COUNT</td> </tr> <tr> <td>Daily Builds</td> <td><a href="VAR_URL">OneDrive Link</a></td> </tr> </table> </body> </html>
内容的提问来源于stack exchange,提问作者Jor-El
相关产品推荐
相关产品推荐

