{"id":15090891,"url":"https://github.com/bringg/jenkins-autoscaler","last_synced_at":"2026-04-23T09:02:18.185Z","repository":{"id":41177732,"uuid":"493619828","full_name":"bringg/jenkins-autoscaler","owner":"bringg","description":"Jenkins autoscaler that scales VMs based on executors usage ","archived":false,"fork":false,"pushed_at":"2026-04-20T08:38:42.000Z","size":1638,"stargazers_count":45,"open_issues_count":4,"forks_count":0,"subscribers_count":15,"default_branch":"master","last_synced_at":"2026-04-20T10:37:19.088Z","etag":null,"topics":["autoscaler","aws","devops","gcp","golang","jas","jenkins","jenkins-autoscaler"],"latest_commit_sha":null,"homepage":"","language":"Go","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/bringg.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":"2022-05-18T10:43:30.000Z","updated_at":"2026-04-20T08:37:03.000Z","dependencies_parsed_at":"2026-03-29T06:01:33.047Z","dependency_job_id":null,"html_url":"https://github.com/bringg/jenkins-autoscaler","commit_stats":{"total_commits":153,"total_committers":3,"mean_commits":51.0,"dds":"0.14379084967320266","last_synced_commit":"72ac000fff7f99dfd8efef922e831f97576b3337"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/bringg/jenkins-autoscaler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringg%2Fjenkins-autoscaler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringg%2Fjenkins-autoscaler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringg%2Fjenkins-autoscaler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringg%2Fjenkins-autoscaler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bringg","download_url":"https://codeload.github.com/bringg/jenkins-autoscaler/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bringg%2Fjenkins-autoscaler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32173068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T02:19:40.750Z","status":"ssl_error","status_checked_at":"2026-04-23T02:17:55.737Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["autoscaler","aws","devops","gcp","golang","jas","jenkins","jenkins-autoscaler"],"created_at":"2024-09-25T10:34:33.804Z","updated_at":"2026-04-23T09:02:18.141Z","avatar_url":"https://github.com/bringg.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jenkins AutoScaler\n\n[![build](https://github.com/bringg/jenkins-autoscaler/actions/workflows/test.yml/badge.svg)](https://github.com/bringg/jenkins-autoscaler/actions/workflows/test.yml)\n[![codecov](https://codecov.io/gh/bringg/jenkins-autoscaler/branch/master/graph/badge.svg?token=eyQ42UjW9z)](https://codecov.io/gh/bringg/jenkins-autoscaler)\n[![Go Report Card](https://goreportcard.com/badge/github.com/bringg/jenkins-autoscaler)](https://goreportcard.com/report/github.com/bringg/jenkins-autoscaler)\n[![GoDoc](https://godoc.org/github.com/bringg/jenkins-autoscaler?status.svg)](https://godoc.org/github.com/bringg/jenkins-autoscaler)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n![Downloads](https://img.shields.io/github/downloads/bringg/jenkins-autoscaler/total)\n\nJenkins Autoscaler is a tool that automatically adjusts the size of the Jenkins worker nodes in AWS or GCP when one of the following conditions is true:\n\n  1. If the usage of Jenkins nodes is smaller then the specified threshold, it will scale down or if the usage is larger then a specified threshold, will scale up to the maximum of specified size limit.\n  2. Running garbage collector to remove zombie nodes.\n  3. When the queue is empty, it checks whether any node can be terminated by establishing whether the node is in idle state.\n  4. One node is kept running all the time, apart during non working hours.\n  5. Once a node is online, it's kept alive for at least 20 minutes.\n\n## AWS, Requires cloud permissions (IAM)\n\nJenkins Autoscaler utilizes Amazon EC2 Auto Scaling Groups to manage node groups.\n\n```json\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"autoscaling:DescribeAutoScalingGroups\",\n        \"autoscaling:DescribeAutoScalingInstances\",\n        \"autoscaling:DescribeScalingActivities\",\n        \"autoscaling:SetDesiredCapacity\",\n        \"autoscaling:TerminateInstanceInAutoScalingGroup\",\n        \"ec2:DescribeInstances\"\n      ],\n      \"Resource\": [\"*\"]\n    }\n  ]\n}\n```\n\n## GCP, Requires one of the following OAuth scopes\n\n```plain\nhttps://www.googleapis.com/auth/compute\nhttps://www.googleapis.com/auth/cloud-platform\n```\n\n## Compile and run\n\n```bash\nmake install\njas --help # to see all options\n```\n\nexample how to run in `gce`\n\n```bash\n\njas  \\\n    --backend=gce \\\n    --gce-project=my-gce-project \\\n    --gce-region=us-east1 \\\n    --gce-instance-group-manager=my-jenkins-instance-group \\\n    --jenkins-url=https://ci.jenkins.com \\\n    --jenkins-user=jenkins-admin \\\n    --jenkins-token=jenkins6user6token6here\n```\n\nexample how to run in `aws`\n\n```bash\n\njas  \\\n    --backend=aws \\\n    --aws-region=us-east-1 \\\n    --aws-autoscaling-group-name=my-jenkins-asg \\\n    --jenkins-url=https://ci.jenkins.com \\\n    --jenkins-user=jenkins-admin \\\n    --jenkins-token=jenkins6user6token6here\n```\n\nexample how to run with the [config file](/examples/config.example.yml)\n\n```yaml\nscaler:\n  log_level: debug\n  dry_run: true\n  run_interval: 3s\n  gc_run_interval: 3s\n  scale_up_grace_period: 5m\n  scale_down_grace_period: 10m\n  scale_down_grace_period_during_working_hours: 1h\n  controller_node_name: Built-In Node\n  scale_up_threshold: 70\n  scale_down_threshold: 30\n  max_nodes: 10\n  min_nodes_during_working_hours: 2\n  jenkins_url: https://my.jenkins.co\n  jenkins_user: \"\"\n  jenkins_token: \"\"\n\nbackend:\n  gce:\n    project: gcp-project\n    region: us-east1\n    instance_group_manager: jenkins-nodes\n  aws:\n    autoscaling_group_name: jenkins-nodes\n    region: us-east-1\n```\n\n```bash\n# run with configuration file\njas --backend=gce -c ./configs/my-jenkins-autoscaler.yaml\n```\n\n## Contribution\n\nFeel free to open Pull-Request for small fixes and changes. For bigger changes and new backends please open an issue first to prevent double work and discuss relevant stuff.\n\n## License\n\nLicensed under the MIT License. See the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbringg%2Fjenkins-autoscaler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbringg%2Fjenkins-autoscaler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbringg%2Fjenkins-autoscaler/lists"}