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

如何在GitHub Action中通用引用GitHub Pages URL及实现sed变量?

GitHub Action获取Pages URL及sed变量使用方案

一、获取GitHub Pages完整URL(支持自定义域名)

GitHub默认环境变量没有直接提供Pages的访问地址,可通过GitHub REST API获取仓库的Pages配置,步骤如下:

  1. 添加步骤调用API提取URL:
    - name: Fetch GitHub Pages URL
      id: retrieve_pages_url
      run: |
        # 调用API获取Pages地址,用jq提取html_url字段
        PAGES_URL=$(gh api repos/${{ github.repository }}/pages --jq '.html_url')
        # 移除URL末尾的斜杠,避免拼接时出现重复斜杠
        PAGES_URL=$(echo "$PAGES_URL" | sed 's/\/$//')
        # 将结果存入Action输出变量,供后续步骤调用
        echo "pages_url=$PAGES_URL" >> $GITHUB_OUTPUT
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    
    这个方法会自动获取实际生效的Pages地址,不管是默认的username.github.io/repo还是自定义域名。

二、sed命令中使用变量的实用技巧

bash中,单引号包裹的内容不会解析变量,双引号会解析变量,针对sed命令的变量使用,推荐以下几种方式:

1. 提前构造插入字符串(可读性最优)

先把要插入的完整内容定义成变量,再传给sed:

# 构造跳转标签字符串
REDIRECT_TAG="      <meta http-equiv=\"refresh\" content=\"0;URL=${REDIRECT_URL}\">"
# 插入到第19行
sed -i "19i\\${REDIRECT_TAG}" _site/index.html

这种方式逻辑清晰,不容易出错,适合复杂字符串场景。

2. 混合单双引号拼接

将固定内容用单引号,变量部分用双引号,直接拼接:

sed -i '19i\      <meta http-equiv="refresh" content="0;URL='"${REDIRECT_URL}"'">' _site/index.html

注意变量前后的引号衔接:单引号闭合后接双引号包裹的变量,再继续单引号包裹剩余内容。

3. 全程双引号(需转义特殊字符)

如果用双引号包裹整个sed命令,要转义其中的"和\:

sed -i "19i\\      <meta http-equiv=\"refresh\" content=\"0;URL=${REDIRECT_URL}\">" _site/index.html

这种方式需要处理转义,可读性稍差,适合简单场景。

完整Action示例

整合上述步骤,完整的跳转生成流程如下:

- name: Fetch GitHub Pages URL
  id: retrieve_pages_url
  run: |
    PAGES_URL=$(gh api repos/${{ github.repository }}/pages --jq '.html_url')
    PAGES_URL=$(echo "$PAGES_URL" | sed 's/\/$//')
    echo "pages_url=$PAGES_URL" >> $GITHUB_OUTPUT
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Generate index page redirect
  run: |
    REDIRECT_URL="${{ steps.retrieve_pages_url.outputs.pages_url }}/manual/"
    REDIRECT_TAG="      <meta http-equiv=\"refresh\" content=\"0;URL=${REDIRECT_URL}\">"
    sed -i "19i\\${REDIRECT_TAG}" _site/index.html

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:20:28