diff --git a/.github/workflows/monitor-slack-link.yml b/.github/workflows/monitor-slack-link.yml index 648e047a153..55f91558ef9 100644 --- a/.github/workflows/monitor-slack-link.yml +++ b/.github/workflows/monitor-slack-link.yml @@ -24,16 +24,25 @@ jobs: runs-on: ubuntu-latest steps: + - name: Set up Python 3.9 + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install Deps + run: | + python -m venv env + source env/bin/activate + pip install requests + - name: Monitor Link id: monitor continue-on-error: true + env: + PYTHONUNBUFFERED: "1" run: | - sudo apt-get update && sudo apt-get install -y jq - - curl -XPOST \ - https://www.linkmonitor.dev/api/v1/validate \ - -H "Content-Type: application/json" \ - --data '{"url": "https://slack.open-metadata.org"}' | jq -e '.status == "active"' || exit 1 + source env/bin/activate + python scripts/slack-link-monitor.py - name: Slack on Failure if: steps.monitor.outcome != 'success' diff --git a/scripts/slack-link-monitor.py b/scripts/slack-link-monitor.py new file mode 100644 index 00000000000..790ef18b4ba --- /dev/null +++ b/scripts/slack-link-monitor.py @@ -0,0 +1,26 @@ +# Copyright 2021 Collate +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +import requests + +try: + res = requests.post( + "https://www.linkmonitor.dev/api/v1/validate", + headers={"Content-Type": "application/json"}, + json={"url": "https://slack.open-metadata.org"}, + ) + if res.json().get("status") != "active": + raise RuntimeError("Expired status!") +except RuntimeError as err: + raise err +except Exception as err: + logging.error(f"Something went wrong fetching the data - [{err}]")