Skip to content

Commit

Permalink
Merge pull request binary-com#275 from jim-deriv/Jim/feq-1090/separat…
Browse files Browse the repository at this point in the history
…e-docker-and-kubernetes-notification

[FEQ] Jim/FEQ-1090/separate docker and kubernetes notification
  • Loading branch information
ali-hosseini-deriv authored Jan 2, 2024
2 parents c394743 + 16b9db8 commit a149a13
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 40 deletions.
27 changes: 5 additions & 22 deletions .github/actions/notify_slack/action.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,20 @@
name: notify_slack
description: Send Slack notifications
description: Send Slack notification
inputs:
SLACK_WEBHOOK_URL:
description: Slack webhook URL
required: true
STATUS:
description: Job status
MESSAGE:
description: 'Status message'
required: true
RELEASE_TYPE:
description: Release type
required: true
VERSION:
description: Version
required: true
default: N/A
runs:
using: composite
steps:
- name: Send Slack Notification on Success
if: ${{ inputs.STATUS == 'success' }}
- name: Send Slack Notification
run: |-
curl -X POST -H 'Content-type: application/json' \
--data '{
"text": "'"${{ inputs.RELEASE_TYPE }}"' Release succeeded for api.deriv.com with version *'"${{ inputs.VERSION }}"'*"
"text": "${{ inputs.MESSAGE }}",
}' \
${{ inputs.SLACK_WEBHOOK_URL }}
shell: bash
- name: Send Slack Notification on Failure
if: ${{ inputs.STATUS == 'failure' }}
run: |-
curl -X POST -H 'Content-type: application/json' \
--data '{
"text": "'"${{ inputs.RELEASE_TYPE }}"' Release failed for api.deriv.com with version *'"${{ inputs.VERSION }}"'*"
}' \
${{ inputs.SLACK_WEBHOOK_URL }}
shell: bash
70 changes: 52 additions & 18 deletions .github/workflows/release_production.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ on:
push:
tags:
- production_v*
env:
RELEASE_TYPE: Production
jobs:
build_and_publish:
name: Builds and Publishes to Cloudflare Pages Production
Expand All @@ -25,7 +27,7 @@ jobs:
uses: ./.github/actions/versioning
with:
RELEASE_TAG: ${{ github.ref_name }}
RELEASE_TYPE: production
RELEASE_TYPE: ${{ env.RELEASE_TYPE }}
- name: Extract version
id: extract_version
run: echo "RELEASE_VERSION=$(cat build/version)" >> $GITHUB_OUTPUT
Expand All @@ -34,7 +36,52 @@ jobs:
with:
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: build
path: .
retention-days: 1

send_slack_notification:
name: Send Slack Notification
environment: Production
runs-on: ubuntu-latest
if: always()
needs: [build_and_publish]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Conclusion
uses: technote-space/workflow-conclusion-action@v3
- name: Create Slack Message
id: create_slack_message
run: |
if [ "${{ env.WORKFLOW_CONCLUSION }}" == "success" ]; then
echo "MESSAGE=${{ env.RELEASE_TYPE }} Release succeeded for api.deriv.com with version *${{ needs.build_and_publish.outputs.RELEASE_VERSION }}*" >> $GITHUB_ENV
elif ["${{ env.WORKFLOW_CONCLUSION }}" == "failure"]; then
echo "MESSAGE=${{ env.RELEASE_TYPE }} Release failed for api.deriv.com with version *${{ needs.build_and_publish.outputs.RELEASE_VERSION }}*" >> $GITHUB_ENV
else
echo "MESSAGE=Unkown outcome" >> $GITHUB_ENV
fi
- name: Send Slack Notification
uses: ./.github/actions/notify_slack
with:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
MESSAGE: ${{ steps.create_slack_message.outputs.MESSAGE }}

build_and_publish_to_docker_k8s:
name: Builds and Publishes image to Docker and Kubernetes
runs-on: ubuntu-latest
environment: Production
needs: [build_and_publish]
steps:
- name: Download Build Artifact
uses: actions/download-artifact@v4
with:
name: build
- name: Publish to Docker
id: publish_to_docker
uses: ./.github/actions/publish_to_docker
with:
DOCKER_LATEST_IMAGE_TAG: 'latest'
Expand All @@ -43,6 +90,7 @@ jobs:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Deploy to Kubernetes
id: deploy_to_kubernetes
uses: ./.github/actions/deploy_to_kubernetes
with:
K8S_VERSION: ${{ github.ref_name }}
Expand All @@ -51,23 +99,9 @@ jobs:
SERVICEACCOUNT_TOKEN: ${{ secrets.SERVICEACCOUNT_TOKEN }}
KUBE_SERVER: ${{ secrets.KUBE_SERVER }}
DOCKERHUB_ORGANISATION: ${{ secrets.DOCKERHUB_ORGANISATION }}

send_slack_notification:
name: Send Slack Notification
environment: Production
runs-on: ubuntu-latest # TODO: Replace this with the appropriate runner for Deriv-Api-Docs when provided
if: always()
needs:
- build_and_publish
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Conclusion
uses: technote-space/workflow-conclusion-action@v3
- name: Send Slack Notification
if: ${{ steps.publish_to_docker.outcome != 'success' || steps.deploy_to_kubernetes.outcome != 'success' }}
uses: ./.github/actions/notify_slack
with:
RELEASE_TYPE: Production
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
STATUS: ${{ env.WORKFLOW_CONCLUSION }}
version: ${{ needs.build_and_publish.outputs.RELEASE_VERSION}}
RELEASE_TYPE: ${{ env.RELEASE_TYPE }}
MESSAGE: "'${{ env.RELEASE_TYPE }}' Docker Publish and Kubernetes Deployment for api.deriv.com with version *'${{ needs.build_and_publish.outputs.RELEASE_VERSION }}'* has Failed *"

0 comments on commit a149a13

Please sign in to comment.