Skip to content

Instantly share code, notes, and snippets.

@asidko
Created June 29, 2022 15:52
Show Gist options
  • Save asidko/1f6b1939af9ce57ca56033408cb76e3f to your computer and use it in GitHub Desktop.
Save asidko/1f6b1939af9ce57ca56033408cb76e3f to your computer and use it in GitHub Desktop.
GitLab CI for Java Docker build with Gradle and push to Amazon ECR repository
# Project specific variables are here
variables:
# AWS ECR settings
AWS_REGION: us-east-1
AWS_IMAGE_REGISTRY: XXXXXXX.dkr.ecr.us-east-1.amazonaws.com
AWS_IMAGE_NAME: my-spring-boot-app
# Do not forget to set
# AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION
# in Gitlab Settings -> CI/CD
stages:
- build
- push
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
cache:
paths:
- .gradle/wrapper
- .gradle/caches
build:
stage: build
# Java compiler version
image: eclipse-temurin:18-jdk-alpine
variables:
# Java runtime version
JAVA_IMAGE: eclipse-temurin:18-jre-alpine@sha256:111984299906a2216ae56eb7829029b04a003be52e90e6117b65824e547a5edc
script:
- >
./gradlew jibBuildTar
-Djib.console=plain
-Djib.from.image=$JAVA_IMAGE
-Djib.to.image=$CI_PROJECT_NAME
artifacts:
paths: [ 'build/jib-image.tar' ]
expire_in: 10 minutes
push:
stage: push
image: eclipse-temurin:18-jdk-alpine
services:
- docker:20.10.17-dind
variables:
# Docker service connection
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "" # See https://github.com/docker-library/docker/pull/166
# AWS registry
AWS_FULL_IMAGE_NAME: $AWS_IMAGE_REGISTRY/$AWS_IMAGE_NAME
before_script:
# Install CLI tools
- apk add --no-cache aws-cli docker-cli jq
# Login to ECR
- aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_IMAGE_REGISTRY
script:
- docker load -i build/jib-image.tar
- TAG_GIT="$CI_COMMIT_BRANCH-$CI_COMMIT_SHORT_SHA"
- TAG_DATE="$(date +%Y%m%d.%H%M)"
- docker tag $CI_PROJECT_NAME $AWS_FULL_IMAGE_NAME:$TAG_GIT
- docker tag $CI_PROJECT_NAME $AWS_FULL_IMAGE_NAME:$TAG_DATE
- docker push --all-tags --quiet $AWS_FULL_IMAGE_NAME
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment