Kích hoạt New Release

Kích hoạt New Release

Trong bước này chúng ta sẽ chỉnh sửa file main.go để thay đổi lời chào thành Welcome to CI/CD Pipeline lab. Sau đó theo dõi quá trình release và kiểm tra kết quả.

  1. Truy cập vào GitHub Repository bạn đã fork ở bước 3.
    • Click vào file main.go.

Pipeline

  1. Click vào biểu tượng chỉnh sửa.

Pipeline

  1. Thay đổi nội dung lời chào ở dòng số 18 từ Hello World thành Welcome to CI/CD Pipeline lab.

Pipeline

  1. Kéo màn hình xuống dưới cùng.
    • Click Commit changes để cập nhật thay đổi code.

Pipeline

  1. Truy cập vào dịch vụ CodePipeline.
    • Click vào pipeline eksws-codepipeline….
    • Kiểm tra Pipeline đã được kích hoạt.

Pipeline

  1. Sau khi bước build hoàn tất, quay lại trình duyệt đang truy cập vào dịch vụ mẫu và thực hiện refresh, bạn sẽ thấy thông tin lời chào đã được update.

Pipeline

  1. Chúc mừng bạn đã hoàn thành bài lab xây dựng CI/CD với CodePipeline.
    • Hãy dành thêm thời gian để kiểm tra nội dung các file template CloudFormation để hiệu việc tạo một CodePipeline sử dụng CloudFormation.
    • Dành thời gian để kiểm tra và phân tích nội dung file buildspec.yml nằm trong GitHub repository bạn đã fork về. File này sẽ mô tả các công việc được thực hiện trong Build stage của CodePipeline. buildspec.yml
---
version: 0.2
phases:
  install:
    commands:
      - curl -sS -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/linux/amd64/aws-iam-authenticator
      - curl -sS -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.14.6/2019-08-22/bin/linux/amd64/kubectl
      - chmod +x ./kubectl ./aws-iam-authenticator
      - export PATH=$PWD/:$PATH
      - apt-get update && apt-get -y install jq python3-pip python3-dev && pip3 install --upgrade awscli
  pre_build:
      commands:
        - TAG="$REPOSITORY_NAME.$REPOSITORY_BRANCH.$ENVIRONMENT_NAME.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)"
        - sed -i 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' hello-k8s.yml
        - $(aws ecr get-login --no-include-email)
        - export KUBECONFIG=$HOME/.kube/config
  build:
    commands:
      - docker build --tag $REPOSITORY_URI:$TAG .

  post_build:
    commands:
      - docker push $REPOSITORY_URI:$TAG
      - CREDENTIALS=$(aws sts assume-role --role-arn $EKS_KUBECTL_ROLE_ARN --role-session-name codebuild-kubectl --duration-seconds 900)
      - export AWS_ACCESS_KEY_ID="$(echo ${CREDENTIALS} | jq -r '.Credentials.AccessKeyId')"
      - export AWS_SECRET_ACCESS_KEY="$(echo ${CREDENTIALS} | jq -r '.Credentials.SecretAccessKey')"
      - export AWS_SESSION_TOKEN="$(echo ${CREDENTIALS} | jq -r '.Credentials.SessionToken')"
      - export AWS_EXPIRATION=$(echo ${CREDENTIALS} | jq -r '.Credentials.Expiration')
      - aws eks update-kubeconfig --name $EKS_CLUSTER_NAME
      - kubectl apply -f hello-k8s.yml
      - printf '[{"name":"hello-k8s","imageUri":"%s"}]' $REPOSITORY_URI:$TAG > build.json
artifacts:
  files: build.json

Các bạn có thể thấy quá trình build sẽ cài các gói cần thiết, tạo nên một container image và push nó vào dịch vụ Elastic Container Registry. .
Sau đó tiến hành cập nhật dịch vụ mới bằng câu lệnh kubectl apply. .
Bạn có thể xem thêm về kubectl apply tại đây : https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/

Pipeline