diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..92e9e8c4 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,12 @@ +Dockerfile +*.md +.git +/app/target/ +/common/target/ +/dhis/target/ +/fhir/target/ +/fhir-dstu3/target/ +/fhir-r4/target/ +/metadata-sheet/target/ +/summary/target/ +/.idea/ diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 00000000..3cbb9d90 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,103 @@ +name: Docker + +on: + push: + # Publish `master` as Docker `master` tag. + # See also https://github.com/crazy-max/ghaction-docker-meta#basic + branches: + - master + + # Publish `v1.2.3` tags as releases. + tags: + - v* + + pull_request: + # Run Tests when changes are made to the Docker file + paths: + - 'Dockerfile' + + workflow_dispatch: + inputs: + customTag: + description: "Includes the specified tag to docker image tags" + required: false + +jobs: + # Run image build test + test: + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' + + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + + - name: Run Build tests + run: docker build . --file Dockerfile + + push: + runs-on: ubuntu-latest + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' + + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Cache Docker layers + uses: actions/cache@v2.1.6 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1.3.0 + + - name: Docker meta + id: docker_meta + uses: crazy-max/ghaction-docker-meta@v1 + with: + images: opensrp/dhis2-fhir-adapter + tag-custom: ${{ github.event.inputs.customTag }} + + - name: Login to DockerHub + uses: docker/login-action@v1.10.0 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v1.10.0 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Push to Docker Image Repositories + uses: docker/build-push-action@v2.5.0 + id: docker_build + with: + push: true + platforms: linux/amd64,linux/arm64 + tags: | + ${{ steps.docker_meta.outputs.tags }} + ghcr.io/${{ steps.docker_meta.outputs.tags }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache-new + + # Temp fix + # https://github.com/docker/build-push-action/issues/252 + # https://github.com/moby/buildkit/issues/1896 + - name: Move cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 00000000..7d16ed8b --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,24 @@ +# This workflow will build a Java project with Maven +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: Java CI with Maven + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 8 + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Build with Maven + run: mvn -B package -DskipTests --file pom.xml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..7888f133 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +FROM maven:3-openjdk-8-slim AS build +WORKDIR /tmp/dhis2-fhir-adapter +ARG DHIS2_HOME=/app + +COPY . /tmp/dhis2-fhir-adapter + +# create package +RUN mvn clean package -DskipTests + +# create DHIS2_HOME/services/fhir-adapter configuration folder here https://github.com/opensrp/dhis2-fhir-adapter#configuration +RUN mkdir -p ${DHIS2_HOME}/services/fhir-adapter \ + && cp /tmp/dhis2-fhir-adapter/app/target/dhis2-fhir-adapter.war ${DHIS2_HOME}/main.war + +FROM openjdk:8-jre-slim AS deploy + +# specify the DHIS2_HOME environment variable +ENV DHIS2_HOME=/app + +# create opensrp user +ARG UID=10001 +ARG GID=${UID} +RUN groupadd -g ${GID} opensrp \ + && useradd -u ${UID} -g ${GID} opensrp + +COPY --chown=opensrp:opensrp --from=build ${DHIS2_HOME} ${DHIS2_HOME} + +USER opensrp + +WORKDIR ${DHIS2_HOME} + +CMD java -jar ${DHIS2_HOME}/main.war diff --git a/app/pom.xml b/app/pom.xml index bb203037..5befea36 100644 --- a/app/pom.xml +++ b/app/pom.xml @@ -132,25 +132,6 @@ - - pl.project13.maven - git-commit-id-plugin - - ${project.basedir}/../.git - git - false - true - ${project.build.outputDirectory}/git.properties - false - yyyy-MM-dd'T'HH:mm:ss.SSSXXX - UTC - - branch - commit.id - commit.time - - - org.springframework.boot spring-boot-maven-plugin @@ -161,13 +142,6 @@ - - - ${git.branch} - ${git.commit.id} - ${git.commit.time} - - maven-war-plugin