-
Notifications
You must be signed in to change notification settings - Fork 0
/
action.yml
153 lines (135 loc) · 4.82 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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
name: 'compas-actions.docs'
description: 'Build docs for COMPAS or its plugins'
inputs:
doc_url:
description: "custom url of the docs site, otherwise default gh-pages url of the repo"
required: false
github_token:
description: 'the github token for publishing docs'
required: true
test_docs:
description: 'whether to test docstrings in this action.'
required: false
default: 'true'
python:
description: "which python version to build docs with"
required: false
default: "3.10"
use_conda:
description: "whether to build docs with conda"
required: false
default: "false"
use_virtual_display:
description: "allow using virtual display on linux when matplotlab is imported"
required: false
default: "false"
use_latex:
description: "install dependencies for LaTex"
required: false
default: "false"
outputs:
commit_type:
description: "The type of this commit: main, pull or tag"
value: ${{ steps.docs.outputs.commit_type }}
current_version:
description: "The version number if the commit is tag"
value: ${{ steps.docs.outputs.current_version }}
subfolder:
description: "The subfolder name where the docs are built to"
value: ${{ steps.docs.outputs.subfolder }}
runs:
using: "composite"
steps:
- uses: actions/checkout@v4
# Install graphvis
- shell: bash -l {0}
run: |
if [[ ${{ runner.os }} == "Linux" ]]; then
sudo apt-get install graphviz
fi
# Enable virtual display
- shell: bash -l {0}
run: |
if [[ ${{ inputs.use_virtual_display }} == "true" ]]; then
sudo apt-get install libqt5gui5 libqt5widgets5 qt5-default xvfb
Xvfb :99 -screen 0 1024x768x24 &
echo "DISPLAY=:99.0" >> $GITHUB_ENV
fi
# Install LaTex
- shell: bash -l {0}
run: |
if [[ ${{ inputs.use_latex }} == "true" ]]; then
sudo apt-get install texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended texlive-fonts-extra dvipng
fi
# Build package
- uses: compas-dev/compas-actions.build@v4
with:
invoke_test: false
use_conda: ${{ inputs.use_conda }}
python: ${{ inputs.python }}
# Test and generate docs
- shell: bash -l {0}
run: |
if [[ ${{ inputs.test_docs }} == "true" ]]; then
invoke testdocs
fi
invoke docs
# Detect commit type and docs to corresponding folder
- shell: bash -l {0}
id: docs
run: |
# Get branch/tag/latest name from git
GITHUB_REF_REGEX="tags/v[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}(-[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*)?(rc[0-9]{1,2})?|(pull/[0-9]+)|heads/main|heads/COMPAS-1\.x\.LTS"
if [[ $GITHUB_REF =~ $GITHUB_REF_REGEX ]]; then
if [[ $BASH_REMATCH = pull* ]]; then
echo This is a pull request
FOLDER_NAME=pull_${BASH_REMATCH##*/}
echo "commit_type=pull" >> $GITHUB_OUTPUT
elif [[ $BASH_REMATCH = tags/* ]]; then
echo This is a version tag
FOLDER_NAME=${BASH_REMATCH##*/v}
echo "commit_type=tag" >> $GITHUB_OUTPUT
echo "current_version=$FOLDER_NAME" >> $GITHUB_OUTPUT
elif [[ $BASH_REMATCH = heads/COMPAS-1.x.LTS ]]; then
echo This is a commit to the COMPAS-1.x.LTS branch
FOLDER_NAME=1.x.LTS
echo "commit_type=COMPAS-1.x.LTS" >> $GITHUB_OUTPUT
else
echo This is a commit to main branch
FOLDER_NAME=latest
echo "commit_type=main" >> $GITHUB_OUTPUT
fi;
fi;
mkdir -p deploy/$FOLDER_NAME
mv dist/docs/* deploy/$FOLDER_NAME/
echo "subfolder=$FOLDER_NAME" >> $GITHUB_OUTPUT
echo "Docs is built at deploy/$FOLDER_NAME/"
# Deploy docs to ghpage
- name: Deploy docs
if: success() && steps.docs.outputs.commit_type != 'pull'
uses: crazy-max/ghaction-github-pages@v2
with:
target_branch: gh-pages
build_dir: deploy
keep_history: true
env:
GITHUB_TOKEN: ${{ inputs.github_token }}
# Remove old patches and update the versions.json file
- uses: actions/checkout@v4
if: success() && steps.docs.outputs.commit_type == 'tag'
with:
ref: gh-pages
- uses: compas-dev/compas-actions.docversions@v3
if: success() && steps.docs.outputs.commit_type == 'tag'
with:
doc_url: ${{ inputs.doc_url }}
only_keep_latest_patch: true
- name: Update docs site
if: success() && steps.docs.outputs.commit_type == 'tag'
uses: crazy-max/ghaction-github-pages@v2
with:
target_branch: gh-pages
build_dir: ./
keep_history: false
env:
GITHUB_TOKEN: ${{ inputs.github_token }}