{"id":20490723,"url":"https://github.com/circleci-public/cimg-ruby","last_synced_at":"2025-04-07T10:27:42.578Z","repository":{"id":35236327,"uuid":"178470576","full_name":"CircleCI-Public/cimg-ruby","owner":"CircleCI-Public","description":"The CircleCI Ruby Docker Convenience Image.","archived":false,"fork":false,"pushed_at":"2025-03-26T13:32:19.000Z","size":208,"stargazers_count":36,"open_issues_count":7,"forks_count":40,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-03-31T09:04:40.016Z","etag":null,"topics":["cimg","circleci","circleci-cimg","convenience-image","docker","ruby"],"latest_commit_sha":null,"homepage":"https://circleci.com/developer/images/image/cimg/ruby","language":"Dockerfile","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/CircleCI-Public.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-29T20:19:57.000Z","updated_at":"2025-03-26T13:32:22.000Z","dependencies_parsed_at":"2023-12-13T21:58:18.937Z","dependency_job_id":"565336f5-e8fe-4bb3-b22b-2017b77b6828","html_url":"https://github.com/CircleCI-Public/cimg-ruby","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CircleCI-Public%2Fcimg-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CircleCI-Public%2Fcimg-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CircleCI-Public%2Fcimg-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CircleCI-Public%2Fcimg-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CircleCI-Public","download_url":"https://codeload.github.com/CircleCI-Public/cimg-ruby/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247634691,"owners_count":20970586,"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":["cimg","circleci","circleci-cimg","convenience-image","docker","ruby"],"created_at":"2024-11-15T17:18:13.018Z","updated_at":"2025-04-07T10:27:42.547Z","avatar_url":"https://github.com/CircleCI-Public.png","language":"Dockerfile","readme":"\u003cdiv align=\"center\"\u003e\n\t\u003cp\u003e\n\t\t\u003cimg alt=\"CircleCI Logo\" src=\"https://raw.github.com/CircleCI-Public/cimg-ruby/main/img/circle-circleci.svg?sanitize=true\" width=\"75\" /\u003e\n\t\t\u003cimg alt=\"Docker Logo\" src=\"https://raw.github.com/CircleCI-Public/cimg-ruby/main/img/circle-docker.svg?sanitize=true\" width=\"75\" /\u003e\n\t\t\u003cimg alt=\"Ruby Logo\" src=\"https://raw.github.com/CircleCI-Public/cimg-ruby/main/img/circle-ruby.svg?sanitize=true\" width=\"75\" /\u003e\n\t\u003c/p\u003e\n\t\u003ch1\u003eCircleCI Convenience Images =\u003e Ruby\u003c/h1\u003e\n\t\u003ch3\u003eA Continuous Integration focused Ruby Docker image built to run on CircleCI\u003c/h3\u003e\n\u003c/div\u003e\n\n[![CircleCI Build Status](https://circleci.com/gh/CircleCI-Public/cimg-ruby.svg?style=shield)](https://circleci.com/gh/CircleCI-Public/cimg-ruby) [![Software License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/CircleCI-Public/cimg-ruby/main/LICENSE) [![Docker Pulls](https://img.shields.io/docker/pulls/cimg/ruby)](https://hub.docker.com/r/cimg/ruby) [![CircleCI Community](https://img.shields.io/badge/community-CircleCI%20Discuss-343434.svg)](https://discuss.circleci.com/c/ecosystem/circleci-images) [![Repository](https://img.shields.io/badge/github-README-brightgreen)](https://github.com/CircleCI-Public/cimg-ruby)\n\n**_This image is designed to supercede the legacy CircleCI Ruby image, `circleci/ruby`._**\n\n`cimg/ruby` is a Docker image created by CircleCI with continuous integration builds in mind.\nEach tag contains a complete Ruby version, the `gem` command, Bundler, and any binaries and tools that are required for builds to complete successfully in a CircleCI environment.\n\n## Support Policy\n\nThe CircleCI Docker Convenience Image support policy can be found on the [CircleCI docs](https://circleci.com/docs/convenience-images-support-policy) site. This policy outlines the release, update, and deprecation policy for CircleCI Docker Convenience Images.\n\n## Table of Contents\n\n- [Getting Started](#getting-started)\n- [How This Image Works](#how-this-image-works)\n- [Development](#development)\n- [Contributing](#contributing)\n- [Additional Resources](#additional-resources)\n- [License](#license)\n\n## Getting Started\n\nThis image can be used with the CircleCI `docker` executor.\nFor example:\n\n```yaml\njobs:\n  build:\n    docker:\n      - image: cimg/ruby:3.2.2\n    steps:\n      - checkout\n      - run: ruby --version\n```\n\nIn the above example, the CircleCI Ruby Docker image is used for the primary container.\nMore specifically, the tag `3.2.2` is used meaning the version of Ruby will be Ruby v3.2.2.\nYou can now use Ruby within the steps for this job.\n\n## How This Image Works\n\nThis image contains the Ruby programming language.\nThis includes the `gem` command as well as Bundler pre-installed.\n\n### Variants\n\nVariant images typically contain the same base software, but with a few additional modifications.\n\n#### Node.js\n\nThe Node.js variant is the same Ruby image but with Node.js also installed.\nThe Node.js variant can be used by appending `-node` to the end of an existing `cimg/ruby` tag.\n\n```yaml\njobs:\n  build:\n    docker:\n      - image: cimg/ruby:3.2-node\n    steps:\n      - checkout\n      - run: ruby --version\n      - run: node --version\n```\n\n#### Browsers\n\nThe browsers variant is the same Ruby image but with Node.js, Java, Selenium, and browser dependencies pre-installed via apt.\nThe browsers variant can be used by appending `-browser` to the end of an existing `cimg/ruby` tag.\nThe browsers variant is designed to work in conjunction with the [CircleCI Browser Tools orb](https://circleci.com/developer/orbs/orb/circleci/browser-tools).\nYou can use the orb to install a version of Google Chrome and/or Firefox into your build. The image contains all of the supporting tools needed to use both the browser and its driver.\n\n```yaml\norbs:\n  browser-tools: circleci/browser-tools@1.4.6\njobs:\n  build:\n    docker:\n      - image: cimg/ruby:3.2-browsers\n    steps:\n      - browser-tools/install-browser-tools\n      - checkout\n      - run: |\n          ruby --version\n          node --version\n          java --version\n          google-chrome --version\n```\n\n### Tagging Scheme\n\nThis image has the following tagging scheme:\n\n```\ncimg/ruby:\u003cruby-version\u003e[-variant]\n```\n\n`\u003cruby-version\u003e` - The version of Ruby to use.\nThis can be a full SemVer point release (such as `3.2.0`) or just the minor release (such as `3.2`).\nIf you use the minor release tag, it will automatically point to future patch updates as they are released.\nFor example, the tag `3.2` points to Ruby v3.2.0 now, but when the next release comes out, it will point to Ruby v3.2.1.\n\n`[-variant]` - Variant tags, if available, can optionally be used.\nFor example, the Node.js variant can be used like this: `cimg/ruby:3.2.0-node`.\n\n## Development\n\nImages can be built and run locally with this repository.\nThis has the following requirements:\n\n- local machine of Linux (Ubuntu tested) or macOS\n- modern version of Bash (v4+)\n- modern version of Docker Engine (v19.03+)\n\n### Cloning For Community Users (no write access to this repository)\n\nFork this repository on GitHub.\nWhen you get your clone URL, you'll want to add `--recurse-submodules` to the clone command in order to populate the Git submodule contained in this repo.\nIt would look something like this:\n\n```bash\ngit clone --recurse-submodules \u003cmy-clone-url\u003e\n```\n\nIf you missed this step and already cloned, you can just run `git submodule update --init --recursive` to populate the submodule.\nThen you can optionally add this repo as an upstream to your own:\n\n```bash\ngit remote add upstream https://github.com/CircleCI-Public/cimg-ruby.git\n```\n\n### Cloning For Maintainers ( you have write access to this repository)\n\nClone the project with the following command so that you populate the submodule:\n\n```bash\ngit clone --recurse-submodules git@github.com:CircleCI-Public/cimg-ruby.git\n```\n\n### Generating Dockerfiles\n\nDockerfiles can be generated for a specific Ruby version using the `gen-dockerfiles.sh` script.\nFor example, to generate the Dockerfile for Ruby v3.2.0, you would run the following from the root of the repo:\n\n```bash\n./shared/gen-dockerfiles.sh 3.2.0\n```\n\nThe generated Dockerfile will be located at `./3.2/Dockefile`.\nTo build this image locally and try it out, you can run the following:\n\n```bash\ncd 3.2/\ndocker build -t test/ruby:3.2.0 .\ndocker run -it test/ruby:3.2.0 bash\n```\n\n### Building the Dockerfiles\n\nTo build the Docker images locally as this repository does, you'll want to run the `build-images.sh` script:\n\n```bash\n./build-images.sh\n```\n\nThis would need to be run after generating the Dockerfiles first.\nWhen releasing proper images for CircleCI, this script is run from a CircleCI pipeline and not locally.\n\n### Publishing Official Images (for Maintainers only)\n\nThe individual scripts (above) can be used to create the correct files for an image, and then added to a new git branch, committed, etc.\nA release script is included to make this process easier.\nTo make a proper release for this image, let's use the fake Ruby version of v9.99, you would run the following from the repo root:\n\n```bash\n./shared/release.sh 9.99\n```\n\nThis will automatically create a new Git branch, generate the Dockerfile(s), stage the changes, commit them, and push them to GitHub.\nThe commit message will end with the string `[release]`.\nThis string is used by CircleCI to know when to push images to Docker Hub.\nAll that would need to be done after that is:\n\n- wait for build to pass on CircleCI\n- review the PR\n- merge the PR\n\nThe main branch build will then publish a release.\n\n### Incorporating Changes\n\nHow changes are incorporated into this image depends on where they come from.\n\n**build scripts** - Changes within the `./shared` submodule happen in its [own repository](https://github.com/CircleCI-Public/cimg-shared).\nFor those changes to affect this image, the submodule needs to be updated.\nTypically like this:\n\n```bash\ncd shared\ngit pull\ncd ..\ngit add shared\ngit commit -m \"Updating submodule for foo.\"\n```\n\n**parent image** - By design, when changes happen to a parent image, they don't appear in existing Ruby images.\nThis is to aid in \"determinism\" and prevent breaking customer builds.\nNew Ruby images/versions though will automatically pick up the changes.\n\nIf you _really_ want to publish changes from a parent image into the Ruby image, you have to build a specific image version as if it was a new image.\nThis will create a new Dockerfile and once published, a new image.\n\n**Ruby specific changes** - Editing the `Dockerfile.template` file in this repo is how to modify the Ruby image specifically.\nDon't forget that to see any of these changes locally, the `gen-dockerfiles.sh` script will need to be run again (see above).\n\n## Contributing\n\nWe encourage [issues](https://github.com/CircleCI-Public/cimg-ruby/issues) and [pull requests](https://github.com/CircleCI-Public/cimg-ruby/pulls) against this repository.\n\nPlease check out our [contributing guide](.github/CONTRIBUTING.md) which outlines best practices for contributions and what you can expect from the images team at CircleCI.\n\n## Additional Resources\n\n[CircleCI Docs](https://circleci.com/docs/) - The official CircleCI Documentation website.\n[CircleCI Configuration Reference](https://circleci.com/docs/2.0/configuration-reference/#section=configuration) - From CircleCI Docs, the configuration reference page is one of the most useful pages we have.\nIt will list all of the keys and values supported in `.circleci/config.yml`.\n[Docker Docs](https://docs.docker.com/) - For simple projects this won't be needed but if you want to dive deeper into learning Docker, this is a great resource.\n\n## License\n\nThis repository is licensed under the MIT license.\nThe license can be found [here](./LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcircleci-public%2Fcimg-ruby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcircleci-public%2Fcimg-ruby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcircleci-public%2Fcimg-ruby/lists"}