Skip to content

Commit 337a511

Browse files
committed
chore: try new workflow
1 parent a44c452 commit 337a511

4 files changed

Lines changed: 138 additions & 184 deletions

File tree

.github/workflows/ci.yml

Lines changed: 49 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,42 @@ on:
44
push:
55
pull_request:
66

7+
env:
8+
MVN: mvn --batch-mode
9+
710
jobs:
8-
styles:
11+
lint-npm:
912
runs-on: ubuntu-latest
1013
steps:
1114
- uses: actions/checkout@v4
1215
- uses: actions/setup-node@v4
1316
with:
1417
node-version-file: 'package.json'
1518
cache: 'npm'
19+
1620
- run: npm ci
1721
- run: npm run lint:scss --silent
1822
- run: npm run lint:js --silent
1923

20-
java:
24+
# lint-java:
25+
# runs-on: ubuntu-latest
26+
# steps:
27+
# - uses: actions/checkout@v4
28+
# - uses: actions/setup-java@v4
29+
# with:
30+
# distribution: 'temurin'
31+
# java-version: '21'
32+
# cache: 'maven'
33+
#
34+
# - name: CheckStyle
35+
# run: $MVN checkstyle:check
36+
#
37+
# - name: SpotBugs
38+
# if: success() || failure()
39+
# run: $MVN compile spotbugs:check
40+
41+
tests-java:
2142
runs-on: ubuntu-latest
22-
env:
23-
MVN: mvn --batch-mode
24-
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
2543
steps:
2644
- uses: actions/checkout@v4
2745
- uses: actions/setup-java@v4
@@ -30,13 +48,31 @@ jobs:
3048
java-version: '21'
3149
cache: 'maven'
3250

33-
- name: Run Checkstyle check
34-
run: $MVN checkstyle:check
35-
36-
- name: Run SpotBugs check
37-
if: success() || failure()
38-
run: $MVN compile spotbugs:check
39-
4051
- name: Run tests
41-
if: success() || failure()
4252
run: $MVN --show-version test
53+
54+
build:
55+
runs-on: ubuntu-latest
56+
needs: [lint-npm, tests-java]
57+
steps:
58+
- uses: actions/checkout@v4
59+
- uses: actions/setup-java@v4
60+
with:
61+
distribution: 'temurin'
62+
java-version: '21'
63+
cache: 'maven'
64+
- uses: actions/setup-node@v4
65+
with:
66+
node-version-file: 'package.json'
67+
cache: 'npm'
68+
69+
- run: npm ci
70+
- run: npm run build
71+
72+
- run: $MVN -P prod,!local -Dmaven.test.skip=true install
73+
74+
- uses: actions/upload-artifact@v4
75+
with:
76+
name: learnweb-war
77+
path: target/Learnweb.war
78+
if-no-files-found: error

.github/workflows/codeql.yml

Lines changed: 0 additions & 93 deletions
This file was deleted.

.github/workflows/deploy.yml

Lines changed: 85 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -7,100 +7,107 @@ on:
77
branches: [ main ]
88

99
jobs:
10-
build:
10+
deploy-dev:
1111
runs-on: ubuntu-latest
1212
if: ${{ github.event.workflow_run.conclusion == 'success' }}
13-
outputs:
14-
version: ${{ steps.vars.outputs.version }}
1513
steps:
16-
- uses: actions/checkout@v4
17-
- uses: actions/setup-java@v4
14+
- name: Dump GitHub context
15+
env:
16+
GITHUB_CONTEXT: ${{ toJSON(github) }}
17+
run: echo "$GITHUB_CONTEXT"
18+
19+
- name: Dump workflow_run context
20+
env:
21+
GITHUB_WF_RUN: ${{ toJSON(github.event.workflow_run) }}
22+
run: echo "$GITHUB_WF_RUN"
23+
24+
- id: get_version
25+
name: Get version
26+
uses: astappiev/get-version-from-tag@v1
1827
with:
19-
distribution: 'temurin'
20-
java-version: '21'
21-
cache: 'maven'
22-
- uses: actions/setup-node@v4
28+
format: 'tomcat'
29+
30+
- name: Display version
31+
run: |
32+
VERSION=$(echo "${{ steps.get_version.outputs.version }}")
33+
echo $VERSION
34+
35+
- uses: appleboy/ssh-action@v1.2.2
2336
with:
24-
node-version-file: 'package.json'
25-
cache: 'npm'
37+
host: ${{ secrets.DEPLOY_HOST }}
38+
username: ${{ secrets.DEPLOY_USERNAME }}
39+
key: ${{ secrets.DEPLOY_PRIVATE_KEY }}
2640

