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