Skip to content
This repository has been archived by the owner on May 13, 2024. It is now read-only.

[FEQ] Jim/FEQ-1090/separate docker and kubernetes notification #275

Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 *"
30 changes: 29 additions & 1 deletion .github/workflows/release_staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@ on:
push:
branches:
- master
env:
RELEASE_TYPE: Staging
jobs:
build_and_publish:
name: Builds and Publishes to Cloudflare Pages Staging
runs-on: ubuntu-latest # TODO: Replace this with the appropriate runner for Deriv-Api-Docs when provided
environment: Staging
outputs:
RELEASE_VERSION: ${{ steps.extract_version.outputs.RELEASE_VERSION }}
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -25,13 +29,30 @@ jobs:
uses: ./.github/actions/versioning
with:
RELEASE_TAG: ${{ github.sha }}
RELEASE_TYPE: staging
RELEASE_TYPE: ${{ env.RELEASE_TYPE }}
- name: Extract version
id: extract_version
run: echo "RELEASE_VERSION=${version}" >> $GITHUB_OUTPUT
- name: Publish to Cloudflare Pages Staging
uses: ./.github/actions/publish_to_pages_staging
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

build_and_publish_to_docker_k8s:
name: Builds and Publishes image to Docker and Kubernetes
runs-on: ubuntu-latest
environment: Staging
needs: [build_and_publish]
steps:
- name: Publish to Docker
id: publish_to_docker
uses: ./.github/actions/publish_to_docker
with:
DOCKER_LATEST_IMAGE_TAG: 'latest-staging'
Expand All @@ -40,6 +61,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 @@ -48,3 +70,9 @@ jobs:
SERVICEACCOUNT_TOKEN: ${{ secrets.SERVICEACCOUNT_TOKEN }}
KUBE_SERVER: ${{ secrets.KUBE_SERVER }}
DOCKERHUB_ORGANISATION: ${{ secrets.DOCKERHUB_ORGANISATION }}
- name: Send Slack Notification
jim-deriv marked this conversation as resolved.
Show resolved Hide resolved
if: ${{ steps.publish_to_docker.outcome != 'success' || steps.deploy_to_kubernetes.outcome != 'success' }}
uses: ./.github/actions/notify_slack
with:
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 *"