Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trigger Publish Job notification to Slack #381

Open
wants to merge 2 commits into
base: cab/gha-automation
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all 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
103 changes: 103 additions & 0 deletions .github/actions/notify-slack/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: slack-alert-action
description: "Action to send slack payload to public-sdk-events channel"

inputs:
heading_text:
required: true
description: "Heading of the slack payload"
alert_type:
required: true
description: "type of the slack alert"
job_status:
required: true
description: "status of the job"
XERO_SLACK_WEBHOOK_URL:
required: true
description: "webhook url for channel - public-sdk-events"
job_url:
required: true
description: "job run id link"
button_type:
required: true
description: "color for the check logs button"
package_version:
required: true
description: "released package version"
repo_link:
required: true
description: "link of the repo"


runs:
using: "composite"

steps:

- name: Send slack notification
id: slack
uses: slackapi/[email protected]
env:
SLACK_WEBHOOK_URL: ${{inputs.XERO_SLACK_WEBHOOK_URL}}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
with:
payload: |
{
"blocks": [
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "${{inputs.heading_text}} ",
"style": {
"bold": true
}
},
{
"type": "emoji",
"name": "${{inputs.alert_type}}"
}
]
}
]
},
{
"type": "divider"
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Repository:* \n ${{inputs.repo_link}}"
},
{
"type": "mrkdwn",
"text": "*Status:*\n ${{inputs.job_status}}"
},
{
"type": "mrkdwn",
"text": "*Package Version:*\n ${{inputs.package_version}}"
}
]
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "Check the logs",
"emoji": true
},
"style": "${{inputs.button_type}}",
"url": "${{inputs.job_url}}"
}
]
}
]
}
78 changes: 78 additions & 0 deletions .github/workflows/check-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Check Packagist Publish

on:
release:
types: [published]

jobs:
check-publish:
runs-on: ubuntu-latest

steps:

- name: Checkout repo
uses: actions/checkout@v4
with:
repository: XeroAPI/xero-php-oauth2
path: xero-php-oauth2

- name: Fetch Latest release number
id: get_latest_release_number
run: |
latest_version=$(gh release view --json tagName --jq '.tagName')
echo "Latest release version is - $latest_version"
echo "php_version=${latest_version}" >> $GITHUB_ENV
working-directory: xero-php-oauth2
env:
GH_TOKEN: ${{secrets.GITHUB_TOKEN}}

- name: Get latest version from packgist
id: get_packagist_version
run: |
RESPONSE=$(curl -s https://repo.packagist.org/p2/xeroapi/xero-php-oauth2.json)
LATEST_VERSION=$(echo $RESPONSE | jq -r '.packages["xeroapi/xero-php-oauth2"][0].version')
echo "latest packagist version: $LATEST_VERSION"
echo "latest_packagist_version=${LATEST_VERSION}" >> $GITHUB_ENV

- name: Compare versions
id: compare_versions
run: |
if [ "${{env.php_version}}" == "${{env.latest_packagist_version}}" ]; then
echo "Packagist is up-to-date"
echo "packagist_status=success" >> $GITHUB_ENV
else
echo "Packagist is not updated yet"
echo "packagist_status=failure" >> $GITHUB_ENV
fi

- name: Send slack Notification on Success
if: ${{ env.packagist_status == 'success' }}
uses: ./xero-php-oauth2/.github/actions/notify-slack
with:
heading_text: "Publish job has succeeded !"
alert_type: "thumbsup"
job_status: "Success"
XERO_SLACK_WEBHOOK_URL: ${{secrets.XERO_SLACK_WEBHOOK_URL}}
job_url: "https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}"
button_type: "primary"
package_version: ${{env.php_version}}
repo_link: ${{github.server_url}}/${{github.repository}}

- name: Send slack Notification on Failure
if: ${{ env.packagist_status == 'failure' }}
uses: ./xero-php-oauth2/.github/actions/notify-slack
with:
heading_text: "Publish job has failed !"
alert_type: "alert"
job_status: "Failed"
XERO_SLACK_WEBHOOK_URL: ${{secrets.XERO_SLACK_WEBHOOK_URL}}
job_url: "https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}"
button_type: "danger"
package_version: ${{env.php_version}}
repo_link: ${{github.server_url}}/${{github.repository}}

- name: Fail job if status is Failure
if: ${{env.packagist_status == 'failure'}}
run: |
echo "Job failed because packagist is not updated"
exit 1