UNPKG

klip-sdk

Version:

JavaScript SDK to interact with klip App2App requests

150 lines (144 loc) 5.66 kB
name: Deploy request slack alarm author: Kyle description: 'deploy reqeust message' inputs: TYPE: description: 'ex) FE, BE' required: false default: 'BE' CHANNEL_ID: description: 'ex) prod_approve slack channel id' required: true default: 'C068PP9AYJY' ENVIRONMENT: description: 'ex) prod' required: true default: 'prod' CATEGORY: description: 'ex) klip or devops or kas' required: true default: '' SERVICE: description: 'ex) klip-pass, klip etc..' required: true default: '' VERSION: description: 'ex) v1.0.0' required: true default: '' REPOSITORY: description: 'ex) klip-pass-be' required: false default: '' PR_NUMBER: description: 'ex) 1345' required: false default: '' ENVIRONMENT_ID: description: 'ex) 2476771098' required: false default: '' WORKFLOW_ID: description: 'ex) 8262151233' required: false default: '' SLACK_APPROVE_TOKEN: description: 'ex) xoxb-xxxx-xxxx-xxxx' required: true default: '' runs: using: "composite" steps: - name: set outputs id: set-outputs shell: bash run: | echo "TYPE=${{ inputs.TYPE }}" >> $GITHUB_OUTPUT GIT_REPO=${{ inputs.REPOSITORY }} REPO=$(echo $GIT_REPO | awk -F "/" '{print $2}') echo "REPO=$(echo $REPO)" >> $GITHUB_OUTPUT - name: Send prod BE deploy approve message on slack if: steps.set-outputs.outputs.TYPE == 'BE' uses: slackapi/slack-github-action@v1.26.0 with: channel-id: ${{ inputs.CHANNEL_ID }} payload: | { "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": ":rocket: *[${{ inputs.TYPE }}] ${{ inputs.SERVICE }}-${{ inputs.VERSION }} ${{ inputs.ENVIRONMENT }} 배포 요청이 있습니다.*\n\n배포 승인은 *반드시 Staging 테스트 이후* Approve 하시기 바랍니다.:red_siren:\n배포 승인을 하시려면 아래의 *Approve* 버튼을 눌러주시기 바랍니다.:thumbsup:" } }, { "type": "actions", "elements": [ { "type": "button", "text": { "type": "plain_text", "text": "Approve :white_check_mark:" }, "value": "{\"action\": \"approve\",\"type\": \"${{ inputs.TYPE }}\",\"application\": \"${{ inputs.ENVIRONMENT }}-${{ inputs.SERVICE }}\",\"category\": \"${{ inputs.CATEGORY }}\",\"repo\": \"${{ steps.set-outputs.outputs.REPO }}\", \"prnumber\": \"${{ inputs.PR_NUMBER }}\"}", "action_id": "action_approve" } ] } ] } env: SLACK_BOT_TOKEN: ${{ inputs.SLACK_APPROVE_TOKEN }} - name: Send prod FE deploy approve message on slack if: steps.set-outputs.outputs.TYPE == 'FE' uses: slackapi/slack-github-action@v1.26.0 with: channel-id: ${{ inputs.CHANNEL_ID }} payload: | { "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": ":rocket: *[${{ inputs.TYPE }}] ${{ inputs.SERVICE }}-${{ inputs.VERSION }} ${{ inputs.ENVIRONMENT }} 배포 요청이 있습니다.*\n\n배포 승인은 *반드시 Staging 테스트 이후* Approve 하시기 바랍니다.:red_siren:\n배포 승인을 하시려면 아래의 *Approve* 버튼을 눌러주시기 바랍니다.:thumbsup:" } }, { "type": "actions", "elements": [ { "type": "button", "text": { "type": "plain_text", "text": "Approve :white_check_mark:" }, "value": "{\"action\": \"approve\",\"type\": \"${{ inputs.TYPE }}\",\"category\": \"${{ inputs.CATEGORY }}\",\"application\": \"${{ steps.set-outputs.outputs.REPO }}\",\"repo\": \"${{ steps.set-outputs.outputs.REPO }}\",\"environmentid\": \"${{ inputs.ENVIRONMENT_ID }}\", \"workflowid\": \"${{ inputs.WORKFLOW_ID }}\"}", "action_id": "action_approve" } ] } ] } env: SLACK_BOT_TOKEN: ${{ inputs.SLACK_APPROVE_TOKEN }} # Approve 채널로 배포 시작 스레드 댓글을 추가하기 위해 스레드 값 확인 - name: Get Slack message ts id: check-github-ts shell: bash run: | sleep 3s CHANNERTS=$(curl -X POST https://slack.com/api/conversations.history \ -H "Authorization: Bearer ${{ inputs.SLACK_APPROVE_TOKEN }}" \ -H "Content-type: application/json" \ --data '{ "channel": "${{ inputs.CHANNEL_ID }}"}' | jq '.messages[] | select(.text | contains("${{ inputs.TYPE }}] ${{ inputs.SERVICE }}-${{ inputs.VERSION }} ${{ inputs.ENVIRONMENT }} 배포 요청이 있습니다.")) | .ts'|head -n 1) echo "CHANNERTS=$(echo $CHANNERTS)" >> $GITHUB_OUTPUT echo $CHANNERTS # Approve 채널로 각 서비스별 배포 담당자 멘션을 위한 blossomops 호출 # 테스트는 blossomops.dev로 진행하며 실제로는 blossomops.sandbox URL를 사용해야함 - name: Request blossomops deploy approver shell: bash run: | curl -X GET --location "https://blossomops.sandbox.groundxdev.com/v1/operator/service/approver?category=${{ inputs.CATEGORY }}&ts=${{ steps.check-github-ts.outputs.CHANNERTS }}"