From 5796a1a1a537ba484c9ee572b2fab7b02436b519 Mon Sep 17 00:00:00 2001 From: Vladimir Pikovski Date: Fri, 10 Nov 2023 11:04:36 +0200 Subject: [PATCH] inital commit - build , publish , run stages --- .github/workflows/ci_pipeline.yml | 115 +++++++++++++++++++++++++ Dockerfile | 8 ++ myapp/pom.xml | 2 +- myapp/src/main/java/com/myapp/App.java | 2 +- 4 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/ci_pipeline.yml create mode 100644 Dockerfile 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" ); } }