different docs deployment #6
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy docs to Pages | |
on: | |
# TODO remove this trigger before merging | |
pull_request: | |
release: | |
types: | |
- created | |
workflow_dispatch: | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
# this cancels workflows currently in progress if you start a new one | |
concurrency: | |
group: "pages" | |
cancel-in-progress: true | |
jobs: | |
deploy: | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Pages | |
uses: actions/configure-pages@v5 | |
- name: Create temp directory for docs | |
run: mkdir -p ./temp_docs | |
- name: Get all releases | |
id: releases | |
run: | | |
echo "releases=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
"https://api.github.com/repos/${{ github.repository }}/releases" | jq -c '.')" >> $GITHUB_OUTPUT | |
- name: Download and extract docs for each release | |
run: | | |
releases='${{ steps.releases.outputs.releases }}' | |
for release in $(echo "${releases}" | jq -c '.[]'); do | |
release_name=$(echo $release | jq -r '.tag_name') | |
assets_url=$(echo $release | jq -r '.assets_url') | |
# Get assets for this release | |
assets=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "${assets_url}") | |
# Look for docs.tar.gz asset | |
download_url=$(echo $assets | jq -r '.[] | select(.name=="docs.tar.gz") | .browser_download_url') | |
if [ ! -z "$download_url" ]; then | |
echo "Processing release ${release_name}, downloading from ${download_url}" | |
# Create directory for this release | |
mkdir -p "./temp_docs/${release_name}" | |
# Download and extract | |
curl -sL "${download_url}" -o ./temp_docs/temp.tar.gz | |
tar -xzf ./temp_docs/temp.tar.gz -C "./temp_docs/${release_name}" | |
rm ./temp_docs/temp.tar.gz | |
else | |
echo "Error: docs.tar.gz not found for release ${release_name}" | |
fi | |
done | |
# Check if index.html exists in the docs folder | |
# Get the latest release version | |
latest_release=$(echo "${releases}" | jq -r '.[0].tag_name') | |
if [ -f "./docs/index.html" ]; then | |
# Copy the index.html and replace LATESTVERSION with actual latest release | |
cat ./docs/index.html | sed "s/LATESTVERSION/${latest_release}/g" > ./temp_docs/index.html | |
echo "Created index.html with latest version: ${latest_release}" | |
else | |
echo "Error: index.html not found in docs folder" | |
exit 1 | |
fi | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
# Upload the processed docs folder | |
path: "./temp_docs" | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |