From c934331167d10fb2e38b307c90801cd0a154dd89 Mon Sep 17 00:00:00 2001 From: Surabhi Date: Mon, 18 Apr 2022 14:00:42 +0530 Subject: [PATCH 1/2] build & deploy workflow --- .github/workflows/build.yml | 54 +++++++++++++++++++++++++ .github/workflows/docker-build-push.yml | 29 +++++++++++++ pom.xml | 15 ++++++- settings.xml | 22 ++++++++++ 4 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/docker-build-push.yml create mode 100644 settings.xml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..f466682 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,54 @@ +name: Build on Push & Pull Request +on: [push, pull_request] + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + distribution: 'temurin' + + - name: Cache Maven packages + uses: actions/cache@v1 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + + - name: maven-settings-xml-action + uses: whelk-io/maven-settings-xml-action@v20 + with: + servers: > + [ + { + "id": "github-message-rosa", + "username": "${env.GITHUB_USERNAME}", + "password": "${env.GITHUB_TOKEN}" + }, + { + "id": "github-utils", + "username": "${env.GITHUB_USERNAME}", + "password": "${env.GITHUB_TOKEN}" + } + ] + output_file: $GITHUB_WORKSPACE/settings.xml + env: + GITHUB_USERNAME: ${{ secrets.GH_USERNAME }} + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + + - name: Build and analyze + env: + GITHUB_USERNAME: ${{ secrets.GH_USERNAME }} + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + run: | + cat $GITHUB_WORKSPACE/settings.xml + mvn -B verify -s $GITHUB_WORKSPACE/settings.xml -DskipTests + \ No newline at end of file diff --git a/.github/workflows/docker-build-push.yml b/.github/workflows/docker-build-push.yml new file mode 100644 index 0000000..015082c --- /dev/null +++ b/.github/workflows/docker-build-push.yml @@ -0,0 +1,29 @@ +name: Docker Build & Push on Tag + +on: + push: + tags: + - 'v*.*.*' + +jobs: + docker-build-push: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v1 + - name: Login to DockerHub Registry + run: echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin + - name: Set output + id: vars + run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} + - name: Build the tagged Docker image + env: + RELEASE_VERSION: ${{ steps.vars.outputs.tag }} + run: | + echo $RELEASE_VERSION + echo ${{ steps.vars.outputs.tag }} + docker build . --file Dockerfile --build-arg username=${{ secrets.GH_USERNAME }} --build-arg token=${{ secrets.GH_TOKEN }} --tag samagragovernance/transformer:$RELEASE_VERSION + - name: Push the tagged Docker image + env: + RELEASE_VERSION: ${{ steps.vars.outputs.tag }} + run: docker push samagragovernance/transformer:$RELEASE_VERSION diff --git a/pom.xml b/pom.xml index 8b01545..fb7281b 100644 --- a/pom.xml +++ b/pom.xml @@ -19,11 +19,22 @@ 11 + jcenter https://jcenter.bintray.com + + github-utils + GitHub Packages + https://maven.pkg.github.com/samagra-comms/utils + + + github-message-rosa + GitHub Packages + https://maven.pkg.github.com/samagra-comms/message-rosa + @@ -134,12 +145,12 @@ com.uci message-rosa - 0.0.1-SNAPSHOT + 0.0.1 com.uci utils - 0.0.1-SNAPSHOT + 0.0.3 diff --git a/settings.xml b/settings.xml new file mode 100644 index 0000000..0ac62fe --- /dev/null +++ b/settings.xml @@ -0,0 +1,22 @@ + + + + github + GH_USERNAME + GH_TOKEN + + + github-utils + GH_USERNAME + GH_TOKEN + + + github-message-rosa + GH_USERNAME + GH_TOKEN + + + From b704325850afc1736dc27a12c40aea34cc237373 Mon Sep 17 00:00:00 2001 From: Surabhi Date: Mon, 18 Apr 2022 14:07:18 +0530 Subject: [PATCH 2/2] Dockerfile --- Dockerfile | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) mode change 120000 => 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile deleted file mode 120000 index 868c594..0000000 --- a/Dockerfile +++ /dev/null @@ -1 +0,0 @@ -build/Dockerfile \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..262820a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,38 @@ +# Build stage +FROM maven:3.6.0-jdk-11-slim AS build +ENV HOME=/home/app +RUN mkdir -p $HOME +WORKDIR $HOME +ADD pom.xml $HOME + +# Arguments +ARG username +ARG token + +# Print arguments value +RUN echo $username +RUN echo $token + +# copy settings file to home settings file +COPY /settings.xml $HOME/settings.xml + +# replace username & token in settings file +RUN sed -i "s/GH_USERNAME/$username/g" $HOME/settings.xml +RUN sed -i "s/GH_TOKEN/$token/g" $HOME/settings.xml +RUN cat $HOME/settings.xml + +# Maven package build +RUN mvn -s $HOME/settings.xml dependency:go-offline + +ADD /src $HOME/src +RUN mvn package -s $HOME/settings.xml -DskipTests=true + +# Package stage +FROM openjdk:12-alpine +ENV HOME=/home/app +ENV export $(cat .env | xargs) +WORKDIR $HOME +COPY --from=build $HOME/target/*.jar app.jar + +EXPOSE 8080 +ENTRYPOINT ["java","-jar","app.jar"]