Skip to content

[chore]clean k8s.yml space #5

[chore]clean k8s.yml space

[chore]clean k8s.yml space #5

Workflow file for this run

name: Release NestJS CI/CD on Kubernetes
on:
push:
branches: [ "k8s" ]
jobs:
build:
name: CI/CD on EKS
runs-on: ubuntu-latest
environment: develop
env:
ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY }}
#IMAGE_TAG: "pr-${{ github.event.pull_request.number }}-${{ github.event.pull_request.head.sha }}"
IMAGE_TAG: "v0.2"
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.4.1
with:
access_token: ${{ github.token }}
- name: Checkout
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ vars.AWS_REGION }}
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
- name: Docker cache layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-single-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-single-buildx
- name: Build & Push Image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: |
echo ${{ env.ECR_REGISTRY }}
touch .env
echo NODE_ENV=${{ vars.NODE_ENV }} >> .env
echo PORT=${{ vars.PORT }} >> .env
echo MONGODB_CONNECTION_STRING=${{ secrets.MONGODB_CONNECTION_STRING }} >> .env
echo CORS_VALID_ORIGINS=${{ vars.CORS_VALID_ORIGINS }} >> .env
echo JWT_ACCESS_SECRET=${{ vars.JWT_ACCESS_SECRET }} >> .env
echo JWT_ACCESS_EXPIRATION=${{ vars.JWT_ACCESS_EXPIRATION }} >> .env
echo JWT_REFRESH_SECRET=${{ vars.JWT_REFRESH_SECRET }} >> .env
echo JWT_REFRESH_EXPIRATION=${{ vars.JWT_REFRESH_EXPIRATION }} >> .env
echo SMTP_USERNAME=${{ secrets.SMTP_USERNAME }} >> .env
echo SMTP_PASSWORD=${{ secrets.SMTP_PASSWORD }} >> .env
echo SMTP_HOST=${{ vars.SMTP_HOST }} >> .env
echo SMTP_PORT=${{ vars.SMTP_PORT }} >> .env
echo SMTP_FROM_EMAIL=${{ vars.SMTP_FROM_EMAIL }} >> .env
echo SMTP_FROM_NAME=${{ vars.SMTP_FROM_NAME }} >> .env
docker buildx create --use
docker buildx build \
--cache-from=type=local,src=/tmp/.buildx-cache \
--cache-to=type=local,dest=/tmp/.buildx-cache-new \
--tag ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} \
--target release \
--push \
.
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
- name: Update kube config
run: aws eks update-kubeconfig --name ${{ vars.EKS_CLUSTER_NAME }} --region ${{ vars.AWS_REGION }}
- name: Deploy to EKS
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: |
sed -i.bak "s|DOCKER_IMAGE|${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}|g" k8s/deployment.yaml && \
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/ingress.yaml