xbp 10.5.0

XBP is a zero-config build pack that can also interact with proxies, kafka, sockets, synthetic monitors.
Documentation
import os
import json
import requests
from dotenv import load_dotenv
from github_jwt_key import generate_jwt, generate_installation_token

load_dotenv()

def post_commit_status(deployment, commit_status):
    jwt_key = generate_jwt()

    install_token = generate_installation_token(
        jwt_key,
        github_username=deployment.repository_owner,
        github_repository_name=deployment.repository_name,
    )
    # The URL to post the commit status
    url = f"https://api.github.com/repos/{deployment.repository_owner}/{deployment.repository_name}/statuses/{deployment.sha}"
    payload = json.dumps(
        {
            "state": deployment.status,
            "target_url": f"https://xylex.cloud/{deployment.organization_name}/{deployment.project_name}/deployments/{deployment.deployment_id}",
            "description": commit_status,
            "context": "XBP",
        }
    )
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {install_token}",
    }

    response = requests.post(url, headers=headers, data=payload)
    json_response = response.json()
    print(json_response)

    return json_response

def post_commit_comment(deployment, comment_body):
    jwt_key = generate_jwt()
    install_token = generate_installation_token(
        jwt_key, deployment.repository_owner, deployment.repository_name
    )
    url = f"https://api.github.com/repos/{deployment.repository_owner}/{deployment.repository_name}/commits/{deployment.sha}/comments"
    payload = json.dumps({"body": comment_body})
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {install_token}",
        "User-Agent": "XBP-v0.3.7",
    }
    response = requests.post(url, headers=headers, data=payload)
    print(response.text)