-
Notifications
You must be signed in to change notification settings - Fork 46
141 lines (120 loc) · 3.78 KB
/
gh-pages.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
name: GitHub Pages
on:
pull_request:
push:
workflow_dispatch:
inputs:
publish_gh_pages:
type: boolean
description: 'Publish GH Pages'
default: false
jobs:
build-artifacts:
uses: ./.github/workflows/build-artifacts.yml
with:
# SonarQube requires JDK 17 or higher
java-version: '17'
generate-site:
needs: build-artifacts
runs-on: ubuntu-latest
concurrency:
group: "${{ github.workflow }}-${{ github.ref }}-${{ inputs.publish_gh_pages }}"
env:
DTC_HEADLESS: true
steps:
- name: Install dot (Graphviz)
run: |
sudo apt-get update
sudo apt-get install -y graphviz
- name: Cache Gradle packages
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: "${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}"
restore-keys: ${{ runner.os }}-gradle
- name: Cache .doctoolchain
uses: actions/cache@v4
with:
path: ~/.doctoolchain
key: "${{ runner.os }}-doctoolchain-${{ hashFiles('**/lockfiles') }}"
restore-keys: ${{ runner.os }}-doctoolchain
- name: Check out
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: .
- name: Validate Gradle Wrapper
uses: gradle/actions/wrapper-validation@v4
- name: Generate Site
run: ./generate-pages
- name: Upload Generated Site
uses: actions/upload-pages-artifact@v3
with:
name: github-pages
path: public
retention-days: 7
publish-to-github:
runs-on: ubuntu-latest
needs: generate-site
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
contents: read
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
# Deploy to the github-pages environment
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
if: ${{ github.event.inputs.publish_gh_pages }}
steps:
- name: Download Generated Site
uses: actions/download-artifact@v4
with:
name: github-pages
path: public
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload Pages
uses: actions/upload-pages-artifact@v3
with:
path: 'public'
- name: Deploy Pages
id: deployment
uses: actions/deploy-pages@v4
publish-to-netlify:
runs-on: ubuntu-latest
needs: generate-site
environment: netlify
if: ${{ !github.event.inputs.publish_gh_pages }}
steps:
- name: Download GitHub Pages Artifact
uses: actions/download-artifact@v4
with:
name: github-pages
path: download
- name: Unpack GH Pages
run: |
mkdir -p public
tar -x -C public -v -f download/artifact.tar
- name: Cache Netlify CLI
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-netlify-cli-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-netlify-cli
- name: Deploy to Netlify
uses: South-Paw/action-netlify-cli@v2
id: netlify
with:
# be sure to escape any double quotes with a backslash
args: 'deploy --debug --dir ./public --message \"draft [${{ github.sha }}]\"'
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}