{"id":20081559,"url":"https://github.com/hexpm/bob","last_synced_at":"2025-05-16T05:05:39.424Z","repository":{"id":18033709,"uuid":"21073531","full_name":"hexpm/bob","owner":"hexpm","description":"The Builder","archived":false,"fork":false,"pushed_at":"2025-02-13T11:29:05.000Z","size":622,"stargazers_count":265,"open_issues_count":4,"forks_count":62,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-05-15T19:09:14.475Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"GcsSloop/AndroidNote","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hexpm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2014-06-21T16:46:29.000Z","updated_at":"2025-05-14T21:46:32.000Z","dependencies_parsed_at":"2023-02-18T20:01:07.254Z","dependency_job_id":"208f1725-abf1-40ac-bf81-8d6535fc9d0a","html_url":"https://github.com/hexpm/bob","commit_stats":{"total_commits":486,"total_committers":46,"mean_commits":"10.565217391304348","dds":"0.18930041152263377","last_synced_commit":"9bdd6c616cbe954833076610bc4de69517b9eec3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexpm%2Fbob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexpm%2Fbob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexpm%2Fbob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexpm%2Fbob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hexpm","download_url":"https://codeload.github.com/hexpm/bob/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254471061,"owners_count":22076585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-13T15:39:28.167Z","updated_at":"2025-05-16T05:05:39.406Z","avatar_url":"https://github.com/hexpm.png","language":"Elixir","funding_links":[],"categories":["Elixir"],"sub_categories":[],"readme":"# Bob the builder\n\nBob performs automated tasks for the Elixir and Hex projects.\n\n## Elixir builds\n\nElixir builds are compiled on each git push to https://github.com/elixir-lang/elixir for any branch. After the build completes it will be available at `https://builds.hex.pm/builds/elixir/{REF}.zip` where `{REF}` is the git ref for that push. Examples of URLs are:\n\n  * https://builds.hex.pm/builds/elixir/main.zip\n  * https://builds.hex.pm/builds/elixir/v1.12.3.zip\n\nThese Elixir builds will be compiled against the oldest supported OTP version to ensure maximum compatibility for all users. We also build Elixir for every officially supported OTP version, if possible always use an Elixir compiled against the latest OTP version to get all available features in Elixir. These builds are available at `https://builds.hex.pm/builds/elixir/{REF}-otp-{OTP_MAJOR_VERSION}.zip`, examples are:\n\n  * https://builds.hex.pm/builds/elixir/main-otp-20.zip\n  * https://builds.hex.pm/builds/elixir/v1.12.3-otp-24.zip\n\nSince these builds are only available for officially supported OTP versions it is recommended that you fall back to the non OTP versioned URL if you get a 404 error for your combination of Elixir and OTP versions. Check https://github.com/hexpm/bob/blob/main/lib/bob/job/build_elixir.ex to find which OTP versions we build against for particular Elixir versions.\n\nSee https://builds.hex.pm/builds/elixir/builds.txt for a list of all builds.\n\n## Elixir docs\n\nOn git pushes documentation is built and pushed to `https://hexdocs.pm/{APPLICATION}/{VERSION}` where `{APPLICATION}` is an application in the Elixir standard distribution and `{VERSION}` is the Elixir version, examples are:\n\n  * https://hexdocs.pm/elixir/\n  * https://hexdocs.pm/elixir/main\n  * https://hexdocs.pm/mix/1.12.3\n\nDocumentation tarballs are also uploaded to `https://repo.hex.pm/docs/{APPLICATION}-{VERSION}.tar.gz`, examples are:\n\n  * https://repo.hex.pm/docs/elixir-main.tar.gz\n  * https://repo.hex.pm/docs/mix-1.12.3.tar.gz\n\n## Erlang builds\n\nErlang builds compiled on Ubuntu LTS versions are built periodically. Bob checks for new tagged releases every 15 minutes and builds any new versions it discovers. The \"master\" and \"maint*\" branches are built once a day.\n\nAfter the builds complete they will be available at `https://builds.hex.pm/builds/otp/${ARCH}/${OS_VER}/${REF}.tar.gz` where `${ARCH}` is the CPU architecture, `${OS_VER}` is the OS name and version, and `${REF}` is the name of the git tag or branch.\n\nSupported architectures:\n\n  * `amd64`\n  * `arm64`\n\nSupported OS versions:\n\n  * `ubuntu-20.04`\n  * `ubuntu-22.04`\n  * `ubuntu-24.04`\n\nExamples of URLs are:\n\n  * https://builds.hex.pm/builds/otp/amd64/ubuntu-20.04/master.tar.gz\n  * https://builds.hex.pm/builds/otp/arm64/ubuntu-22.04/OTP-26.0.tar.gz\n  * https://builds.hex.pm/builds/otp/amd64/ubuntu-24.04/maint.tar.gz\n\nFor lists of builds see:\n\n  * `amd64`:\n    * https://builds.hex.pm/builds/otp/amd64/ubuntu-20.04/builds.txt\n    * https://builds.hex.pm/builds/otp/amd64/ubuntu-22.04/builds.txt\n    * https://builds.hex.pm/builds/otp/amd64/ubuntu-24.04/builds.txt\n  * `arm64`:\n    * https://builds.hex.pm/builds/otp/arm64/ubuntu-20.04/builds.txt\n    * https://builds.hex.pm/builds/otp/arm64/ubuntu-22.04/builds.txt\n    * https://builds.hex.pm/builds/otp/arm64/ubuntu-24.04/builds.txt\n\n## Docker images\n\nDocker images for Bob's Elixir and Erlang builds are built periodically. Bob checks for new Elixir and Erlang releases every 15 minutes and builds images for any new versions it discovers. The list of operating system distributions we base the images on can be found here: https://github.com/hexpm/bob/blob/main/lib/bob/job/docker_checker.ex#L5.\n\nTagged images are never changed, that means `hexpm/erlang@22.0-alpine-3.11.2` will always target the tag `OTP-22.0` and won't update when `OTP-22.0.1` is released.\n\nErlang builds are found at https://hub.docker.com/r/hexpm/erlang, they use the versioning scheme `${OTP_VER}-${OS_NAME}-${OS_VER}` for tags. Builds for all releases since OTP 17 are provided.\n\nElixir builds are found at https://hub.docker.com/r/hexpm/elixir, they use the versioning scheme `${ELIXIR_VER}-erlang-${OTP_VER}-${OS_NAME}-${OS_VER}`. Builds for all major releases since Elixir 1.0.0 are provided. Images are built for all pairs of compatible Elixir and OTP versions.\n\nBuilds are provided for the following OS and architectures using the docker `OS/ARCH` scheme:\n\n* `linux/amd64`\n* `linux/arm64/v8`\n\n### Examples of image names\n\n * `hexpm/erlang:22.2.8-alpine-3.11.3`\n * `hexpm/erlang:22.2-ubuntu-bionic-20200219`\n * `hexpm/elixir:1.10.2-erlang-22.2.8-alpine-3.11.3`\n * `hexpm/elixir:1.10.0-erlang-22.2-ubuntu-bionic-20200219`\n\n## Hex S3 backups\n\nEach days backups of yesterdays access logs stored on the bucket `logs.hex.pm` is uploaded to the bucket `backup.hex.pm`.\n\nA snapshot of the bucket `s3.hex.pm` is also uploaded to [tarsnap](https://www.tarsnap.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhexpm%2Fbob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhexpm%2Fbob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhexpm%2Fbob/lists"}