0

I'm writing a github action that generates some content on the side. It contains the following step:

- name: Generate a client-side redirect on the index page
  run: sed -i '19i\      <meta http-equiv="refresh" content="0;URL='https://casey-hofland.github.io/UnityClock/manual/'">' _site/index.html

This github action needs to be generic, so I need to change this line: URL='https://casey-hofland.github.io/UnityClock/manual/' To something like: URL='{{ $GITHUB_PAGES_URL }}manual/'

I've looked through the default environment variables and haven't found anything like it, is there any way for me to retrieve the link?

Note: it still has to work when people are using a custom github pages link, so doing some wizardry like {{ $GITHUB_ACCOUNT_NAME }}/{{ $GITHUB_REPO_NAME }} is not an option.


Bonus:

I'm kind of a github actions / bash noob so any tips on how to implement a variable inside my sed -i command would be appreciated as well.

CaseyHofland
  • 379
  • 2
  • 9

1 Answers1

1

A GitHub Pages site is available via the APIs, for example REST (see the docs). You can get it in a run step using the GitHub CLI:

- name: Generate redirect
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  run: |
    url=$(gh api "repos/$GITHUB_REPOSITORY/pages" --jq '.html_url')
    sed -i '19i\
          <meta http-equiv="refresh" content="0;URL='"$url"manual/'">
    ' _site/index.html

This takes into consideration everything like protocol and custom domain names.

CaseyHofland
  • 379
  • 2
  • 9
Benjamin W.
  • 46,058
  • 19
  • 106
  • 116
  • It was missing a closing bracket ) - but wow, that just worked! I have no idea what this code even does so I'm really thankful for it ^_^ – CaseyHofland May 29 '23 at 00:50