Skip to content

Commit

Permalink
Merge pull request #1 from cardano-foundation/feature/deployment
Browse files Browse the repository at this point in the history
build: deploymeny and pipeline added
  • Loading branch information
M4rc0Russ0 authored Jul 26, 2024
2 parents a0d01d4 + 1a5476a commit cc7bd11
Show file tree
Hide file tree
Showing 6 changed files with 182 additions and 74 deletions.
19 changes: 19 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## Subject

- Please write the development content.

## Changes Description

- Please write the main changes or the contents to be referred to in the review.

## How to test

- Please describe the prerequisites and the steps to test

## Evident for results

- Please attach images or videos to confirm the right result

## Referenced Ticket

- https://cardanofoundation.atlassian.net/browse/LOB-
67 changes: 67 additions & 0 deletions .github/workflows/build-with-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Run Tests

on:
push:
branches-ignore:
- main
workflow_dispatch:

jobs:

test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16.3
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'corretto'

- name: Test
run: |
./gradlew clean test
mutation-test:
needs: test
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'corretto'

- name: PiTest
run: |
./gradlew clean pitest
- name: Publish mutation test report to GitHub Pages
uses: JamesIves/github-pages-deploy-action@v4
if: github.ref == 'refs/heads/main'
with:
BRANCH: gh-pages
folder: build/reports/pitest/
target-folder: mutation-report/
80 changes: 80 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Build

on:
pull_request:
types: [ opened, synchronize ]
push:
branches:
- main
workflow_dispatch:

env:
PRIVATE_DOCKER_REGISTRY_URL: ${{ secrets.GITLAB_DOCKER_REGISTRY_URL }}
PRIVATE_DOCKER_REGISTRY_USER: Deploy-Token
PRIVATE_DOCKER_REGISTRY_PASS: ${{ secrets.GITLAB_PKG_REGISTRY_TOKEN }}
DOCKER_REGISTRIES: ${{ secrets.DOCKER_REGISTRIES }}

jobs:
publish:
permissions:
contents: read
packages: write
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Set extra environment and metadata
id: metadata
run: |
GIT_SHORT_COMMIT=$(git rev-parse --short "$GITHUB_SHA")
CURRENT_VERSION=$(grep '^version' gradle.properties | sed 's|.*version = \(.*\)$|\1|')
if [ ${{github.event_name}} == "pull_request" ]
then
PR_NUMBER=$(echo $GITHUB_REF | awk -F/ '{ print $3 }')
ARTIFACT_VERSION="${CURRENT_VERSION}-PR${PR_NUMBER}"
echo "ARTIFACT_VERSION=${ARTIFACT_VERSION}" | tee -a "$GITHUB_ENV" | tee -a "$GITHUB_OUTPUT"
else
BRANCH=${GITHUB_REF_NAME}
SANITIZED_BRANCH=$(echo $BRANCH | sed 's|/|-|g')
echo "BRANCH=${BRANCH}" | tee -a "$GITHUB_ENV" | tee -a "$GITHUB_OUTPUT"
echo "SANITIZED_BRANCH=${SANITIZED_BRANCH}" | tee -a "$GITHUB_ENV" | tee -a "$GITHUB_OUTPUT"
ARTIFACT_VERSION=${CURRENT_VERSION}-${SANITIZED_BRANCH}
echo "ARTIFACT_VERSION=${ARTIFACT_VERSION}" | tee -a "$GITHUB_ENV" | tee -a "$GITHUB_OUTPUT"
fi
echo "DOCKER_COMMIT_TAG=${ARTIFACT_VERSION}-${GIT_SHORT_COMMIT}" | tee -a "$GITHUB_ENV" | tee -a "$GITHUB_OUTPUT"
echo "DOCKER_COMMIT_GHRUNID_TAG=${ARTIFACT_VERSION}-${GIT_SHORT_COMMIT}-${GITHUB_RUN_ID}" | tee -a "$GITHUB_ENV" | tee -a "$GITHUB_OUTPUT"
echo "EARTHLY_BUILD_ARGS=DOCKER_IMAGES_EXTRA_TAGS=${ARTIFACT_VERSION}-${GIT_SHORT_COMMIT} ${ARTIFACT_VERSION}-${GIT_SHORT_COMMIT}-${GITHUB_RUN_ID}" | tee -a "$GITHUB_ENV" | tee -a "$GITHUB_OUTPUT"
- name: Docker Login (private registry)
if: contains(env.DOCKER_REGISTRIES, 'registry')
uses: docker/login-action@v2
with:
registry: ${{ env.PRIVATE_DOCKER_REGISTRY_URL }}
username: ${{ env.PRIVATE_DOCKER_REGISTRY_USER }}
password: ${{ env.PRIVATE_DOCKER_REGISTRY_PASS }}

