DEV Community

Cover image for Manual Approval and Telegram Notifications in Jenkins
Lester Diaz Perez
Lester Diaz Perez

Posted on Edited on

Manual Approval and Telegram Notifications in Jenkins

Why use a manual approval step in the deploy code?

Manual approval in Jenkins provides a mechanism to ensure quality, security and compliance in software development and deployment processes.

Manual approval

  • Add this stage to the pipeline
 stage('Approval') {
        steps {
            timeout(time: 15, unit: "MINUTES") {
                        input message: 'Do you want to approve the deployment?', ok: 'Yes'
                    }

                    echo "Initiating deployment"
        }
    } 
Enter fullscreen mode Exit fullscreen mode


Telegram Notifications

To send notifications we need two things
First: HTTP_API of bot
Second: CHAT_ID

HTTP_API of bot

  • Create telegram bot

    1. BotFather in Telegram (@botfather)
    2. Send /newbot command
    3. Enter bot name and bot username

    token-http-api

CHAT_ID
1. Go to @myidbot
2. Enter: /start -> /getid
3. Save your chat_ID


Creating Jenkins Global Credentials

  1. Manage Jenkins -> Credentials -> System -> Global credentials (unrestricted)
  2. Add Crediantials(CHAT_ID & TELEGRAM_API)

Configurig pipeline

_At the top of the pipeline

environment {
        // Telegram configuration
        TOKEN = credentials('telegram-api')
        CHAT_ID = credentials('telegram_chatid')
    }
Enter fullscreen mode Exit fullscreen mode

Declare two variables which contain the tokens

 post {
        success {
            script {
                sh "curl -X POST -H 'Content-Type: application/json' -d '{\"chat_id\": \"${CHAT_ID}\", \"text\": \"${JOB_NAME}: #${BUILD_NUMBER}\n✅ Deploy succeeded! \", \"disable_notification\": false}' \"https://api.telegram.org/bot${TOKEN}/sendMessage\""
            }
        }
        failure {
            script {
                sh "curl -X POST -H 'Content-Type: application/json' -d '{\"chat_id\": \"${CHAT_ID}\", \"text\": \"${JOB_NAME}: #${BUILD_NUMBER}\n❌Deploy failure!\", \"disable_notification\": false}' \"https://api.telegram.org/bot${TOKEN}/sendMessage\""
            }
        }

       aborted {
            script {
                sh "curl -X POST -H 'Content-Type: application/json' -d '{\"chat_id\": \"${CHAT_ID}\", \"text\": \"${JOB_NAME}: #${BUILD_NUMBER}\n❌Deploy aborted!\", \"disable_notification\": false}' \"https://api.telegram.org/bot${TOKEN}/sendMessage\""
            }
        }    

    }
Enter fullscreen mode Exit fullscreen mode

I hope helpful!!


LinkedIn

Top comments (0)