Skip to content

Instantly share code, notes, and snippets.

@iamads
Last active April 19, 2023 15:43
Show Gist options
  • Save iamads/4540c30ad2d8f5bbd3aefcfb57f7fd00 to your computer and use it in GitHub Desktop.
Save iamads/4540c30ad2d8f5bbd3aefcfb57f7fd00 to your computer and use it in GitHub Desktop.

Revisions

  1. iamads revised this gist Sep 2, 2020. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions gitlab-ci.yml
    Original file line number Diff line number Diff line change
    @@ -1,14 +1,14 @@
    image: docker:19.03.10

    services:
    - docker:dind

    variables:
    REPOSITORY_URL: <REPOSITORY_URL>
    TASK_DEFINITION_NAME: <Task_Definition>
    CLUSTER_NAME: <CLUSTER_NAME>
    SERVICE_NAME: <SERVICE_NAME>

    services:
    - docker:dind

    before_script:
    - apk add --no-cache curl jq python py-pip
    - pip install awscli
  2. iamads created this gist Sep 2, 2020.
    49 changes: 49 additions & 0 deletions gitlab-ci.yml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,49 @@
    image: docker:19.03.10

    variables:
    REPOSITORY_URL: <REPOSITORY_URL>
    TASK_DEFINITION_NAME: <Task_Definition>
    CLUSTER_NAME: <CLUSTER_NAME>
    SERVICE_NAME: <SERVICE_NAME>

    services:
    - docker:dind

    before_script:
    - apk add --no-cache curl jq python py-pip
    - pip install awscli
    - aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
    - aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
    - aws configure set region $AWS_DEFAULT_REGION
    - $(aws ecr get-login --no-include-email --region "${AWS_DEFAULT_REGION}")
    - IMAGE_TAG="$(echo $CI_COMMIT_SHA | head -c 8)"

    stages:
    - build
    - deploy

    build:
    stage: build
    script:
    - echo "Building image..."
    - docker build -t $REPOSITORY_URL:latest .
    - echo "Tagging image..."
    - docker tag $REPOSITORY_URL:latest $REPOSITORY_URL:$IMAGE_TAG
    - echo "Pushing image..."
    - docker push $REPOSITORY_URL:latest
    - docker push $REPOSITORY_URL:$IMAGE_TAG
    only:
    - master

    deploy:
    stage: deploy
    script:
    - echo $REPOSITORY_URL:$IMAGE_TAG
    - TASK_DEFINITION=$(aws ecs describe-task-definition --task-definition "$TASK_DEFINITION_NAME" --region "${AWS_DEFAULT_REGION}")
    - NEW_CONTAINER_DEFINTIION=$(echo $TASK_DEFINITION | jq --arg IMAGE "$REPOSITORY_URL:$IMAGE_TAG" '.taskDefinition.containerDefinitions[0].image = $IMAGE | .taskDefinition.containerDefinitions[0]')
    - echo "Registering new container definition..."
    - aws ecs register-task-definition --region "${AWS_DEFAULT_REGION}" --family "${TASK_DEFINITION_NAME}" --container-definitions "${NEW_CONTAINER_DEFINTIION}"
    - echo "Updating the service..."
    - aws ecs update-service --region "${AWS_DEFAULT_REGION}" --cluster "${CLUSTER_NAME}" --service "${SERVICE_NAME}" --task-definition "${TASK_DEFINITION_NAME}"
    only:
    - master