Skip to content

Commit f4465d4

Browse files
authored
Merge pull request #301 from ma10/revise-gh-actions-20250516
Deploy to GitHub Pages instead of AWS S3.
2 parents ff77a74 + 2fd972f commit f4465d4

File tree

1 file changed

+212
-125
lines changed

1 file changed

+212
-125
lines changed

.github/workflows/release.yml

Lines changed: 212 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,42 @@
1-
name: Publish HTML
1+
name: Deploy to GitHub Pages
22

33
on:
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

Comments
 (0)