diff --git a/.github/workflows/aws-dev.yml b/.github/workflows/kube-dev.yml similarity index 50% rename from .github/workflows/aws-dev.yml rename to .github/workflows/kube-dev.yml index 758e642..1f6571c 100644 --- a/.github/workflows/aws-dev.yml +++ b/.github/workflows/kube-dev.yml @@ -1,39 +1,15 @@ -# This workflow will build and push a new container image to Amazon ECR, -# and then will deploy a new task definition to Amazon ECS, on every push -# to the master branch. -# -# To use this workflow, you will need to complete the following set-up steps: -# -# 1. Create an ECR repository to store your images. -# For example: `aws ecr create-repository --repository-name my-ecr-repo --region us-east-2`. -# Replace the value of `ECR_REPOSITORY` in the workflow below with your repository's name. -# Replace the value of `aws-region` in the workflow below with your repository's region. -# -# 2. Create an ECS task definition, an ECS cluster, and an ECS service. -# For example, follow the Getting Started guide on the ECS console: -# https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun -# Replace the values for `service` and `cluster` in the workflow below with your service and cluster names. -# -# 3. Store your ECS task definition as a JSON file in your repository. -# The format should follow the output of `aws ecs register-task-definition --generate-cli-skeleton`. -# Replace the value of `task-definition` in the workflow below with your JSON file's name. -# Replace the value of `container-name` in the workflow below with the name of the container -# in the `containerDefinitions` section of the task definition. -# -# 4. Store an IAM user access key in GitHub Actions secrets named `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`. -# See the documentation for each action used below for the recommended IAM policies for this IAM user, -# and best practices on handling the access key credentials. +name: Deploy to Amazon EKS on: push: branches: - develop -name: Deploy to Amazon ECS - env: ECR_REPOSITORY: kilt/prototype-services ECR_IMAGE_TAG: latest-develop + SHA_IMAGE_TAG: ${{ github.sha }} + KUBECONFIG: '${{ github.workspace }}/.kube/kubeconfig' jobs: deploy: @@ -68,25 +44,26 @@ jobs: # Build a docker container and # push it to ECR so that it can # be deployed to ECS. - docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$ECR_IMAGE_TAG --build-arg NODE_AUTH_TOKEN=${{ secrets.GITHUB_TOKEN }} . + docker build \ + -t $ECR_REGISTRY/$ECR_REPOSITORY:$ECR_IMAGE_TAG \ + -t $ECR_REGISTRY/$ECR_REPOSITORY:$SHA_IMAGE_TAG \ + --build-arg NODE_AUTH_TOKEN=${{ secrets.GITHUB_TOKEN }} \ + . docker push $ECR_REGISTRY/$ECR_REPOSITORY:$ECR_IMAGE_TAG + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$SHA_IMAGE_TAG echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$ECR_IMAGE_TAG" + echo "::set-output name=image-sha::$ECR_REGISTRY/$ECR_REPOSITORY:$SHA_IMAGE_TAG" - - name: Fill in the new image ID in the Amazon ECS task definition - id: task-def - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: task-definition.json - container-name: demo-services - image: ${{ steps.build-image.outputs.image }} + - name: Configure Kubernetes + run: | + mkdir -p '${{ github.workspace }}/.kube' \ + && echo '${{ secrets.KUBE_CONFIG}}' | base64 -d > $KUBECONFIG - - name: Deploy Amazon ECS task definition - uses: aws-actions/amazon-ecs-deploy-task-definition@v1 - with: - task-definition: ${{ steps.task-def.outputs.task-definition }} - service: demo-services - cluster: kilt-devnet - wait-for-service-stability: true + - name: Set new image + env: + IMAGE: ${{ steps.build-image.outputs.image-sha }} + run: | + kubectl -n devnet set image deployment/services-deployment services-container=$IMAGE publish_to_docker: name: Publish develop image to docker