-
Notifications
You must be signed in to change notification settings - Fork 0
146 lines (127 loc) · 4.74 KB
/
deploy.yaml
File metadata and controls
146 lines (127 loc) · 4.74 KB
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
name: Deploy Docusaurus to GitHub Pages
on:
push:
branches: [ main ]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: true
env:
BACKEND_DIR: backend
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
# pull private book source
- name: Checkout private book source
uses: actions/checkout@v4
with:
repository: brianronock/fullstack-book-source
token: ${{ secrets.PAT_FOR_PRIVATE }}
path: _book
# copy only what should be published
- name: Import curated content
run: |
mkdir -p fullstack-book/docs fullstack-book/blog fullstack-book/src/pages fullstack-book/static
rsync -av --delete _book/docs/ fullstack-book/docs/ || true
rsync -av --delete _book/blog/ fullstack-book/blog/ || true
rsync -av --delete _book/src/pages/ fullstack-book/src/pages/ || true
rsync -av --delete _book/static/ fullstack-book/static/ || true
# detect build system (backend path adjust here if you rename)
- name: Detect backend build system
id: detect
run: |
echo "backend_dir=$BACKEND_DIR" >> $GITHUB_OUTPUT
if [ -f "$BACKEND_DIR/pom.xml" ]; then
echo "build=maven" >> $GITHUB_OUTPUT
elif [ -f "$BACKEND_DIR/gradlew" ]; then
echo "build=gradle" >> $GITHUB_OUTPUT
elif [ -f "$BACKEND_DIR/build.gradle.kts" ] || [ -f "$BACKEND_DIR/build.gradle" ]; then
echo "build=gradle" >> $GITHUB_OUTPUT
else
echo "build=none" >> $GITHUB_OUTPUT
fi
# -------------- MAVEN -------------------------
# Cache Maven deps to speed up builds
- name: Cache Maven packages
if: steps.detect.outputs.build == 'maven'
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
# build Javadoc
- name: Set up JDK (for Javadoc)
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '21'
- name: Build Javadoc (Maven)
if: steps.detect.outputs.build == 'maven'
working-directory: ${{ env.BACKEND_DIR }}
run: mvn -q -DskipTests javadoc:javadoc
# -------------- GRADLE -------------------------
# Cache Gradle deps to speed up builds
- name: Cache Gradle
if: steps.detect.outputs.build == 'gradle'
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: ${{ runner.os }}-gradle-
- name: Make gradlew executable
if: steps.detect.outputs.build == 'gradle'
working-directory: ${{ steps.detect.outputs.backend_dir }}
run: chmod +x gradlew
- name: Build Javadoc (Gradle)
if: steps.detect.outputs.build == 'gradle'
working-directory: ${{ steps.detect.outputs.backend_dir }}
run: ./gradlew -q clean javadoc
# ---------- Copy Javadoc into site ----------
- name: Copy Javadoc into site (Maven)
if: steps.detect.outputs.build == 'maven'
run: |
mkdir -p fullstack-book/static/javadoc
rsync -av --delete "${{ steps.detect.outputs.backend_dir }}/target/site/apidocs/" fullstack-book/static/javadoc/ || true
- name: Copy Javadoc into site (Gradle)
if: steps.detect.outputs.build == 'gradle'
run: |
mkdir -p fullstack-book/static/javadoc
rsync -av --delete "${{ steps.detect.outputs.backend_dir }}/build/docs/javadoc/" fullstack-book/static/javadoc/ || true
- name: Fail if no backend build system found
if: steps.detect.outputs.build == 'none'
run: |
echo "No Maven/Gradle build found in ${{ steps.detect.outputs.backend_dir }}"; exit 1
# ---------- Docusaurus ----------
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install & build
working-directory: fullstack-book
run: |
npm ci
npm run build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: fullstack-book/build
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4