@@ -3,7 +3,7 @@ name: Deploy docs to Pages
3
3
on :
4
4
release :
5
5
types :
6
- - published
6
+ - created
7
7
8
8
workflow_dispatch :
9
9
@@ -12,28 +12,79 @@ permissions:
12
12
pages : write
13
13
id-token : write
14
14
15
- # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
16
- # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
15
+ # this cancels workflows currently in progress if you start a new one
17
16
concurrency :
18
17
group : " pages"
19
- cancel-in-progress : false
18
+ cancel-in-progress : true
20
19
21
20
jobs :
22
21
deploy :
23
22
environment :
24
23
name : github-pages
25
24
url : ${{ steps.deployment.outputs.page_url }}
26
- runs-on : ubuntu-latest
25
+ runs-on : ubuntu-24.04
27
26
steps :
28
27
- name : Checkout
29
28
uses : actions/checkout@v4
29
+
30
30
- name : Setup Pages
31
31
uses : actions/configure-pages@v5
32
+
33
+ - name : Create temp directory for docs
34
+ run : mkdir -p ./temp_docs
35
+
36
+ - name : Get all releases
37
+ id : releases
38
+ run : |
39
+ echo "releases=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
40
+ "https://api.github.com/repos/${{ github.repository }}/releases" | jq -c '.')" >> $GITHUB_OUTPUT
41
+
42
+ - name : Download and extract docs for each release
43
+ run : |
44
+ releases='${{ steps.releases.outputs.releases }}'
45
+ for release in $(echo "${releases}" | jq -c '.[]'); do
46
+ release_name=$(echo $release | jq -r '.tag_name')
47
+ assets_url=$(echo $release | jq -r '.assets_url')
48
+
49
+ # Get assets for this release
50
+ assets=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "${assets_url}")
51
+
52
+ # Look for docs.tar.gz asset
53
+ download_url=$(echo $assets | jq -r '.[] | select(.name=="docs.tar.gz") | .browser_download_url')
54
+
55
+ if [ ! -z "$download_url" ]; then
56
+ echo "Processing release ${release_name}, downloading from ${download_url}"
57
+
58
+ # Create directory for this release
59
+ mkdir -p "./temp_docs/${release_name}"
60
+
61
+ # Download and extract
62
+ curl -sL "${download_url}" -o ./temp_docs/temp.tar.gz
63
+ tar -xzf ./temp_docs/temp.tar.gz -C "./temp_docs/${release_name}"
64
+ rm ./temp_docs/temp.tar.gz
65
+ else
66
+ echo "Error: docs.tar.gz not found for release ${release_name}"
67
+ fi
68
+ done
69
+
70
+ # Get the latest release version
71
+ latest_release=$(echo "${releases}" | jq -r '.[0].tag_name')
72
+
73
+ if [ -f "./docs/index.html" ]; then
74
+ # Copy the index.html and replace LATESTVERSION with actual latest release
75
+ cat ./docs/index.html | sed "s/LATESTVERSION/${latest_release}/g" > ./temp_docs/index.html
76
+ echo "Created index.html with latest version: ${latest_release}"
77
+ else
78
+ echo "Error: index.html not found in docs folder"
79
+ exit 1
80
+ fi
81
+
32
82
- name : Upload artifact
33
83
uses : actions/upload-pages-artifact@v3
34
84
with :
35
- # Upload docs/ folder
36
- path : " ./docs"
85
+ # Upload the processed docs folder
86
+ path : " ./temp_docs"
87
+
37
88
- name : Deploy to GitHub Pages
38
89
id : deployment
39
90
uses : actions/deploy-pages@v4
0 commit comments