- name: Docker Login (hub.docker.com)
if: contains(env.DOCKER_REGISTRIES, 'hub.docker.com')
uses: docker/login-action@v2
with:
username: ${{ secrets.HUB_DOCKER_COM_USER }}
password: ${{ secrets.HUB_DOCKER_COM_PASS }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- uses: earthly/actions-setup@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
version: "0.8.6"

- name: 🌍 earthly (docker build and push)
env:
EARTHLY_BUILD_ARGS: ${{ steps.metadata.outputs.EARTHLY_BUILD_ARGS }},DOCKER_REGISTRIES=${{ secrets.DOCKER_REGISTRIES }}
run: |
earthly +docker-publish --PUSH=true
8 changes: 3 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
FROM openjdk:21-jdk-slim AS build
WORKDIR /app
COPY . /app
RUN ./gradlew clean build publishMavenJavaPublicationToLocalM2Repository

RUN ./gradlew clean -x test build
FROM openjdk:21-jdk-slim AS backend
WORKDIR /app
COPY --from=build /app/build/libs/*SNAPSHOT.jar /app/app.jar
FROM scratch AS m2-cache
COPY --from=build /root/.m2 /root/.m2

ENTRYPOINT ["java", "-jar", "app.jar"]
25 changes: 13 additions & 12 deletions Earthfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
VERSION 0.8

ARG --global ALL_BUILD_TARGETS="backend"
ARG --global ALL_BUILD_TARGETS="m2-cache"

ARG --global DOCKER_IMAGE_PREFIX="cf-lob"
ARG --global DOCKER_IMAGE_PREFIX="cf-lob-platform-library"
ARG --global DOCKER_IMAGES_EXTRA_TAGS=""
ARG --global DOCKER_REGISTRIES="hub.docker.com"
ARG --global HUB_DOCKER_COM_ORG=cardanofoundation
ARG --global PUSH=false

all:
LOCALLY
Expand All @@ -28,25 +29,25 @@ docker-publish:
IF [ ! -z "$DOCKER_IMAGES_EXTRA_TAGS" ]
FOR image_tag IN $DOCKER_IMAGES_EXTRA_TAGS
IF [ "$registry" = "hub.docker.com" ]
RUN echo docker tag ${IMAGE_NAME}:latest ${HUB_DOCKER_COM_ORG}/${IMAGE_NAME}:${image_tag}
RUN echo docker push ${HUB_DOCKER_COM_ORG}/${IMAGE_NAME}:${image_tag}
RUN docker tag ${IMAGE_NAME}:latest ${HUB_DOCKER_COM_ORG}/${IMAGE_NAME}:${image_tag}
RUN if [ "$PUSH" = "true" ]; then docker push ${HUB_DOCKER_COM_ORG}/${IMAGE_NAME}:${image_tag}; fi
ELSE
RUN echo docker tag ${IMAGE_NAME}:latest ${registry}/${IMAGE_NAME}:${image_tag}
RUN echo docker push ${registry}/${IMAGE_NAME}:${image_tag}
RUN docker tag ${IMAGE_NAME}:latest ${registry}/${IMAGE_NAME}:${image_tag}
RUN if [ "$PUSH" = "true" ]; then docker push ${registry}/${IMAGE_NAME}:${image_tag}; fi
END
END
END
IF [ "$registry" = "hub.docker.com" ]
RUN echo docker tag ${IMAGE_NAME}:latest ${HUB_DOCKER_COM_ORG}/${IMAGE_NAME}:${EARTHLY_GIT_SHORT_HASH}
RUN echo docker push ${HUB_DOCKER_COM_ORG}/${IMAGE_NAME}:${EARTHLY_GIT_SHORT_HASH}
RUN docker tag ${IMAGE_NAME}:latest ${HUB_DOCKER_COM_ORG}/${IMAGE_NAME}:${EARTHLY_GIT_SHORT_HASH}
RUN if [ "$PUSH" = "true" ]; then docker push ${HUB_DOCKER_COM_ORG}/${IMAGE_NAME}:${EARTHLY_GIT_SHORT_HASH}; fi
ELSE
RUN echo docker tag ${IMAGE_NAME}:latest ${registry}/${IMAGE_NAME}:${EARTHLY_GIT_SHORT_HASH}
RUN echo docker push ${registry}/${IMAGE_NAME}:${EARTHLY_GIT_SHORT_HASH}
RUN docker tag ${IMAGE_NAME}:latest ${registry}/${IMAGE_NAME}:${EARTHLY_GIT_SHORT_HASH}
RUN if [ "$PUSH" = "true" ]; then docker push ${registry}/${IMAGE_NAME}:${EARTHLY_GIT_SHORT_HASH}; fi
END
END
END

backend:
m2-cache:
ARG EARTHLY_TARGET_NAME
FROM DOCKERFILE -f Dockerfile --target ${EARTHLY_TARGET_NAME} .
SAVE IMAGE ${DOCKER_IMAGE_PREFIX}-${EARTHLY_TARGET_NAME}:latest
SAVE IMAGE ${DOCKER_IMAGE_PREFIX}-${EARTHLY_TARGET_NAME}:latest
57 changes: 0 additions & 57 deletions docker-compose.yml

This file was deleted.

0 comments on commit cc7bd11

Please sign in to comment.