Skip to content
Snippets Groups Projects
Commit 2542d0f3 authored by Stian Lyng's avatar Stian Lyng
Browse files

add github workflow

parent cd18ea3b
No related branches found
No related tags found
No related merge requests found
# Use a specific version of the JDK image to ensure consistency ## Use a specific version of the JDK image to ensure consistency
FROM eclipse-temurin:19-jdk-alpine AS build #FROM eclipse-temurin:19-jdk-alpine AS build
#
## Set the working directory
#WORKDIR /app
#
## Copy the pom.xml file first, and then download dependencies separately to take advantage of Docker layer caching
#COPY pom.xml .
#RUN apk add maven
#RUN mvn dependency:go-offline
#
## Copy the source code and package the application
#COPY src ./src
#RUN mvn clean package
#
## Use a new stage to reduce the final image size
#FROM eclipse-temurin:19-jre-alpine
#
## Set the working directory
#WORKDIR /app
#
## Copy the packaged application from the build stage
#COPY --from=build /app/target/SmartMat-0.0.1-SNAPSHOT.jar ./SmartMat.jar
#
## Define the entrypoint and expose the application port
#ENTRYPOINT ["java","-jar","SmartMat.jar"]
#EXPOSE 8080
#
# Use the official Maven image as the base image
FROM maven:3.6.3-jdk-11 as builder
# Set the working directory # Set the working directory
WORKDIR /app WORKDIR /app
# Copy the pom.xml file first, and then download dependencies separately to take advantage of Docker layer caching # Copy the pom.xml file to the working directory
COPY pom.xml . COPY pom.xml .
RUN apk add maven
# Download and cache dependencies to improve build times
RUN mvn dependency:go-offline RUN mvn dependency:go-offline
# Copy the source code and package the application # Copy the rest of the application code
COPY src ./src COPY src ./src
# Build the application and package it as a JAR file
RUN mvn clean package RUN mvn clean package
# Use a new stage to reduce the final image size # Use the official OpenJDK image as the runtime image
FROM eclipse-temurin:19-jre-alpine FROM openjdk:11-jre-slim
# Set the working directory # Set the working directory
WORKDIR /app WORKDIR /app
# Copy the packaged application from the build stage # Copy the JAR file from the builder stage
COPY --from=build /app/target/SmartMat-0.0.1-SNAPSHOT.jar ./SmartMat.jar COPY --from=builder /app/target/*.jar ./app.jar
# Define the entrypoint and expose the application port # Expose the port the application will run on
ENTRYPOINT ["java","-jar","SmartMat.jar"]
EXPOSE 8080 EXPOSE 8080
# Run the application
CMD ["java", "-jar", "app.jar"]
\ No newline at end of file
name: Build
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Cache Maven dependencies
uses: actions/cache@v2
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Build with Maven
run: mvn clean install -B
- name: Upload JAR file
uses: actions/upload-artifact@v2
with:
name: my-jar-file
path: target/*.jar
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment