on: push: branches: - develop - main - 'release/**' - 'hotfix/**' jobs: deploy: name: Deploy runs-on: self-hosted env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} TAG: ${{ github.sha }} PROJECT: ota-admin-portal steps: - name: Slack Notify uses: act10ns/slack@master with: channel: "#cloud-builds" status: starting - name: Checkout uses: actions/checkout@v2 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-region: us-west-2 - name: Create ECR Repo run: aws ecr create-repository --region us-west-2 --repository-name ${PROJECT} || true - name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v1 - name: Set Env run: | case ${GITHUB_REF} in refs/heads/develop) ENVIRONMENT=dev;; refs/heads/release/*) ENVIRONMENT=stg;; refs/heads/hotfix/*) ENVIRONMENT=stg;; refs/heads/main) ENVIRONMENT=prd;; *) ENVIRONMENT=dev;; esac echo "ENVIRONMENT=${ENVIRONMENT}" >> $GITHUB_ENV - name: Build, tag, and push image to Amazon ECR id: build-tag-push-image env: REGISTRY: ${{ steps.login-ecr.outputs.registry }} run: | docker build --build-arg ENVIRONMENT=$ENVIRONMENT -t $REGISTRY/$PROJECT:$TAG-$ENVIRONMENT . docker push $REGISTRY/$PROJECT:$TAG-$ENVIRONMENT - name: Deploy id: deploy env: REGISTRY: ${{ steps.login-ecr.outputs.registry }} run: |- helm upgrade \ --kube-context $ENVIRONMENT \ --set image.registry=$REGISTRY \ --set image.name=$PROJECT \ --set image.tag=$TAG-$ENVIRONMENT \ --wait -i -f k8s/values-$ENVIRONMENT.yaml $PROJECT k8s/ - uses: act10ns/slack@master with: channel: "#cloud-builds" status: ${{ job.status }} message: Successfully deployed to ${{ env.ENVIRONMENT }}! if: always()