-
Notifications
You must be signed in to change notification settings - Fork 4
131 lines (110 loc) · 3.24 KB
/
Copy pathci.yml
File metadata and controls
131 lines (110 loc) · 3.24 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
name: CI
on:
workflow_dispatch:
pull_request:
branches:
- main
schedule:
- cron: "0 2 * * *"
jobs:
build-maven:
name: Build Maven projects
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v7.0.0
- name: Setup Java and Maven cache
uses: actions/setup-java@v5.4.0
with:
distribution: 'temurin'
java-version: '21'
check-latest: true
cache: 'maven'
- name: Build projects
working-directory: lang
run: >
./mvnw clean verify
--batch-mode
--fail-at-end
--update-snapshots
--no-transfer-progress
- name: Stage build results
if: matrix.os == 'ubuntu-latest'
run: mkdir staging && find . -path '*/target/*/*' -prune -o -path '*/target/*.jar' -exec cp {} staging/ \;
- name: Upload build results
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v7
with:
name: framework-and-cli
path: staging/
build-vscode-extension:
name: Build VSCode extension
runs-on: ubuntu-latest
needs: [build-maven]
steps:
- name: Checkout repository
uses: actions/checkout@v7.0.0
- name: Download Maven build results
uses: actions/download-artifact@v8
with:
name: framework-and-cli
path: framework-and-cli
- name: Extract IDE package
run: cp framework-and-cli/tools.vitruv.neojoin.frontend.ide.jar vscode-plugin/
- name: Setup node
uses: actions/setup-node@v6
with:
node-version: 20
check-latest: true
cache: npm
cache-dependency-path: vscode-plugin/package-lock.json
- name: Install dependencies
working-directory: vscode-plugin
run: npm clean-install
- name: Package extension
working-directory: vscode-plugin
run: npx @vscode/vsce package
- name: Stage build results
run: mkdir staging && cp vscode-plugin/*.vsix staging/;
- name: Upload build results
uses: actions/upload-artifact@v7
with:
name: vscode-plugin
path: staging/
sonar:
name: SonarQube scan of Maven projects
if: github.event_name == 'schedule' || (github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]')
runs-on: ubuntu-latest
needs: [build-maven]
steps:
- name: Checkout repository
uses: actions/checkout@v7.0.0
with:
fetch-depth: 0
- name: Setup Java and Maven cache
uses: actions/setup-java@v5.4.0
with:
distribution: 'temurin'
java-version: '21'
check-latest: true
cache: 'maven'
- name: Setup SonarQube cache
uses: actions/cache@v6
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Analyze projects
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
working-directory: lang
run: >
./mvnw clean verify sonar:sonar -P coverage
--batch-mode
--update-snapshots
--no-transfer-progress
-Dsonar.projectKey=vitruv-tools_NeoJoin