Introduction to Quarkus With Gitlab and Amazon Ecs

1. Introduction 

In this article, I will share the GitLab configuration on how we can build a Quarkus project in GitLab and deploy it on Amazon ECS.

2. Prerequisites

2.1 Amazon

For this section, the links are provided below.
  1. Create a container repository. Copy the container link as we will use it when we create the ECS cluster.
  2. Create an ECS cluster. Take note of the cluster and service name, we will need it in the GitLab configuration.

2.2 GitLab

The following CI/CD variables must be set:
  1. AWS_ACCESS_KEY_ID
  2. AWS_SECRET_ACCESS_KEY
  3. AWS_DEFAULT_REGION
In GitLab, click Settings / CI/CD / Variables.

3. GitLab Configuration

Here is the actual GitLab's configuration.
image: maven:3.6.3-openjdk-11

variables:
  MAVEN_OPTS: >-
    -Dmaven.repo.local=.m2/repository
    -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN
    -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true
  MAVEN_CLI_OPTS: >-
    --batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true
    -DdeployAtEnd=true
  CI_AWS_ECS_CLUSTER: quarkus-cognito
  CI_AWS_ECS_SERVICE: quarkus-cognito
  CI_AWS_REGISTRY_IMG: xxx.dkr.ecr.us-east-2.amazonaws.com/quarkus-cognito

cache:
  paths:
    - .m2/repository
    - target

before_script:
  - >-
    echo " ------------------------------- Global > Before Script
    ------------------------- ------"
  - echo $CI_COMMIT_BRANCH

stages:
  - compile
  - build
  - deploy

compile-project:
  stage: compile
  before_script:
    - apt-get update -qq
    - apt-get install -y -qq build-essential libz-dev zlib1g-dev
    - ls -la
    - chmod +x ./mvnw
  script:
    - echo "Building native app."
    - ./mvnw package

kaniko-build-docker:
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  stage: build
  variables:
    REGISTRY: $CI_AWS_REGISTRY_IMG
  before_script:
    - ls -la
  only:
    - master
  script:
    # see https://github.com/GoogleContainerTools/kaniko/issues/1227
    - mkdir -p /kaniko/.docker
    - echo "{\"credsStore\":\"ecr-login\"}" > /kaniko/.docker/config.json
    - /kaniko/executor --cache=true --context $CI_PROJECT_DIR --dockerfile ${CI_PROJECT_DIR}/src/main/docker/Dockerfile.jvm --destination $REGISTRY:$CI_COMMIT_SHORT_SHA --destination $REGISTRY:latest
deploy: image: python:3.8 stage: deploy only: - master before_script: - pip install ecs-deploy needs: - kaniko-build-docker script: - ecs deploy $CI_AWS_ECS_CLUSTER $CI_AWS_ECS_SERVICE -t $CI_COMMIT_SHORT_SHA --timeout 600

4. References

0 Comments

Post a Comment

Post a Comment (0)

Previous Post Next Post
NERV Open Source
Building production Spring Boot systems?

Explore NERV — open-source Java libraries for audit trails, persistence, exception handling, and reliable event-driven architecture.