-
Notifications
You must be signed in to change notification settings - Fork 0
139 lines (122 loc) · 4.17 KB
/
ci.yaml
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
name: CI
on:
# Rebuild whenever there's a push to master
push:
branches:
- master
# Also allow direct triggering, typically following a build of gate-core
workflow_dispatch:
# Prevent concurrent builds of the same branch - a new push will cancel the
# running workflow and start another
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
checks: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Master Branch
uses: actions/checkout@v3
- name: Setup Pages
uses: actions/configure-pages@v2
continue-on-error: true
# This step may error out when run in a fork that doesn't have pages
# enabled - if this happens, run the rest but skip anything that
# involves publishing to pages. The last thing configure-pages does
# is set an environment variable GITHUB_PAGES=true which is visible
# to subsequent steps, so we can condition on that.
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'zulu'
cache: maven
- name: Set up Maven
uses: stCarolas/[email protected]
with:
maven-version: "3.8.8"
# Override http://repo.gate.ac.uk to use https:// instead
- name: Configure Maven settings
uses: whelk-io/maven-settings-xml-action@v21
with:
mirrors: >
[
{
"id": "gate.ac.uk-https",
"name": "GATE repo (secure)",
"mirrorOf": "gate.ac.uk",
"url": "https://repo.gate.ac.uk/content/groups/public/"
}
]
repositories: >
[
{
"id": "central",
"name": "Maven Central",
"url": "https://repo1.maven.org/maven2",
"releases": {
"enabled": "true"
},
"snapshots": {
"enabled": "false"
}
}
]
plugin_repositories: >
[
{
"id": "central",
"name": "Maven Central",
"url": "https://repo1.maven.org/maven2",
"releases": {
"enabled": "true"
},
"snapshots": {
"enabled": "false"
}
}
]
servers: >
[
{
"id": "gate.snapshots",
"username": "${{ secrets.GATE_REPO_USERNAME }}",
"password": "${{ secrets.GATE_REPO_PASSWORD }}"
}
]
- name: Build with Maven
run: mvn --batch-mode -e clean install
- name: Publish Test Report
if: success() || failure()
uses: EnricoMi/publish-unit-test-result-action@v2
with:
junit_files: "*/target/surefire-reports/*.xml"
- name: Build site
run: mvn --batch-mode -e -DskipTests site site:stage
- name: Upload artifact
if: env.GITHUB_PAGES == 'true'
uses: actions/upload-pages-artifact@v1
with:
# Upload entire repository
path: 'target/staging'
# Only do the deploy and distro if we're in the main GateNLP repo, not a fork
- name: Deploy to repo.gate.ac.uk
if: github.repository == 'GateNLP/gate-top' && github.ref == 'refs/heads/master'
run: mvn --batch-mode -e -Dmaven.test.skip=true source:jar javadoc:jar deploy
# We want to avoid cacheing -SNAPSHOT dependencies from our local maven
# cache, to ensure that we always go out and check for them again at the
# next build in case they have changed.
- name: Delete snapshots from m2 repository
if: always()
run: |
find ~/.m2/repository -name \*-SNAPSHOT -type d -exec rm -rf {} \+ || :
- name: Deploy site to GitHub Pages
if: env.GITHUB_PAGES == 'true'
id: deployment
uses: actions/deploy-pages@v1