Hi everyone! I need help with migrating circleci pipeline to gitlab. I read GitLab Docs , but it’s not enough for migration. Below is a copy of my script. Very appreciated for any help. Thank you
version: 2
jobs:
build:
working_directory: ~/sti
docker:
- image: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/base:jdk-11
steps:
- checkout:
path: ~/sti
- restore_cache:
keys:
- gradle-v2-{{ checksum “build.gradle” }}
- gradle-v2-
- run:
name: Gradle build process.
command: ./gradlew build --refresh-dependencies
- save_cache:
key: gradle-v2-{{ checksum “build.gradle” }}
paths:
- .gradle
- /root/.gradle
- save_cache:
key: build-{{ .Branch }}-{{ .Revision }}
paths:
- ~/sti
deploy-release:
working_directory: /
docker:
- image: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/base:aws-cli
environment:
AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID_TAGGING
AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY_TAGGING
steps:
- run:
name: Retag stage image for prod
command: |
IMAGE_LIST=$(aws ecr --region $AWS_DEFAULT_REGION list-images --registry-id $AWS_ACCOUNT_ID --repository-name sti/$CIRCLE_PROJECT_REPONAME --filter tagStatus=TAGGED | jq .imageIds | jq . | jq .imageTag | grep rc-${CIRCLE_TAG} | sort -n)
LATEST_SG_TAG=echo $IMAGE_LIST | awk '{print $NF}'
MANIFEST=$(aws ecr --region $AWS_DEFAULT_REGION batch-get-image --registry-id $AWS_ACCOUNT_ID --repository-name sti/$CIRCLE_PROJECT_REPONAME --image-ids imageTag=$LATEST_SG_TAG --query ‘images.imageManifest’ --output text)
PROD_TAG=${CIRCLE_TAG////-}.${CIRCLE_BUILD_NUM}
aws ecr --region $AWS_DEFAULT_REGION put-image --registry-id $AWS_ACCOUNT_ID --repository-name sti/$CIRCLE_PROJECT_REPONAME --image-tag $PROD_TAG --image-manifest “$MANIFEST”
deploy-release-candidate:
working_directory: ~/sti/src
docker:
- image: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/base:jdk-11
steps:
- add_ssh_keys
- restore_cache:
keys:
- build-{{ .Branch }}-{{ .Revision }}
- build-{{ .Branch }}-
- build-
- run: pip3 install awscli
- run:
name: Install Docker client ( we don’t want docker in the container )
command: |
set -x
VER=“17.09.1-ce”
curl -L -o /tmp/docker-$VER.tgz https://download.docker.com/linux/static/stable/x86_64/docker-$VER.tgz
tar -xz -C /tmp -f /tmp/docker-$VER.tgz
mv /tmp/docker/* /usr/bin
chmod +x /usr/bin/dockerd
- run: dockerd &
- setup-docker-engine:
version: 17.11.0-ce
- run: eval $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
- run:
name: Build and deploy latest image to ECR
command: |
IMAGE_TAG=${CIRCLE_BRANCH/release//rc-}.${CIRCLE_BUILD_NUM}
docker build -t $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/$CIRCLE_PROJECT_REPONAME:$IMAGE_TAG …
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/$CIRCLE_PROJECT_REPONAME:$IMAGE_TAG
deploy-branch:
working_directory: ~/sti/src
docker:
- image: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/base:jdk-11
steps:
- add_ssh_keys
- restore_cache:
keys:
- build-{{ .Branch }}-{{ .Revision }}
- build-{{ .Branch }}-
- build-
- run: pip3 install awscli
- run:
name: Install Docker client ( we don’t want docker in the container )
command: |
set -x
VER=“17.09.1-ce”
curl -L -o /tmp/docker-$VER.tgz https://download.docker.com/linux/static/stable/x86_64/docker-$VER.tgz
tar -xz -C /tmp -f /tmp/docker-$VER.tgz
mv /tmp/docker/* /usr/bin
chmod +x /usr/bin/dockerd
- run: dockerd &
- setup-docker-engine:
version: 17.11.0-ce
- run: eval $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
- run:
name: Build and deploy latest image to ECR
command: |
IMAGE_TAG=${CIRCLE_BRANCH////-}
docker build -t $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/$CIRCLE_PROJECT_REPONAME:$IMAGE_TAG …
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/$CIRCLE_PROJECT_REPONAME:$IMAGE_TAG
deploy-latest:
working_directory: ~/sti/src
docker:
- image: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/base:jdk-11
steps:
- add_ssh_keys
- restore_cache:
keys:
- build-{{ .Branch }}-{{ .Revision }}
- build-{{ .Branch }}-
- build-
- run: pip3 install awscli
- run:
name: Install Docker client ( we don’t want docker in the container )
command: |
set -x
VER=“17.09.1-ce”
curl -L -o /tmp/docker-$VER.tgz https://download.docker.com/linux/static/stable/x86_64/docker-$VER.tgz
tar -xz -C /tmp -f /tmp/docker-$VER.tgz
mv /tmp/docker/* /usr/bin
chmod +x /usr/bin/dockerd
- run: dockerd &
- setup-docker-engine:
version: 17.11.0-ce
- run: eval $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
- run:
name: Build and deploy latest image to ECR
command: |
IMAGE_TAG=latest
docker build -t $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/$CIRCLE_PROJECT_REPONAME:$IMAGE_TAG …
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/sti/$CIRCLE_PROJECT_REPONAME:$IMAGE_TAG
workflows:
version: 2
build-deploy:
jobs:
- build
- deploy-release:
filters:
tags:
only: /^v./
branches:
ignore: /./
- deploy-release-candidate:
requires:
- build
filters:
tags:
ignore: /./
branches:
only: /^release./
- deploy-branch:
requires:
- build
filters:
branches:
ignore:
- /^master./
- /^release./
- deploy-latest:
requires:
- build
filters:
branches:
only: master