-
Notifications
You must be signed in to change notification settings - Fork 156
98 lines (86 loc) · 3.42 KB
/
main.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
name: Structr CI Pipeline
on:
push
jobs:
run-tests:
if: ${{ !startsWith( github.actor, 'dependabot' ) }}
runs-on: self-hosted
environment: build-and-test
strategy:
matrix:
include:
- module: structr-base
variableName: Base
- module: structr-ui
variableName: UI
- module: structr-core
variableName: CORE
- module: structr-rest
variableName: REST
- module: structr-db-driver-api
variableName: DB_DRIVER_API
# - module: structr-memgraph-driver
# variableName: MEMGRAPH_DRIVER
# - module: structr-memory-driver
# variableName: MEMORY_DRIVER
- module: structr-modules
variableName: MODULES
- module: structr-neo4j-bolt-driver
variableName: NEO4J_BOLT_DRIVER
steps:
- uses: actions/checkout@v3
- name: Start Test Database
run: >-
docker run -d --name ${{ matrix.module }}-test-${{ github.run_id }}
-p 7687
-e NEO4J_AUTH=neo4j/admin123
-e NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
-e NEO4J_dbms_memory_heap_maxSize=4G
-e NEO4J_dbms_memory_pagecache_size=4G neo4j:4.4 &&
echo "ASSIGNED_PORT_${{ matrix.variableName }}_${{ github.run_id }}=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "7687/tcp") 0).HostPort}}' ${{ matrix.module }}-test-${{ github.run_id }})" >> $GITHUB_ENV
- name: Install GraalVM
uses: graalvm/setup-graalvm@v1
with:
java-version: '21'
distribution: 'graalvm-community'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Compile and run Tests
run: >-
mvn clean install -DskipTests -DskipDist -DskipDocker -DskipDeb -DskipDockerTestDB &&
cd ${{ matrix.module }} &&
mvn install -DskipDockerTestDB -Denv.testDatabaseConnection="bolt://localhost:${ASSIGNED_PORT_${{ matrix.variableName }}_${{ github.run_id }}}"
- name: Stop Test Database
if: always()
run: docker stop ${{ matrix.module }}-test-${{ github.run_id }}
build-and-deploy:
runs-on: self-hosted
environment: build-and-test
if: ${{ success() && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/release') }}
needs: run-tests
steps:
- uses: actions/checkout@v3
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: structr
password: ${{ secrets.STRUCTR_DOCKER_PASSWORD }}
- name: Install GraalVM
uses: graalvm/setup-graalvm@v1
with:
java-version: '21'
distribution: 'graalvm-community'
github-token: ${{ secrets.GITHUB_TOKEN }}
- run: mvn -U clean install -Pwith-sources -DskipTests -DskipDockerTestDB
- name: Upload binaries
run: >-
scp -v structr-binaries/target/structr-*.deb structr.com:/files/repositories/upload > /dev/null 2>&1 &&
scp -v structr-binaries/target/structr-*-dist.zip structr.com:/files/repositories/upload >/dev/null 2>&1
cleanup-system:
runs-on: self-hosted
if: always()
needs: [run-tests, build-and-deploy]
steps:
- name: Cleanup docker
run: docker container prune -f && docker image prune -f && docker volume prune -f
- name: Cleanup runner home
run: cd ~/actions-runner/_work/structr/ && rm -rf structr