{"id":26572963,"url":"https://github.com/kingsdigitallab/kdl-deploy-tools","last_synced_at":"2026-05-18T06:33:46.453Z","repository":{"id":256481811,"uuid":"855120323","full_name":"kingsdigitallab/kdl-deploy-tools","owner":"kingsdigitallab","description":"Collection of small tools for CI/CD, migration \u0026 sustainability","archived":false,"fork":false,"pushed_at":"2026-05-07T21:18:02.000Z","size":117,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-05-07T22:31:30.871Z","etag":null,"topics":["reusable"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kingsdigitallab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-10T10:47:39.000Z","updated_at":"2026-05-07T21:18:07.000Z","dependencies_parsed_at":"2025-09-02T01:37:02.495Z","dependency_job_id":"03158d03-6698-45c3-b56c-e952829d9de8","html_url":"https://github.com/kingsdigitallab/kdl-deploy-tools","commit_stats":null,"previous_names":["kingsdigitallab/kdl-deploy-tools"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kingsdigitallab/kdl-deploy-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingsdigitallab%2Fkdl-deploy-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingsdigitallab%2Fkdl-deploy-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingsdigitallab%2Fkdl-deploy-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingsdigitallab%2Fkdl-deploy-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kingsdigitallab","download_url":"https://codeload.github.com/kingsdigitallab/kdl-deploy-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingsdigitallab%2Fkdl-deploy-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33167662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T05:43:36.989Z","status":"ssl_error","status_checked_at":"2026-05-18T05:43:19.133Z","response_time":71,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["reusable"],"created_at":"2025-03-23T00:36:55.672Z","updated_at":"2026-05-18T06:33:46.445Z","avatar_url":"https://github.com/kingsdigitallab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kdl-deploy-tools\nCollection of small tools for CI/CD \u0026amp; sustainability\n\n## Static sites (static_site.py)\n\nThis command line python tool can copy a web site to your filesystem (i.e. make\nit static), report and correct some issues.\n\nRequirements: python 3.10+ and linux-type environment equipped with wget.\n\nHow to copy a site to a `html` folder:\n\n`python3 static_site.py copy -u https://dral.kdl.kcl.ac.uk`\n\n`python3 static_site.py -h` for more info and actions.\n\n## Down notifier (uptime.py)\n\nThis script will email a list of down sites.\n\n`python3 uptime.py`\n\nIt is meant to run a few times a day as a cron job.\n\nRequirements: python 3.5+\n\n**Before running it**, create a config file under `env/uptime.py` with the\nfollowing parameters:\n\n```python\nEMAIL_SERVER = 'YOUR_SMTP_DOMAIN'\nEMAIL_TO=[\n  'RECIPIENT_1',\n  'RECIPIENT_2',\n]\nEMAIL_FROM = 'SENDER'\nUPTIME_API_KEY = 'YOUR_UPTIME_ROBOT_READ_ONLY_API_KEY'\n```\n\n## Mercurial to Git converter ([hg2git.sh](hg2git.sh))\n\nThis script converts a Mercurial repository to a Git repository and preserves\nthe commit history.\n\n`./hg2git.sh /path/to/mercurial/repository`\n\nFor more information, see the script itself.\n\n## Visual Regression Toolkit (vireg)\n\nThis tool is used for visual regression testing. It compares two images and\nreports any differences.\n\nMore info in the [README.md file](vireg/README.md).\n\n\n## GPUs on SLURM (hpc-gpus)\n\nShows number of available gpus per type on SLURM cluster at any given moment.\n\n```bash\n\npython hpc-gpus.py\n\n       GPU | left (gpu) | max  (gpu) | left (int) | max  (int)\n--------------------------------------------------------------\n  a100_40g |          6 |         40 |          2 |         36\n  a100_80g |          0 |          0 |          1 |         41\n       a30 |          0 |          0 |          0 |          8\n       a40 |          0 |          0 |          0 |          6\n      h100 |          0 |          0 |          0 |         11\n        ib |          0 |          0 |          0 |          0\n      l40s |          0 |          0 |          2 |         19\n   rtx2080 |          0 |          0 |          1 |          4\n   rtx3070 |          0 |          0 |          9 |         10\n        t4 |          0 |          0 |          0 |          6\n   titan_v |          0 |          0 |          0 |          2\n  titan_xp |          0 |          0 |          0 |          2\n      v100 |          0 |          0 |          0 |          4\n```\n\nWhere `int` stands for `interruptible_gpu` partition.\n\n## GPU hoarder killer (kill-gpu-hoarder.py)\n\nKills processes that allocate significant GPU VRAM but remain idle for too long.\n\n```bash\npython3 kill-gpu-hoarder.py\n```\n\nRequirements: NVIDIA GPU, `nvidia-smi`, python 3.6+. Must be run as **root**.\n\nEdit the constants at the top of the script to configure thresholds:\n\n* `VRAM_THRESHOLD_GB` (default: `2`) — minimum VRAM usage to be considered\n* `INACTIVE_LIMIT_MINUTES` (default: `10`) — how long a process can stay at 0% GPU compute before being killed\n* `CHECK_INTERVAL_SECONDS` (default: `5`) — polling interval\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingsdigitallab%2Fkdl-deploy-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkingsdigitallab%2Fkdl-deploy-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingsdigitallab%2Fkdl-deploy-tools/lists"}