-
Notifications
You must be signed in to change notification settings - Fork 13
193 lines (163 loc) · 5.86 KB
/
deploy-website.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
name: Deploy documentation and API reference
on: [ push, pull_request ]
# Gives the workflow permissions to clone the repo and create a page deployment
permissions:
id-token: write
pages: write
env:
# Name of module and id separated by a slash
INSTANCE: documentation/akkurate
# Replace HI with the ID of the instance in capital letters
DOC_ARTIFACT: webHelpAKKURATE2-all.zip
# Writerside docker image version
DOCKER_VERSION: "243.21565"
# Add the variable below to upload Algolia indexes
# Replace HI with the ID of the instance in capital letters
ALGOLIA_ARTIFACT: algolia-indexes-AKKURATE.zip
ALGOLIA_APP_NAME: L3ZXCPZ1DE
ALGOLIA_INDEX_NAME: akkurate
ALGOLIA_KEY: ${{ secrets.ALGOLIA_KEY }}
CONFIG_JSON_PRODUCT: AKKURATE
CONFIG_JSON_VERSION: 0.11.0
jobs:
build-documentation:
name: Build documentation
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Build documentation
uses: JetBrains/writerside-github-action@v4
with:
instance: ${{ env.INSTANCE }}
artifact: ${{ env.DOC_ARTIFACT }}
docker-version: ${{ env.DOCKER_VERSION }}
- name: Fix permissions on `artifacts` directory
run: sudo chown runner:docker ./artifacts
- name: Unzip documentation
run: unzip -qq ./artifacts/${{ env.DOC_ARTIFACT }} -d ./artifacts/docs
- name: Replace Open Graph image for specific pages
run: |
sed -i 's/akkurate\.dev\/social\.png/akkurate.dev\/social-arrow.png/g' ./artifacts/docs/arrow-integration.html;
sed -i 's/akkurate\.dev\/social\.png/akkurate.dev\/social-ktor-server.png/g' ./artifacts/docs/ktor-server-integration.html;
sed -i 's/akkurate\.dev\/social\.png/akkurate.dev\/social-ktor-client.png/g' ./artifacts/docs/ktor-client-integration.html;
- name: Upload documentation
uses: actions/upload-artifact@v4
with:
name: docs
path: |
./artifacts/docs
./artifacts/report.json
retention-days: 7
- name: Upload social images
uses: actions/upload-artifact@v4
with:
name: social-images
path: |
./documentation/images/social.png
./documentation/images/social-arrow.png
./documentation/images/social-ktor-server.png
./documentation/images/social-ktor-client.png
retention-days: 7
- name: Upload Algolia indexes
uses: actions/upload-artifact@v4
with:
name: algolia-indexes
path: artifacts/${{ env.ALGOLIA_ARTIFACT }}
retention-days: 7
build-api-reference:
name: Build API reference
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 17
distribution: zulu
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Setup Gradle
uses: gradle/[email protected]
- name: Build the API
run: ./gradlew dokkaHtmlMultiModule
- name: Upload API reference
uses: actions/upload-artifact@v4
with:
name: api
path: ./build/dokka/htmlMultiModule/
retention-days: 7
# Add the job below and artifacts/report.json on Upload documentation step above if you want to fail the build when documentation contains errors
test-documentation:
name: Test documentation
# Requires build job results
needs: build-documentation
runs-on: ubuntu-latest
steps:
- name: Download documentation
uses: actions/download-artifact@v4
with:
name: docs
path: artifacts
- name: Test documentation
uses: JetBrains/writerside-checker-action@v1
with:
instance: ${{ env.INSTANCE }}
publish-documentation-indexes:
name: Publish documentation indexes to Algolia
needs: build-documentation
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
container:
image: registry.jetbrains.team/p/writerside/builder/algolia-publisher:2.0.32-3
steps:
- uses: actions/download-artifact@v4
with:
name: algolia-indexes
- uses: montudor/action-zip@v1
with:
args: unzip -qq ${{ env.ALGOLIA_ARTIFACT }} -d algolia-indexes
- run: |
env "algolia-key=${{env.ALGOLIA_KEY}}" java -jar /opt/builder/help-publication-agent.jar \
update-index \
--application-name ${{env.ALGOLIA_APP_NAME}} \
--index-name ${{env.ALGOLIA_INDEX_NAME}} \
--product ${{env.CONFIG_JSON_PRODUCT}} \
--version ${{env.CONFIG_JSON_VERSION}} \
--index-directory algolia-indexes/ \
2>&1 | tee algolia-update-index-log.txt
deploy:
name: Deploy everything
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: [ test-documentation, build-api-reference ]
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- name: Download documentation
uses: actions/download-artifact@v4
with:
name: docs
path: ./website/
- name: Download API reference
uses: actions/download-artifact@v4
with:
name: api
path: ./website/api/
- name: Download social images
uses: actions/download-artifact@v4
with:
name: social-images
path: ./website/
- name: Setup Pages
uses: actions/configure-pages@v2
- name: Upload Pages contents
uses: actions/upload-pages-artifact@v3
with:
path: website
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4