Skip to content

Instantly share code, notes, and snippets.

@osocode
Created August 30, 2022 15:02
Show Gist options
  • Save osocode/41cc4238463ab753df4756bba60280d6 to your computer and use it in GitHub Desktop.
Save osocode/41cc4238463ab753df4756bba60280d6 to your computer and use it in GitHub Desktop.
Gitlab Build and Push to ECR Example
stages:
- lint
- build
- review
- deploy
build_push_stage:
stage: build
image:
name: amazon/aws-cli
entrypoint: [""]
services:
- docker:dind
tags:
- docker
- ecr
rules:
- if: $CI_MERGE_REQUEST_IID
when: on_success
- if: $CI_OPEN_MERGE_REQUESTS
when: never
- if: $CI_COMMIT_BRANCH
variables:
IMAGE_NAME: your_app
AWS_DEFAULT_REGION: us-east-1
TAG_LATEST: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_NAME:latest
TAG_COMMIT: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA
before_script:
- amazon-linux-extras install docker
- aws --version
- docker --version
script:
- docker build -t $DOCKER_REGISTRY/$IMAGE_NAME:$CI_PIPELINE_IID .
- aws ecr get-login-password | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
- docker push $DOCKER_REGISTRY/$IMAGE_NAME:$CI_PIPELINE_IID
retry:
max: 2
when: runner_system_failure
build_push_prod:
stage: build
image:
name: amazon/aws-cli
entrypoint: [""]
services:
- docker:dind
tags:
- docker
- ecr
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
when: manual
variables:
IMAGE_NAME: your_app
AWS_DEFAULT_REGION: us-east-1
AWS_ACCOUNT_ID: ${PROD_AWS_ACCOUNT_ID}
AWS_ACCESS_KEY_ID: ${PROD_AWS_ACCESS_KE_ID}
AWS_SECRET_ACCESS_KEY: ${PROD_AWS_SECRET_ACCESS_KEY}
TAG_LATEST: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_NAME:latest
TAG_COMMIT: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA
before_script:
- amazon-linux-extras install docker
- aws --version
- docker --version
script:
- aws ecr get-login-password | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
- docker pull $TAG_LATEST || true
- docker build --cache-from $TAG_LATEST -t $TAG_COMMIT -t $TAG_LATEST .
- docker push $TAG_COMMIT
- docker push $TAG_LATEST
retry:
max: 2
when: runner_system_failure
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment