From 8ef0d9deff84bf70a6a07ddbaa5cedac345f0f67 Mon Sep 17 00:00:00 2001 From: Sayak Paul Date: Wed, 26 Jun 2024 22:11:33 +0530 Subject: [PATCH] [Observability] add reporting mechanism when mirroring community pipelines. (#8676) * add reporting mechanism when mirroring community pipelines. * remove unneeded argument * get the actual PATH_IN_REPO * don't need tag --- .../workflows/mirror_community_pipeline.yml | 15 +++++- utils/notify_community_pipelines_mirror.py | 54 +++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 utils/notify_community_pipelines_mirror.py diff --git a/.github/workflows/mirror_community_pipeline.yml b/.github/workflows/mirror_community_pipeline.yml index a20c95ba9593..e1028c77b700 100644 --- a/.github/workflows/mirror_community_pipeline.yml +++ b/.github/workflows/mirror_community_pipeline.yml @@ -22,6 +22,9 @@ on: jobs: mirror_community_pipeline: + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_COMMUNITY_MIRROR }} + runs-on: ubuntu-latest steps: # Checkout to correct ref @@ -86,4 +89,14 @@ jobs: run: huggingface-cli upload diffusers/community-pipelines-mirror ./examples/community ${PATH_IN_REPO} --repo-type dataset env: PATH_IN_REPO: ${{ env.PATH_IN_REPO }} - HF_TOKEN: ${{ secrets.HF_TOKEN_MIRROR_COMMUNITY_PIPELINES }} \ No newline at end of file + HF_TOKEN: ${{ secrets.HF_TOKEN_MIRROR_COMMUNITY_PIPELINES }} + + - name: Report success status + if: ${{ success() }} + run: | + pip install requests && python utils/notify_community_pipelines_mirror.py --status=success + + - name: Report failure status + if: ${{ failure() }} + run: | + pip install requests && python utils/notify_community_pipelines_mirror.py --status=failure \ No newline at end of file diff --git a/utils/notify_community_pipelines_mirror.py b/utils/notify_community_pipelines_mirror.py new file mode 100644 index 000000000000..a7d3a31c988e --- /dev/null +++ b/utils/notify_community_pipelines_mirror.py @@ -0,0 +1,54 @@ +# coding=utf-8 +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# 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 argparse +import os + +import requests + + +# Configuration +GITHUB_REPO = "huggingface/diffusers" +GITHUB_RUN_ID = os.getenv("GITHUB_RUN_ID") +SLACK_WEBHOOK_URL = os.getenv("SLACK_WEBHOOK_URL") +PATH_IN_REPO = os.getenv("PATH_IN_REPO") + + +def main(args): + action_url = f"https://github.com/{GITHUB_REPO}/actions/runs/{GITHUB_RUN_ID}" + if args.status == "success": + hub_path = f"https://huggingface.co/datasets/diffusers/community-pipelines-mirror/tree/main/{PATH_IN_REPO}" + message = ( + "βœ… Community pipelines successfully mirrored.\n" + f"πŸ•ΈοΈ GitHub Action URL: {action_url}.\n" + f"πŸ€— Hub location: {hub_path}." + ) + else: + message = f"❌ Something wrong happened. Check out the GitHub Action to know more: {action_url}." + + payload = {"text": message} + response = requests.post(SLACK_WEBHOOK_URL, json=payload) + + if response.status_code == 200: + print("Notification sent to Slack successfully.") + else: + print("Failed to send notification to Slack.") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--status", type=str, default="success", choices=["success", "failure"]) + args = parser.parse_args() + main(args)