1- name : Publish HTML
1+ name : Deploy to GitHub Pages
22
33on :
44 push :
55 tags : [ "*" ]
66 branches : [develop]
77
8- jobs :
9- release :
10- if : github.repository == 'freee/a11y-guidelines' && startsWith(github.ref, 'refs/tags/')
8+ # GitHubへのページデプロイに必要な権限設定
9+ permissions :
10+ contents : read
11+ pages : write
12+ id-token : write
13+
14+ # 同時に実行されるデプロイを1つに制限(オプション)
15+ concurrency :
16+ group : " pages"
17+ cancel-in-progress : false
1118
19+ jobs :
20+ build :
1221 runs-on : ubuntu-latest
22+ env :
23+ # カスタムドメインの設定 - 実運用時に設定
24+ CUSTOM_DOMAIN : ${{ secrets.CUSTOM_DOMAIN }}
1325 steps :
1426 - name : Extract Branch/Tag Names
1527 run : |
1628 echo "NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
1729 echo "BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
1830 echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
19-
31+
32+ - name : Set BASE_URL
33+ run : |
34+ if [ -n "$CUSTOM_DOMAIN" ]; then
35+ echo "BASE_URL=https://${CUSTOM_DOMAIN}/" >> $GITHUB_ENV
36+ else
37+ echo "BASE_URL=https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}/" >> $GITHUB_ENV
38+ fi
39+
2040 - uses : actions/checkout@v4
2141 with :
2242 fetch-depth : 0
@@ -26,159 +46,226 @@ jobs:
2646 with :
2747 python-version : ' 3.9.x'
2848
29- - uses : aws-actions/configure-aws-credentials@v4
30- with :
31- aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
32- aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
33- aws-region : ap-northeast-1
34-
3549 - name : install ja_JP.UTF-8 locale
3650 run : |
51+ sudo apt-get update
52+ sudo apt-get install -y locales
3753 sudo locale-gen ja_JP.UTF-8
3854 sudo update-locale LANG=ja_JP.UTF-8
3955
4056 - name : Install the Latest pip
4157 run : python -m pip install --upgrade pip
4258
43- - name : Install required modules
44- run : python -m pip install -r requirements.txt --upgrade
59+ # GitHub Pagesのセットアップ
60+ - name : Setup Pages
61+ uses : actions/configure-pages@v4
4562
46- - name : Prepare file upload directory with the archive directory
63+ - name : Prepare deployment directory structure
4764 run : |
48- mkdir -p ${GITHUB_WORKSPACE}/upload /archive
49- mkdir -p ${GITHUB_WORKSPACE}/upload /en
65+ mkdir -p ${GITHUB_WORKSPACE}/deploy /archive
66+ mkdir -p ${GITHUB_WORKSPACE}/deploy/current /en
5067
51- - name : Download the existing archive files from S3
68+ - name : Get latest tag
69+ id : latest_tag
70+ run : |
71+ LATEST_TAG=$(git describe --tags --abbrev=0)
72+ echo "LATEST_TAG=${LATEST_TAG}" >> $GITHUB_ENV
73+
74+ # Display configuration info
75+ - name : Display configuration info
76+ run : |
77+ echo "Using BASE_URL: ${BASE_URL}"
78+ echo "Custom Domain: ${CUSTOM_DOMAIN:-Not set, using GitHub Pages URL}"
79+ echo "Latest tag: ${LATEST_TAG}"
80+
81+ # Build HTML from the latest tag for the root directory (always use latest tag)
82+ - name : Build HTML for latest tag (root directory)
5283 env :
53- AWS_BUCKET : ${{ secrets.AWS_S3_BUCKET }}
54- run : aws s3 sync --delete s3://${AWS_BUCKET}/archive/ ${GITHUB_WORKSPACE}/upload/archive/ --quiet
84+ GTM_ID : ${{ secrets.GTM_ID }}
85+ TZ : Asia/Tokyo
86+ run : |
87+ git checkout ${LATEST_TAG}
88+ git submodule update --init --recursive
89+ python -m pip install -r requirements.txt --upgrade
90+ if [ ! -f ./build.mk ]; then
91+ build_procedure=0
92+ else
93+ build_procedure=$(make build-procedure-version)
94+ fi
95+ if [ ${build_procedure} -eq 0 ]; then
96+ make sphinx_options="-A gtm_id=${GTM_ID} -D html_baseurl=${BASE_URL}" clean html
97+ cp -r ./build/html/* ${GITHUB_WORKSPACE}/deploy/
98+ if [ -d ./data/json/schemas ]; then
99+ cp -r ./data/json/schemas ${GITHUB_WORKSPACE}/deploy/
100+ fi
101+ elif [ ${build_procedure} -eq 1 ]; then
102+ make BASE_URL=${BASE_URL} sphinx_options="-A gtm_id=${GTM_ID}" clean html
103+ mkdir -p ${GITHUB_WORKSPACE}/deploy/en
104+ cp -r ./ja/build/html/* ${GITHUB_WORKSPACE}/deploy/
105+ if [ -d ./en/build/html ]; then
106+ cp -r ./en/build/html/* ${GITHUB_WORKSPACE}/deploy/en
107+ fi
108+ if [ -d ./data/json/schemas ]; then
109+ cp -r ./data/json/schemas ${GITHUB_WORKSPACE}/deploy/
110+ fi
111+ else
112+ echo "Unknown build procedure version: ${build_procedure}"
113+ exit 1
114+ fi
115+ make clean
55116
56- - name : Build HTML of all releases, with gtag.js, and OGP tags
117+ # Build current from develop branch
118+ - name : Build HTML for develop branch (current directory)
57119 env :
58120 GTM_ID : ${{ secrets.GTM_ID }}
59121 TZ : Asia/Tokyo
60122 run : |
61- make BASE_URL=https://a11y-guidelines.freee.co.jp/ sphinx_options="-A gtm_id=${GTM_ID}" clean html
62- cp -r ./ja/build/html/* ${GITHUB_WORKSPACE}/upload
63- cp -r ./en/build/html/* ${GITHUB_WORKSPACE}/upload/en
64- cp -r ./data/json/schemas ${GITHUB_WORKSPACE}/upload
65- make BASE_URL=https://a11y-guidelines.freee.co.jp/current/ sphinx_options="-A gtm_id=${GTM_ID}" clean html
66- mkdir -p ${GITHUB_WORKSPACE}/upload/current/en
67- cp -r ./ja/build/html/* ${GITHUB_WORKSPACE}/upload/current
68- cp -r ./en/build/html/* ${GITHUB_WORKSPACE}/upload/current/en
69- cp -r ./data/json/schemas ${GITHUB_WORKSPACE}/upload/current
123+ git checkout develop
124+ git submodule update --init --recursive
125+ python -m pip install -r requirements.txt --upgrade
126+ if [ ! -f ./build.mk ]; then
127+ build_procedure=0
128+ else
129+ build_procedure=$(make build-procedure-version)
130+ fi
131+ if [ ${build_procedure} -eq 0 ]; then
132+ make sphinx_options="-A gtm_id=${GTM_ID} -t current -D html_baseurl=${BASE_URL}current/" clean html
133+ mkdir -p ${GITHUB_WORKSPACE}/deploy/current
134+ cp -r ./build/html/* ${GITHUB_WORKSPACE}/deploy/current/
135+ if [ -d ./data/json/schemas ]; then
136+ cp -r ./data/json/schemas ${GITHUB_WORKSPACE}/deploy/current/
137+ fi
138+ elif [ ${build_procedure} -eq 1 ]; then
139+ make BASE_URL=${BASE_URL}current/ sphinx_options="-A gtm_id=${GTM_ID} -t current" clean html
140+ mkdir -p ${GITHUB_WORKSPACE}/deploy/current/en
141+ cp -r ./ja/build/html/* ${GITHUB_WORKSPACE}/deploy/current/
142+ if [ -d ./en/build/html ]; then
143+ cp -r ./en/build/html/* ${GITHUB_WORKSPACE}/deploy/current/en
144+ fi
145+ if [ -d ./data/json/schemas ]; then
146+ cp -r ./data/json/schemas ${GITHUB_WORKSPACE}/deploy/current/
147+ fi
148+ else
149+ echo "Unknown build procedure version: ${build_procedure}"
150+ exit 1
151+ fi
70152 make clean
153+
154+ # Build archive for all tags
155+ - name : Build HTML for all tags (archive directory)
156+ env :
157+ GTM_ID : ${{ secrets.GTM_ID }}
158+ TZ : Asia/Tokyo
159+ run : |
71160 current_commit=$(git rev-parse HEAD)
72- rm -rf ${GITHUB_WORKSPACE}/upload/archive/${TAG}
73- for _tag in `git tag` ; do \
74- echo "Processing ${ _tag}..." ; \
75- if [ ! -d ${GITHUB_WORKSPACE}/upload/archive/${ _tag} ] ; then \
76- git checkout ${_tag} ; \
77- git submodule update --init --recursive ; \
161+ for _tag in `git tag`; do
162+ echo "Processing ${_tag} for archive..."
163+ if [ ! -d ${GITHUB_WORKSPACE}/deploy/archive/${ _tag} ]; then
164+ git checkout ${_tag}
165+ git submodule update --init --recursive
166+ python -m pip install -r requirements.txt --upgrade
78167 if [ ! -f ./build.mk ]; then
79- build_procedure=0 ; \
80- else \
81- build_procedure=` make build-procedure-version` ; \
82- fi ; \
168+ build_procedure=0
169+ else
170+ build_procedure=$( make build-procedure-version)
171+ fi
83172 if [ ${build_procedure} -eq 0 ]; then
84- make SPHINXOPTS="-A gtm_id=${GTM_ID} -D html_baseurl=https://a11y-guidelines.freee.co.jp/archive/${_tag}/" html ; \
85- if [ -d ./data/json/schemas ]; then \
86- cp -r ./data/json/schemas ./build/html ; \
87- fi ; \
88- cp -r ./build/html ${GITHUB_WORKSPACE}/upload/archive/${_tag} ; \
89- elif [ ${build_procedure} -eq 1 ]; then \
90- make BASE_URL=https://a11y-guidelines.freee.co.jp/archive/${_tag}/ sphinx_options="-A gtm_id=${GTM_ID}" clean html ; \
91- mkdir -p ${GITHUB_WORKSPACE}/upload/archive/${_tag}/en ; \
92- cp -r ./ja/build/html/* ${GITHUB_WORKSPACE}/upload/archive/${_tag} ; \
93- cp -r ./en/build/html/* ${GITHUB_WORKSPACE}/upload/archive/${_tag}/en
94- cp -r ./data/json/schemas ${GITHUB_WORKSPACE}/upload/archive/${_tag} ; \
95- else \
96- echo "Unknown build procedure version: ${build_procedure}" ; \
97- exit 1 ; \
98- fi ; \
99- make clean ; \
100- git checkout ${current_commit} ; \
101- git submodule update --init --recursive ; \
102- fi ; \
173+ make sphinx_options="-A gtm_id=${GTM_ID} -D html_baseurl=${BASE_URL}archive/${_tag}/" clean html
174+ mkdir -p ${GITHUB_WORKSPACE}/deploy/archive/${_tag}
175+ cp -r ./build/html/* ${GITHUB_WORKSPACE}/deploy/archive/${_tag}/
176+ if [ -d ./data/json/schemas ]; then
177+ cp -r ./data/json/schemas ${GITHUB_WORKSPACE}/deploy/archive/${_tag}/
178+ fi
179+ elif [ ${build_procedure} -eq 1 ]; then
180+ make BASE_URL=${BASE_URL}archive/${_tag}/ sphinx_options="-A gtm_id=${GTM_ID}" clean html
181+ mkdir -p ${GITHUB_WORKSPACE}/deploy/archive/${_tag}/en
182+ cp -r ./ja/build/html/* ${GITHUB_WORKSPACE}/deploy/archive/${_tag}/
183+ if [ -d ./en/build/html ]; then
184+ cp -r ./en/build/html/* ${GITHUB_WORKSPACE}/deploy/archive/${_tag}/en
185+ fi
186+ if [ -d ./data/json/schemas ]; then
187+ cp -r ./data/json/schemas ${GITHUB_WORKSPACE}/deploy/archive/${_tag}/
188+ fi
189+ else
190+ echo "Unknown build procedure version: ${build_procedure}"
191+ exit 1
192+ fi
193+ make clean
194+ fi
103195 done
196+ git checkout ${current_commit}
197+ git submodule update --init --recursive
104198
105- - name : Publish to S3
106- env :
107- AWS_BUCKET : ${{ secrets.AWS_S3_BUCKET }}
108- run : aws s3 sync --delete ${GITHUB_WORKSPACE}/upload/ s3://${AWS_BUCKET}/ --quiet
109-
110- - name : Prepare the HTML Archive
199+ # Prepare HTML archive for release when a tag is pushed
200+ - name : Prepare HTML archive for release
201+ if : startsWith(github.ref, 'refs/tags/')
111202 env :
203+ GTM_ID : ${{ secrets.GTM_ID }}
112204 TZ : Asia/Tokyo
113205 run : |
114- make BASE_URL=/ clean html
115- mv ./ja/build/html ./freee-a11y-guidelines-${TAG}
116- cp -r ./data/json/schemas ./freee-a11y-guidelines-${TAG}
117- cp -r ./en/build/html ./freee-a11y-guidelines-${TAG}/en
206+ git checkout ${TAG}
207+ git submodule update --init --recursive
208+ python -m pip install -r requirements.txt --upgrade
209+ if [ ! -f ./build.mk ]; then
210+ build_procedure=0
211+ else
212+ build_procedure=$(make build-procedure-version)
213+ fi
214+ if [ ${build_procedure} -eq 0 ]; then
215+ make BASE_URL=/ sphinx_options="-A gtm_id=${GTM_ID}" html
216+ mkdir -p freee-a11y-guidelines-${TAG}
217+ cp -r ./build/html/* freee-a11y-guidelines-${TAG}/
218+ if [ -d ./data/json/schemas ]; then
219+ cp -r ./data/json/schemas freee-a11y-guidelines-${TAG}/
220+ fi
221+ elif [ ${build_procedure} -eq 1 ]; then
222+ make BASE_URL=/ sphinx_options="-A gtm_id=${GTM_ID}" clean html
223+ mkdir -p freee-a11y-guidelines-${TAG}/en
224+ cp -r ./ja/build/html/* freee-a11y-guidelines-${TAG}/
225+ if [ -d ./en/build/html ]; then
226+ cp -r ./en/build/html/* freee-a11y-guidelines-${TAG}/en
227+ fi
228+ if [ -d ./data/json/schemas ]; then
229+ cp -r ./data/json/schemas freee-a11y-guidelines-${TAG}/
230+ fi
231+ else
232+ echo "Unknown build procedure version: ${build_procedure}"
233+ exit 1
234+ fi
118235 zip -r ${GITHUB_WORKSPACE}/freee-a11y-guidelines-${TAG}-html.zip ./freee-a11y-guidelines-${TAG}
119236
120- - name : Create Release
237+ # Create GitHub release when a tag is pushed
238+ - name : Create GitHub Release
239+ if : startsWith(github.ref, 'refs/tags/')
121240 env :
122241 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
123242 run : |
124- gh release create ${TAG} \
125- --title "Ver. ${TAG}" \
126- --notes-file ./ja/source/intro/ChangeLog/${TAG:0:4}/${TAG}.rst \
127- --draft
243+ if [ -f ./ja/source/intro/ChangeLog/${TAG:0:4}/${TAG}.rst ]; then
244+ gh release create ${TAG} \
245+ --title "Ver. ${TAG}" \
246+ --notes-file ./ja/source/intro/ChangeLog/${TAG:0:4}/${TAG}.rst \
247+ --draft
248+ else
249+ gh release create ${TAG} \
250+ --title "Ver. ${TAG}" \
251+ --notes "Release version ${TAG}" \
252+ --draft
253+ fi
128254 gh release upload ${TAG} ${GITHUB_WORKSPACE}/freee-a11y-guidelines-${TAG}-html.zip
129255
130- current :
131- if : github.repository == 'freee/a11y-guidelines' && github.ref == 'refs/heads/develop'
256+ # Upload artifact for GitHub Pages deployment
257+ - name : Upload Pages artifact
258+ uses : actions/upload-pages-artifact@v3
259+ with :
260+ path : deploy
132261
262+ deploy :
263+ environment :
264+ name : github-pages
265+ url : ${{ steps.deployment.outputs.page_url }}
133266 runs-on : ubuntu-latest
134-
267+ needs : build
135268 steps :
136- - name : Extract Branch/Tag Names
137- run : |
138- echo "NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
139- echo "BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
140- echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
141-
142- - uses : actions/checkout@v4
143- with :
144- submodules : true
145-
146- - uses : actions/setup-python@v4
147- with :
148- python-version : ' 3.9.x'
149-
150- - uses : aws-actions/configure-aws-credentials@v4
151- with :
152- aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
153- aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
154- aws-region : ap-northeast-1
155-
156- - name : install ja_JP.UTF-8 locale
157- run : |
158- sudo locale-gen ja_JP.UTF-8
159- sudo update-locale LANG=ja_JP.UTF-8
160-
161- - name : Install the Latest pip
162- run : python -m pip install --upgrade pip
163-
164- - name : Install required modules
165- run : python -m pip install -r requirements.txt --upgrade
166-
167- - name : Prepare file upload directory with the archive directory
168- run : mkdir -p ${GITHUB_WORKSPACE}/upload/current/en
169-
170- - name : Build HTML with gtag.js, and OGP tags
171- env :
172- GTM_ID : ${{ secrets.GTM_ID }}
173- BASE_URL : https://a11y-guidelines.freee.co.jp/current/
174- TZ : Asia/Tokyo
175- run : |
176- make sphinx_options="-A gtm_id=${GTM_ID} -t current" clean html
177- cp -r ./data/json/schemas ./ja/build/html
178- cp -r ./ja/build/html/* ${GITHUB_WORKSPACE}/upload/current/
179- cp -r ./en/build/html/* ${GITHUB_WORKSPACE}/upload/current/en
180-
181- - name : Publish to S3
182- env :
183- AWS_BUCKET : ${{ secrets.AWS_S3_BUCKET }}
184- run : aws s3 sync --delete ${GITHUB_WORKSPACE}/upload/current/ s3://${AWS_BUCKET}/current/ --quiet
269+ - name : Deploy to GitHub Pages
270+ id : deployment
271+ uses : actions/deploy-pages@v4
0 commit comments