From 78bbe0a86f0f9a11da871855947b97122e81ee01 Mon Sep 17 00:00:00 2001 From: sangeet-joy_xero Date: Mon, 21 Oct 2024 15:12:37 +0530 Subject: [PATCH 1/4] ci: Added slack alert --- .github/actions/notify-slack/action.yml | 103 ++++++++++++++++++++++++ .github/workflows/publish.yml | 73 ++++++++++++++++- 2 files changed, 173 insertions(+), 3 deletions(-) create mode 100644 .github/actions/notify-slack/action.yml diff --git a/.github/actions/notify-slack/action.yml b/.github/actions/notify-slack/action.yml new file mode 100644 index 00000000..add9673f --- /dev/null +++ b/.github/actions/notify-slack/action.yml @@ -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/slack-github-action@v1.27.0 + 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}}" + } + ] + } + ] + } diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index abc3ab09..be8dd3cf 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -3,10 +3,20 @@ on: release: types: [published] + pull_request: + branches: + - master + jobs: publish: runs-on: ubuntu-latest + outputs: + release_number: ${{steps.get_latest_release_number.outputs.release_tag}} + permissions: + contents: write + pull-requests: write + steps: - name: Checkout Xero-Java repo uses: actions/checkout@v4 @@ -25,6 +35,16 @@ jobs: server-password: MAVEN_PASSWORD gpg-passphrase: GPG_PASSPHRASE + - 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 "::set-output name=release_tag::$latest_version" + working-directory: Xero-Java + env: + GH_TOKEN: ${{secrets.GITHUB_TOKEN}} + - name: Import GPG Key run: | echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import @@ -36,7 +56,54 @@ jobs: export GPG_TTY=$(tty) mvn clean deploy -DskipTests=true env: - MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.MAVEN_TOKEN }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + test: test + # MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + # MAVEN_PASSWORD: ${{ secrets.MAVEN_TOKEN }} + # GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} working-directory: Xero-Java + + notify-slack-on-success: + runs-on: ubuntu-latest + needs: publish + if: success() + steps: + - name: Checkout Xero-Java repo + uses: actions/checkout@v4 + with: + repository: XeroAPI/Xero-Java + path: Xero-Java + + - name: Send slack notification on success + uses: ./Xero-Java/.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: ${{needs.publish.outputs.release_number}} + repo_link: ${{github.server_url}}/${{github.repository}} + + notify-slack-on-failure: + runs-on: ubuntu-latest + needs: publish + if: failure() + steps: + - name: Checkout Xero-Java repo + uses: actions/checkout@v4 + with: + repository: XeroAPI/Xero-Java + path: Xero-Java + + - name: Send slack notification on failure + uses: ./Xero-Java/.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: ${{needs.publish.outputs.release_number}} + repo_link: ${{github.server_url}}/${{github.repository}} From d7187c14a19a2e5cce0a4c831221d7c54dfa49f8 Mon Sep 17 00:00:00 2001 From: sangeet-joy_xero Date: Mon, 21 Oct 2024 15:15:04 +0530 Subject: [PATCH 2/4] ci: clean up --- .github/workflows/publish.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index be8dd3cf..2f1cede9 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -3,10 +3,6 @@ on: release: types: [published] - pull_request: - branches: - - master - jobs: publish: runs-on: ubuntu-latest @@ -56,10 +52,9 @@ jobs: export GPG_TTY=$(tty) mvn clean deploy -DskipTests=true env: - test: test - # MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} - # MAVEN_PASSWORD: ${{ secrets.MAVEN_TOKEN }} - # GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_TOKEN }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} working-directory: Xero-Java notify-slack-on-success: From 4505f9398edc8a9a1130700e1db62e5544441eed Mon Sep 17 00:00:00 2001 From: sangeet-joy_xero Date: Wed, 23 Oct 2024 13:16:08 +0530 Subject: [PATCH 3/4] ci: testing the successflow --- .github/workflows/publish.yml | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2f1cede9..99194293 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -2,6 +2,9 @@ name: Publish on: release: types: [published] + pull_request: + branches: + - master jobs: publish: @@ -41,21 +44,21 @@ jobs: env: GH_TOKEN: ${{secrets.GITHUB_TOKEN}} - - name: Import GPG Key - run: | - echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import - env: - GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY}} + # - name: Import GPG Key + # run: | + # echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import + # env: + # GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY}} - - name: Publish to Maven - run: | - export GPG_TTY=$(tty) - mvn clean deploy -DskipTests=true - env: - MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.MAVEN_TOKEN }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - working-directory: Xero-Java + # - name: Publish to Maven + # run: | + # export GPG_TTY=$(tty) + # mvn clean deploy -DskipTests=true + # env: + # MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + # MAVEN_PASSWORD: ${{ secrets.MAVEN_TOKEN }} + # GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + # working-directory: Xero-Java notify-slack-on-success: runs-on: ubuntu-latest From 3940e8092c7e9d5cde4ef3c868512635882eb7a7 Mon Sep 17 00:00:00 2001 From: sangeet-joy_xero Date: Wed, 23 Oct 2024 13:17:15 +0530 Subject: [PATCH 4/4] ci: reverted the testing changes --- .github/workflows/publish.yml | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 99194293..2f1cede9 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -2,9 +2,6 @@ name: Publish on: release: types: [published] - pull_request: - branches: - - master jobs: publish: @@ -44,21 +41,21 @@ jobs: env: GH_TOKEN: ${{secrets.GITHUB_TOKEN}} - # - name: Import GPG Key - # run: | - # echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import - # env: - # GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY}} + - name: Import GPG Key + run: | + echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import + env: + GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY}} - # - name: Publish to Maven - # run: | - # export GPG_TTY=$(tty) - # mvn clean deploy -DskipTests=true - # env: - # MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} - # MAVEN_PASSWORD: ${{ secrets.MAVEN_TOKEN }} - # GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - # working-directory: Xero-Java + - name: Publish to Maven + run: | + export GPG_TTY=$(tty) + mvn clean deploy -DskipTests=true + env: + MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_TOKEN }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + working-directory: Xero-Java notify-slack-on-success: runs-on: ubuntu-latest