-
Notifications
You must be signed in to change notification settings - Fork 18
/
action.yml
135 lines (120 loc) · 4.49 KB
/
action.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
name: Deploy - Publish Javadoc
description: "Automatically generate your JavaDoc and publish it to GitHub Page."
branding:
icon: "book-open"
color: "white"
inputs:
# Required inputs
java-version: # version of java
description: "Java version inside your project"
required: true
default: "17"
GITHUB_TOKEN: # GitHub Token
description: "The GitHub token the GitHub repository"
required: true
deploy-mode: # deploy mode
description: "Deploy mode branch or artifact"
required: true
default: "branch"
# Optional inputs
javadoc-branch: # branch where the javadoc is hosted
description: "Branch where the javadoc is hosted"
required: false
default: javadoc
target-folder: # target folder for the javadoc contents
description: "Directory where the javadoc contents should be stored"
required: false
default: .
java-distribution: # distribution of java
description: "Java distribution inside your project"
required: false
default: "adopt"
project:
description: "Maven or Gradle project"
required: false
default: maven
custom-command:
description: "Custom command to generate the javadoc"
required: false
default: ""
subdirectories:
description: "Custom subdirectories to upload from"
required: false
javadoc-source-folder:
description: "Custom path for the new Javadoc"
required: false
default: target/site/apidocs
# Development and testing inputs
without-deploy: # deploy the javadoc to the GitHub Page, is used for development testing with nektos/act
description: "Enable or disable deploy of the javadoc to the GitHub Page"
required: false
default: "false"
without-checkout: # checkout the javadoc branch, is used for development testing with nektos/act
description: "Enable or disable the checkout"
required: false
default: "false"
runs:
using: "composite"
steps:
- uses: actions/checkout@v4
if: inputs.without-checkout == 'false'
with:
fetch-depth: 0
- uses: actions/setup-java@v4
with:
java-version: ${{ inputs.java-version }}
distribution: ${{ inputs.java-distribution }}
cache: ${{ inputs.project }}
- name: Generate Javadoc with Maven
if: inputs.project == 'maven' && inputs.custom-command == ''
run: mvn javadoc:aggregate
shell: bash
- name: Generate Javadoc with Gradle
if: inputs.project == 'gradle' && inputs.custom-command == ''
run: gradle javadoc
shell: bash
- name: Generate Javadoc with custom command
if: inputs.custom-command != ''
run: ${{ inputs.custom-command }}
shell: bash
- name: Handle subdirectories for GitHub Pages
if: ${{ inputs.subdirectories != '' }}
run: |
if [ ! -d ${{ inputs.javadoc-source-folder }}]; then
mkdir -p ${{ inputs.javadoc-source-folder }}
fi
dirs=$(echo ${{ inputs.subdirectories }} | tr " " "\n")
for dir in $dirs
do
mkdir -p ${{ inputs.javadoc-source-folder }}/$dir
cp -r $dir/${{ inputs.javadoc-source-folder }} ${{ inputs.javadoc-source-folder }}/$dir
done
ls -R ${{ inputs.javadoc-source-folder }}
shell: bash
- name: Set Javadoc source folder
id: set-javadoc-source-folder
run: |
if [ ${{ inputs.project }} == "gradle" && ${{ inputs.javadoc-source-folder }} == "target/site/apidocs" ]; then
echo "javadoc-source-folder=build/docs/javadoc" >> "$GITHUB_OUTPUT"
else
echo "javadoc-source-folder=${{ inputs.javadoc-source-folder }}" >> "$GITHUB_OUTPUT"
fi
shell: bash
- name: Deploy to GitHub Page Branch 🚀
if: ${{ inputs.deploy-mode == 'branch' && inputs.without-deploy == 'false' }}
uses: JamesIves/github-pages-deploy-action@v4.6.0
with:
token: ${{ inputs.GITHUB_TOKEN }}
branch: ${{ inputs.javadoc-branch }}
clean: true
folder: ${{ steps.set-javadoc-source-folder.outputs.javadoc-source-folder }}
target-folder: ${{ inputs.target-folder }}
- name: Deploy to GitHub Page Artifact 🚀
if: ${{ inputs.deploy-mode == 'artifact' && inputs.without-deploy == 'false' }}
uses: actions/upload-pages-artifact@v3
with:
path: ${{ steps.set-javadoc-source-folder.outputs.javadoc-source-folder }}
- name: Deploy to GitHub Pages
if: ${{ inputs.deploy-mode == 'artifact' && inputs.without-deploy == 'false' }}
id: deployment
uses: actions/deploy-pages@v4