diff --git a/.github/workflows/ci_pipeline.yml b/.github/workflows/ci_pipeline.yml
new file mode 100644
index 000000000..fcc413590
--- /dev/null
+++ b/.github/workflows/ci_pipeline.yml
@@ -0,0 +1,115 @@
+name: Maven Build and Docker Image deploy
+on: [push]
+
+env:
+ ACTIONS_ALLOW_UNSECURE_COMMANDS: true
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: repo checkout
+ uses: actions/checkout@v4
+
+ - name: update_version
+ working-directory: ./myapp
+ id: update_version
+ run: |
+ version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
+ newVersion=$(echo $version | awk -F'[.-]' '{print $1"."$2"."$3+1}') >> $GITHUB_ENV
+ mvn versions:set -DnewVersion=$newVersion
+ echo "newVersion=$newVersion" >> "$GITHUB_ENV"
+ echo $newVersion >> version.txt
+
+ - name: Compile Code and Package Artifact
+ working-directory: ./myapp
+ run: |
+ mvn clean package
+
+ - name: Create Jar artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: my-artifact
+ path: ${{ github.workspace }}/myapp/target/*.jar
+
+ - name: Create Version artifact
+ uses: actions/upload-artifact@v2
+ with:
+ name: version
+ path: myapp/version.txt
+
+
+ publish:
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v4
+
+ - name: Download JAR
+ uses: actions/download-artifact@v3
+ with:
+ name: my-artifact
+ path: ${{ github.workspace }}/myapp/target/
+
+ - name: Download Version
+ uses: actions/download-artifact@v3
+ with:
+ name: version
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKER_UNAME }}
+ password: ${{ secrets.DOCKER_KEY }}
+
+
+ - name: Set tag version
+ run : |
+ echo "new_tag=$(cat version.txt)" >> "$GITHUB_ENV"
+
+ - name: Build Docker image and push
+ uses: docker/build-push-action@v4
+ with:
+ context: .
+ file: Dockerfile
+ push: true
+ tags: vladipiko/maven-hello-world:${{ env.new_tag }}
+
+ deploy:
+ runs-on: ubuntu-latest
+ needs: publish
+ steps:
+ - name: Download Version
+ uses: actions/download-artifact@v3
+ with:
+ name: version
+
+ - name: Set tag version
+ run : |
+ echo "new_tag=$(cat version.txt)" >> "$GITHUB_ENV"
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKER_UNAME }}
+ password: ${{ secrets.DOCKER_KEY }}
+
+ - name: Run the build process with Docker
+ uses: addnab/docker-run-action@v3
+ with:
+ image: vladipiko/maven-hello-world:${{ env.new_tag }}
+
+
+
+ # - name: Download and Run Docker Image
+ # run: |
+ # docker pull vladipiko/maven-hello-world:${{ env.new_tag }}
+ # docker run --rm -p 8080:8080 vladipiko/maven-hello-world:${{ env.new_tag }}
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..1bfef146d
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,8 @@
+FROM openjdk:11-jre-slim
+RUN useradd -u 10001 myuser
+USER myuser
+COPY myapp/target/myapp-*.jar /app.jar
+RUN ls -l
+EXPOSE 8080
+ENTRYPOINT ["java", "-jar", "app.jar"]
+# CMD ["java", "-jar", "app.jar"]
\ No newline at end of file
diff --git a/myapp/pom.xml b/myapp/pom.xml
index 32a263666..6c038b106 100644
--- a/myapp/pom.xml
+++ b/myapp/pom.xml
@@ -6,7 +6,7 @@
com.myapp
myapp
- 1.0-SNAPSHOT
+ 1.0-0
myapp
diff --git a/myapp/src/main/java/com/myapp/App.java b/myapp/src/main/java/com/myapp/App.java
index c8f33b86e..49664b559 100644
--- a/myapp/src/main/java/com/myapp/App.java
+++ b/myapp/src/main/java/com/myapp/App.java
@@ -8,6 +8,6 @@ public class App
{
public static void main( String[] args )
{
- System.out.println( "Hello World!" );
+ System.out.println( "Hello World! Vladimir" );
}
}