{"id":20490672,"url":"https://github.com/circleci-public/cimg-go","last_synced_at":"2025-10-13T11:04:52.722Z","repository":{"id":36278122,"uuid":"178469974","full_name":"CircleCI-Public/cimg-go","owner":"CircleCI-Public","description":"The CircleCI Go (Golang) Docker Convenience Image.","archived":false,"fork":false,"pushed_at":"2025-10-08T17:46:21.000Z","size":293,"stargazers_count":20,"open_issues_count":12,"forks_count":23,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-10-13T11:03:26.633Z","etag":null,"topics":["cimg","circleci","circleci-cimg","convenience-image","docker","golang"],"latest_commit_sha":null,"homepage":"https://circleci.com/developer/images/image/cimg/go","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-03-29T20:14:18.000Z","updated_at":"2025-10-08T14:55:59.000Z","dependencies_parsed_at":"2023-11-08T05:47:49.952Z","dependency_job_id":"17d4189f-6b6f-4ba2-9e0a-718d377dda4f","html_url":"https://github.com/CircleCI-Public/cimg-go","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CircleCI-Public/cimg-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CircleCI-Public%2Fcimg-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CircleCI-Public%2Fcimg-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CircleCI-Public%2Fcimg-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CircleCI-Public%2Fcimg-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CircleCI-Public","download_url":"https://codeload.github.com/CircleCI-Public/cimg-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CircleCI-Public%2Fcimg-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279014750,"owners_count":26085593,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cimg","circleci","circleci-cimg","convenience-image","docker","golang"],"created_at":"2024-11-15T17:17:59.068Z","updated_at":"2025-10-13T11:04:52.677Z","avatar_url":"https://github.com/CircleCI-Public.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\t\u003cp\u003e\n\t\t\u003cimg alt=\"CircleCI Logo\" src=\"https://raw.github.com/CircleCI-Public/cimg-go/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-go/main/img/circle-docker.svg?sanitize=true\" width=\"75\" /\u003e\n\t\t\u003cimg alt=\"Go Logo\" src=\"https://raw.github.com/CircleCI-Public/cimg-go/main/img/circle-go.svg?sanitize=true\" width=\"75\" /\u003e\n\t\u003c/p\u003e\n\t\u003ch1\u003eCircleCI Convenience Images =\u003e Go\u003c/h1\u003e\n\t\u003ch3\u003eA Continuous Integration focused Go 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-go.svg?style=shield)](https://circleci.com/gh/CircleCI-Public/cimg-go) [![Software License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/CircleCI-Public/cimg-go/main/LICENSE) [![Docker Pulls](https://img.shields.io/docker/pulls/cimg/go)](https://hub.docker.com/r/cimg/go) [![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-go)\n\n**_This image is designed to supercede the legacy CircleCI Go image, `circleci/golang`._**\n\n`cimg/go` is a Docker image created by CircleCI with continuous integration builds in mind.\nEach tag contains a complete Go version and toolchain, the testing wrapper `gotestsum`, 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  - [Changes From Legacy Image](#changes-from-legacy-image)\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/go:1.17\n    steps:\n      - checkout\n      - run: go version\n```\n\nIn the above example, the CircleCI Go Docker image is used for the primary container.\nMore specifically, the tag `1.17` is used meaning the version of Go will be Go v1.17.\nYou can now use Go within the steps for this job.\n\n## How This Image Works\n\nThis image contains the Go programming language and its complete toolchain.\nThis includes support for Go modules, the official Go Proxy Server, etc.\n\n### Changes From Legacy Image\n\nIf you're coming from the legacy version of this image, `circleci/golang`, here's any changes that you might want to be aware of:\n\n- `GOPATH` - this envar has changed from `/go` to `$HOME/go`.\nThe latter will expand to the full path of `/home/circleci/go`.\nOn first run, this change may affect caching and some other commands if you don’t correct the page in your config.\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 Go image but with Node.js also installed.\nThe Node.js variant will be used by appending `-node` to the end of an existing `cimg/go` tag.\n\n```yaml\njobs:\n  build:\n    docker:\n      - image: cimg/go:1.17-node\n    steps:\n      - checkout\n      - run: go version\n      - run: node --version\n```\n\n#### Browsers\n\nThe browsers variant is the same Go 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/go` 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.1\njobs:\n  build:\n    docker:\n      - image: cimg/go:1.17-browsers\n    steps:\n      - browser-tools/install-browser-tools\n      - checkout\n      - run: |\n          go 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/go:\u003cgo-version\u003e[-variant]\n```\n\n`\u003cgo-version\u003e` - The version of Go to use.\nThis can be a full SemVer point release (such as `1.12.7`) or just the minor release (such as `1.12.0`).\nIf you use the minor release tag, it will automatically point to future patch updates as they are released by the Go Team.\nFor example, the tag `1.17` points to Go v1.17 now, but when the next release comes out, it will point to Go v1.17.1.\n\n`[-variant]` - Variant tags, if available, can optionally be used.\nOnce the Node.js variant is available, it could be used like this: `cimg/go:1.17-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` 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-go.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-go.git\n```\n\n### Generating Dockerfiles\n\nDockerfiles can be generated for a specific Go version using the `gen-dockerfiles.sh` script.\nFor example, to generate the Dockerfile for Go v1.18, you would run the following from the root of the repo:\n\n```bash\n./shared/gen-dockerfiles.sh 1.18.0\n```\n\nThe generated Dockerfile will be located at `./1.18/Dockefile`.\nTo build this image locally and try it out, you can run the following:\n\n```bash\ncd 1.18\ndocker build -t test/go:1.18.0 .\ndocker run -it test/go:1.18.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 Go version of Go 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 Go images.\nThis is to aid in \"determinism\" and prevent breaking customer builds.\nNew Go images will automatically pick up the changes.\n\nIf you _really_ want to publish changes from a parent image into the Go 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**Go specific changes** - Editing the `Dockerfile.template` file in this repo will modify the Go 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-go/issues) and [pull requests](https://github.com/CircleCI-Public/cimg-go/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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcircleci-public%2Fcimg-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcircleci-public%2Fcimg-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcircleci-public%2Fcimg-go/lists"}