27-
- run: npm ci
28-
- run: npm run build
41+
proxy_host: ${{ secrets.DEPLOY_JUMP_HOST }}
42+
proxy_username: ${{ secrets.DEPLOY_JUMP_USERNAME }}
43+
proxy_key: ${{ secrets.DEPLOY_PRIVATE_KEY }}
2944

30-
- run: mvn --quiet -P prod,!local -Dmaven.test.skip=true install
31-
env:
32-
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
45+
script: |
46+
cd ~/stacks/learnweb_dev
3347
34-
- name: Read version
35-
id: vars
36-
run: echo "version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT
48+
# Ensure webapps directory exists
49+
mkdir -p webapps
3750
38-
- uses: actions/upload-artifact@v4
39-
with:
40-
name: learnweb-war
41-
path: target/Learnweb.war
42-
if-no-files-found: error
51+
# Get artifact ID
52+
ARTIFACT_ID=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -H "Accept: application/vnd.github+json" \
53+
"${{ github.event.workflow_run.artifacts_url }}" | jq -r '.artifacts[] | select(.name=="learnweb-war") | .id')
4354
44-
deploy-dev:
45-
runs-on: ubuntu-latest
46-
needs: [ build ]
47-
steps:
48-
- uses: actions/download-artifact@v4
49-
with:
50-
name: learnweb-war
55+
# Create temp directory for extraction
56+
TEMP_DIR=$(mktemp -d)
5157
52-
- name: Rename artifact
53-
run: mv Learnweb.war dev##${{ needs.build.outputs.version }}.war
58+
# Download and extract in two steps
59+
curl -L -s -H "Accept: application/vnd.github+json" -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
60+
"https://api.github.com/repos/${{ github.repository }}/actions/artifacts/${ARTIFACT_ID}/zip" -o "${TEMP_DIR}/artifact.zip"
5461
55-
- name: Install SSH keys
56-
uses: shimataro/ssh-key-action@v2
57-
with:
58-
name: id_ed25519
59-
key: ${{ secrets.DEPLOY_PRIVATE_KEY }}
60-
known_hosts: ${{ secrets.DEPLOY_KNOWN_HOSTS }}
61-
config: |
62-
Host bastion
63-
HostName ${{ secrets.DEPLOY_JUMP_HOST }}
64-
User ${{ secrets.DEPLOY_JUMP_USERNAME }}
62+
unzip -q "${TEMP_DIR}/artifact.zip" -d "${TEMP_DIR}"
6563
66-
Host learnweb
67-
HostName ${{ secrets.DEPLOY_HOST }}
68-
User ${{ secrets.DEPLOY_USERNAME }}
69-
ProxyJump bastion
64+
# Move to final location with correct name
65+
mv "${TEMP_DIR}/Learnweb.war" "webapps/ROOT##${{ steps.get_version.outputs.version }}.war"
7066
71-
- name: Copy artifact to server
72-
run: rsync -avzh dev##*.war learnweb:${{ secrets.DEPLOY_PATH }}/
67+
# Clean up
68+
rm -rf "${TEMP_DIR}"
7369
7470
deploy-prod:
7571
runs-on: ubuntu-latest
76-
if: contains(github.event.workflow_run.head_commit.message, 'version release')
77-
needs: [ build ]
72+
if: startsWith(github.event.workflow_run.ref, 'refs/tags/v')
73+
needs: [ deploy-dev ]
7874
steps:
79-
- uses: actions/download-artifact@v4
75+
- id: get_version
76+
name: Get version
77+
uses: astappiev/get-version-from-tag@v1
8078
with:
81-
name: learnweb-war
82-
83-
- name: Rename artifact
84-
run: mv Learnweb.war ROOT##${{ needs.build.outputs.version }}.war
85-
86-
- name: Install SSH keys
87-
uses: shimataro/ssh-key-action@v2
88-
with:
89-
name: id_ed25519
90-
key: ${{ secrets.DEPLOY_PRIVATE_KEY }}
91-
known_hosts: ${{ secrets.DEPLOY_KNOWN_HOSTS }}
92-
config: |
93-
Host bastion
94-
HostName ${{ secrets.DEPLOY_JUMP_HOST }}
95-
User ${{ secrets.DEPLOY_JUMP_USERNAME }}
96-
97-
Host learnweb
98-
HostName ${{ secrets.DEPLOY_HOST }}
99-
User ${{ secrets.DEPLOY_USERNAME }}
100-
ProxyJump bastion
101-
102-
- name: Check if artifact exists
103-
run: "! ssh learnweb test -f '${{ secrets.DEPLOY_PATH }}/ROOT##${{ needs.build.outputs.version }}.war' || false"
104-
105-
- name: Copy artifact to server
106-
run: rsync -avzh --ignore-existing ROOT##*.war learnweb:${{ secrets.DEPLOY_PATH }}/
79+
format: 'tomcat'
80+
81+
- name: Display version
82+
run: |
83+
VERSION=$(echo "${{ steps.get_version.outputs.version }}")
84+
echo $VERSION
85+
86+
# - uses: actions/download-artifact@v4
87+
# with:
88+
# name: learnweb-war
89+
#
90+
# - name: Rename artifact
91+
# run: mv Learnweb.war ROOT##${{ needs.build.outputs.version }}.war
92+
#
93+
# - name: Install SSH keys
94+
# uses: shimataro/ssh-key-action@v2
95+
# with:
96+
# name: id_ed25519
97+
# key: ${{ secrets.DEPLOY_PRIVATE_KEY }}
98+
# known_hosts: ${{ secrets.DEPLOY_KNOWN_HOSTS }}
99+
# config: |
100+
# Host bastion
101+
# HostName ${{ secrets.DEPLOY_JUMP_HOST }}
102+
# User ${{ secrets.DEPLOY_JUMP_USERNAME }}
103+
#
104+
# Host learnweb
105+
# HostName ${{ secrets.DEPLOY_HOST }}
106+
# User ${{ secrets.DEPLOY_USERNAME }}
107+
# ProxyJump bastion
108+
#
109+
# - name: Check if artifact exists
110+
# run: "! ssh learnweb test -f '${{ secrets.DEPLOY_PATH }}/ROOT##${{ needs.build.outputs.version }}.war' || false"
111+
#
112+
# - name: Copy artifact to server
113+
# run: rsync -avzh --ignore-existing ROOT##*.war learnweb:${{ secrets.DEPLOY_PATH }}/

src/main/conf/spotbugs-exclude.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@
4242
<Class name="de.l3s.learnweb.user.UserBean"/>
4343
<Bug pattern="DCN_NULLPOINTER_EXCEPTION"/>
4444
</Match>
45+
<!-- Better safe than sorry (allows to catch exceptions when they are not thrown) -->
46+
<Match>
47+
<Bug pattern="REC_CATCH_EXCEPTION"/>
48+
</Match>
4549
<!-- We need the pseudo random with defined seed -->
4650
<Match>
4751
<Class name="de.l3s.learnweb.resource.survey.SurveyPage"/>

0 commit comments

Comments
 (0)