92 lines
2.3 KiB
YAML
92 lines
2.3 KiB
YAML
name: Build Resilient App.
|
|
|
|
on:
|
|
push:
|
|
branches: [main, master, develop]
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: [docker]
|
|
|
|
steps:
|
|
- name: Show working directory contents
|
|
run: ls -la
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '18'
|
|
|
|
- name: Set up Java 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin' # or 'zulu', 'corretto', etc.
|
|
java-version: '17'
|
|
cache: 'maven' # optional: cache ~/.m2
|
|
|
|
- name: Install Maven and Git
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y maven git
|
|
|
|
# Replaced by steps : Set up Node.js; Set up Java 17; Install Maven and Git
|
|
# for improved performance
|
|
# - name: Install system dependencies
|
|
# run: |
|
|
# apt-get update
|
|
# apt-get install -y nodejs npm openjdk-17-jdk maven git
|
|
# export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
|
|
# echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
|
|
|
|
- name: Check Java and Node versions
|
|
run: |
|
|
java -version
|
|
mvn -v
|
|
node -v
|
|
npm -v
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install frontend dependencies
|
|
run: |
|
|
cd src/main/webapp
|
|
npm ci
|
|
|
|
- name: Cache node_modules
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
key: node-modules-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
node-modules-
|
|
|
|
- name: Build frontend
|
|
run: |
|
|
cd src/main/webapp
|
|
npm run build
|
|
|
|
- name: Cache Maven dependencies
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ~/.m2/repository
|
|
key: maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }}
|
|
restore-keys: |
|
|
maven-${{ runner.os }}-
|
|
|
|
- name: Build backend (Spring Boot)
|
|
run: |
|
|
mvn clean package -Pprod -DskipTests
|
|
|
|
- name: List output files
|
|
run: |
|
|
ls -lh target/*.jar || true
|
|
|
|
- name: Upload backend JAR
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: app-backend
|
|
path: target/resilient*.jar
|