├── .circleci └── config.yml ├── .github ├── CODEOWNERS ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ ├── cimg-bug-report.md │ ├── cimg-feature-request.md │ └── config.yml └── pull_request_template.md ├── .gitmodules ├── 1.17 ├── Dockerfile ├── browsers │ └── Dockerfile └── node │ └── Dockerfile ├── 1.18 ├── Dockerfile ├── browsers │ └── Dockerfile └── node │ └── Dockerfile ├── 1.19 ├── Dockerfile ├── browsers │ └── Dockerfile └── node │ └── Dockerfile ├── 1.20 ├── Dockerfile ├── browsers │ └── Dockerfile └── node │ └── Dockerfile ├── 1.21 ├── Dockerfile ├── browsers │ └── Dockerfile └── node │ └── Dockerfile ├── 1.22 ├── Dockerfile ├── browsers │ └── Dockerfile └── node │ └── Dockerfile ├── 1.23 ├── Dockerfile ├── browsers │ └── Dockerfile └── node │ └── Dockerfile ├── 1.24 ├── Dockerfile ├── browsers │ └── Dockerfile └── node │ └── Dockerfile ├── Dockerfile.template ├── GEN-CHECK ├── LICENSE ├── README.md ├── build-images.sh ├── goFeed.sh ├── img ├── circle-circleci.svg ├── circle-docker.svg └── circle-go.svg ├── manifest ├── push-images.sh └── renovate.json5 /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | 3 | orbs: 4 | cimg: circleci/cimg@0.6.5 5 | slack: circleci/slack@4.13.3 6 | 7 | parameters: 8 | cron: 9 | type: boolean 10 | default: false 11 | 12 | workflows: 13 | automated-wf: 14 | when: << pipeline.parameters.cron >> 15 | jobs: 16 | - cimg/update: 17 | update-script: goFeed.sh 18 | context: 19 | - slack-notification-access-token 20 | - slack-cimg-notifications 21 | - cpe-image-bot-github-creds 22 | main-wf: 23 | when: 24 | not: << pipeline.parameters.cron >> 25 | jobs: 26 | - build_and_deploy: 27 | context: 28 | - cimg-docker-image-building 29 | - cimg-docker-image-publishing 30 | 31 | jobs: 32 | build_and_deploy: 33 | machine: 34 | image: ubuntu-2404:current 35 | resource_class: 2xlarge 36 | steps: 37 | - run: 38 | name: Install latest QEMU 39 | command: sudo apt-get update && sudo apt-get install qemu-system 40 | - run: 41 | name: Register binfmt for supported platforms 42 | command: docker run --privileged --rm tonistiigi/binfmt --install all 43 | - checkout 44 | - run: 45 | name: Docker login 46 | command: echo "$DOCKER_TOKEN" | docker login -u "$DOCKER_USER" --password-stdin 47 | - when: 48 | condition: 49 | not: 50 | equal: [ main, << pipeline.git.branch >> ] 51 | steps: 52 | - run: 53 | name: "Build and deploy to ccitest/go" 54 | command: | 55 | DOCKER_NAMESPACE="ccitest" 56 | source ./manifest 57 | 58 | while IFS= read -r line; do 59 | 60 | if [[ $arm64 == "1" ]]; then 61 | directory=$(echo "$line" | awk '{print $6}') 62 | else 63 | directory=$(echo "$line" | awk '{print $4}') 64 | fi 65 | if [[ "${directory}" =~ "Dockerfile" ]]; then 66 | if [ "${parent:?}" != "base" ]; then 67 | sed -i "s|cimg/${repository:?}|${DOCKER_NAMESPACE}/${repository}|g" "$directory" 68 | sed -i "s|cimg/${parent}|${DOCKER_NAMESPACE}/${parent}|g" "$directory" 69 | else 70 | sed -i "s|cimg/$repository|${DOCKER_NAMESPACE}/${repository}|g" "$directory" 71 | fi 72 | fi 73 | 74 | done < ./build-images.sh 75 | 76 | sed 's|cimg|'"${DOCKER_NAMESPACE}"'|g' ./build-images.sh > ./build-images-stage.sh 77 | 78 | chmod +x ./build-images-stage.sh 79 | ./build-images-stage.sh 80 | - when: 81 | condition: 82 | equal: [ main, << pipeline.git.branch >> ] 83 | steps: 84 | - run: 85 | name: "Build and deploy to cimg/go" 86 | command: ./build-images.sh 87 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @CircleCI-Public/images 2 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # CircleCI Docker Convenience Image Contributions 2 | 3 | We welcome all contributions to our CircleCI Docker Convenience Image repositories from the community! 4 | 5 | This file outlines best practices for contributions and what you can expect from the images team at CircleCI. 6 | 7 | ## Image Support Policy 8 | 9 | For our official CircleCI Docker Convenience Image support policy, please see [CircleCI docs](https://circleci.com/docs/convenience-images-support-policy). 10 | 11 | This policy outlines the release, update, and deprecation policy for CircleCI Docker Convenience Images. 12 | 13 | ## Issues 14 | 15 | Please open issues for feature requests and bug reports. Depending on the type of issue, please fill out the issue template with as much information as possible. 16 | 17 | The more information you can provide about your issue, the better we can help address the issue promptly! 18 | 19 | For feature requests, in order for us to add a tool within the image, it has to be something that is maintained and useful to a majority of CircleCI users. Every tool added makes the image larger and slower for all users, so any new additions need to be carefully thought out. 20 | 21 | While we make every effort to respond to issues quickly, however please note that we do not provide an official SLA for this. 22 | 23 | ## Contributions and Pull Requests 24 | 25 | When making changes to CircleCI Docker Convenience Images, please only make these changes in the `Dockerfile.template` file in the root of the repository. 26 | 27 | Our build and releases scripts generate new Dockerfiles based on the `Dockerfile.template` file and overwrite the Dockerfiles in the version directories. Therefore, only changes made to the `Dockerfile.template` file will be valid for a pull request as changes to other files will be lost. 28 | 29 | Additionally, please do not make changes to any of the build or push bash script files as these are also automatically generated. 30 | 31 | Ensure extra layers are not added to the Dockerfile where it is not necessary. We aim to keep layer count low to ensure good caching in the CircleCI execution environment. 32 | 33 | Please fill out the pull request template when opening a new pull request. This helps us to look into new pull requests in a timely manner. 34 | 35 | While we make every effort to respond to pull requests quickly, however please note that we do not provide an official SLA for this. 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/cimg-bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Create a bug report for this image 4 | title: 'Bug Report: ' 5 | labels: 'bug' 6 | assignees: '' 7 | 8 | --- 9 | 10 | *Note: We also welcome PRs to fix bugs! This helps us take action faster where a bug has been identified!* 11 | 12 | For our official CircleCI Docker Convenience Image support policy, please see [CircleCI docs](https://circleci.com/docs/convenience-images-support-policy). 13 | 14 | This policy outlines the release, update, and deprecation policy for CircleCI Docker Convenience Images. 15 | 16 | --- 17 | 18 | **Describe the bug** 19 | A clear and concise description of what the bug is. 20 | 21 | **To Reproduce** 22 | Please provide steps to reproduce the behavior, such as a sample job or config file. 23 | 24 | **Expected behavior** 25 | A clear and concise description of what you expected to happen. 26 | 27 | **Workarounds** 28 | Are there any current workarounds for this bug that can be used currently? 29 | 30 | **Screenshots and Build Links** 31 | If possible, add screenshots and links to jobs to help explain your problem. 32 | 33 | **Additional context** 34 | Add any other context about the problem here. -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/cimg-feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: Create a feature / enhancement request for this image 4 | title: 'Feature Request: ' 5 | labels: 'enhancement' 6 | assignees: '' 7 | 8 | --- 9 | 10 | For our official CircleCI Docker Convenience Image support policy, please see [CircleCI docs](https://circleci.com/docs/convenience-images-support-policy). 11 | 12 | This policy outlines the release, update, and deprecation policy for CircleCI Docker Convenience Images. 13 | 14 | --- 15 | 16 | **Describe the Feature Request** 17 | Please describe the feature request. 18 | 19 | **Is your feature request related to a particular problem?** 20 | A clear and concise description of what the problem is. 21 | 22 | **How will this feature request benefit CircleCI jobs using this image?** 23 | For example, will it help speed up jobs significantly by not having to install a commonly used package every run? 24 | 25 | In order for us to add a tool within the image, it has to be something that is maintained and useful to a majority of CircleCI users. Every tool added makes the image larger and slower for all users, so any new additions need to be carefully thought out. 26 | 27 | **Describe the solution you would like to see** 28 | A clear and concise description of what you would like to see for this feature request. For example "I like like to see xyz package installed by default in the image". 29 | 30 | **Describe alternatives you have considered** 31 | A clear and concise description of any alternative solutions you have considered, such as different packages or workarounds. 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: CircleCI Discuss Community Forum 4 | url: https://discuss.circleci.com 5 | about: Community forum for CircleCI users -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | For our official CircleCI Docker Convenience Image support policy, please see [CircleCI docs](https://circleci.com/docs/convenience-images-support-policy). 2 | 3 | This policy outlines the release, update, and deprecation policy for CircleCI Docker Convenience Images. 4 | 5 | --- 6 | 7 | # Description 8 | A brief description of the changes in this PR. 9 | 10 | # Reasons 11 | Please provide reasoning for these changes and how this PR achieves them. 12 | 13 | If applicable, include a link to the related GitHub issue that this PR will close. 14 | 15 | # Checklist 16 | 17 | Please check through the following before opening your PR. Thank you! 18 | 19 | - [ ] I have made changes to the `Dockerfile.template` file only 20 | - [ ] I have not made any manual changes to automatically generated files 21 | - [ ] My PR follows best practices as described in the [contributing guidelines](CONTRIBUTING) 22 | - [ ] (Optional, but recommended) My commits are [signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) 23 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "shared"] 2 | path = shared 3 | url = git@github.com:CircleCI-Public/cimg-shared.git 4 | -------------------------------------------------------------------------------- /1.17/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | # Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles. 4 | 5 | FROM cimg/base:2022.06 6 | 7 | LABEL maintainer="Community & Partner Engineering Team " 8 | 9 | ENV GO_VER="1.17.13" 10 | 11 | # Install packages needed for CGO 12 | RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \ 13 | g++ \ 14 | libc6-dev && \ 15 | sudo rm -rf /var/lib/apt/lists/* && \ 16 | # Check if we're facing the first minor release issue and adjust if needed 17 | if [[ ${GO_VER:(-2)} == ".0" ]]; then \ 18 | GO_VER=${GO_VER:0:-2}; \ 19 | fi && \ 20 | curl -sSL "https://golang.org/dl/go${GO_VER}.linux-amd64.tar.gz" | sudo tar -xz -C /usr/local/ && \ 21 | mkdir -p /home/circleci/go/bin 22 | 23 | # Install related tools 24 | ENV GOTESTSUM_V=1.8.1 25 | ENV GOCI_LINT_V=1.47.3 26 | RUN curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_V}/gotestsum_${GOTESTSUM_V}_linux_amd64.tar.gz" | \ 27 | sudo tar -xz -C /usr/local/bin gotestsum && \ 28 | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v${GOCI_LINT_V} 29 | 30 | ENV GOPATH /home/circleci/go 31 | ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH 32 | -------------------------------------------------------------------------------- /1.17/browsers/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.17.13-node 4 | 5 | LABEL maintainer="CircleCI Community & Partner Engineering Team " 6 | 7 | # Install Selenium 8 | ENV SELENIUM_VER=3.141.59 9 | RUN curl -sSL -o selenium-server-standalone-${SELENIUM_VER}.jar "https://selenium-release.storage.googleapis.com/${SELENIUM_VER%.*}/selenium-server-standalone-${SELENIUM_VER}.jar" && \ 10 | sudo cp selenium-server-standalone-${SELENIUM_VER}.jar /usr/local/bin/selenium.jar && \ 11 | rm selenium-server-standalone-${SELENIUM_VER}.jar 12 | 13 | RUN sudo apt-get update && \ 14 | 15 | # Install Java only if it's not already available 16 | # Java is installed for Selenium 17 | if ! command -v java > /dev/null; then \ 18 | echo "Java not found in parent image, installing..." && \ 19 | sudo apt-get install -y --no-install-recommends --no-upgrade openjdk-11-jre; \ 20 | fi && \ 21 | 22 | # Firefox deps 23 | sudo apt-get install -y --no-install-recommends --no-upgrade \ 24 | libdbus-glib-1-2 \ 25 | libgtk-3-dev \ 26 | libxt6 \ 27 | && \ 28 | 29 | # Google Chrome deps 30 | # Some of these packages should be pulled into their own section 31 | sudo apt-get install -y --no-install-recommends --no-upgrade \ 32 | fonts-liberation \ 33 | libappindicator3-1 \ 34 | libasound2 \ 35 | libatk-bridge2.0-0 \ 36 | libatspi2.0-0 \ 37 | libcairo2 \ 38 | libcups2 \ 39 | libgbm1 \ 40 | libgdk-pixbuf2.0-0 \ 41 | libgtk-3-0 \ 42 | libpango-1.0-0 \ 43 | libpangocairo-1.0-0 \ 44 | libxcursor1 \ 45 | libxss1 \ 46 | xdg-utils \ 47 | xvfb \ 48 | && \ 49 | sudo rm -rf /var/lib/apt/lists/* 50 | 51 | # Below is setup to allow xvfb to start when the container starts up. 52 | # The label in particular allows this image to override what CircleCI does 53 | # when booting the image. 54 | LABEL com.circleci.preserve-entrypoint=true 55 | ENV DISPLAY=":99" 56 | #RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint && \ 57 | # chmod +x /tmp/entrypoint && \ 58 | # sudo mv /tmp/entrypoint /docker-entrypoint.sh 59 | RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' | sudo tee /docker-entrypoint.sh && \ 60 | sudo chmod +x /docker-entrypoint.sh 61 | 62 | ENTRYPOINT ["/docker-entrypoint.sh"] 63 | CMD ["/bin/sh"] 64 | -------------------------------------------------------------------------------- /1.17/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.17.13 4 | 5 | LABEL maintainer="Community & Partner Engineering Team " 6 | 7 | # Dockerfile will pull the latest LTS release from cimg-node. 8 | RUN curl -sSL "https://raw.githubusercontent.com/CircleCI-Public/cimg-node/main/ALIASES" -o nodeAliases.txt && \ 9 | NODE_VERSION=$(grep "lts" ./nodeAliases.txt | cut -d "=" -f 2-) && \ 10 | curl -L -o node.tar.xz "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" && \ 11 | sudo tar -xJf node.tar.xz -C /usr/local --strip-components=1 && \ 12 | rm node.tar.xz nodeAliases.txt && \ 13 | sudo ln -s /usr/local/bin/node /usr/local/bin/nodejs 14 | 15 | ENV YARN_VERSION 1.22.5 16 | RUN curl -L -o yarn.tar.gz "https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz" && \ 17 | sudo tar -xzf yarn.tar.gz -C /opt/ && \ 18 | rm yarn.tar.gz && \ 19 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarn /usr/local/bin/yarn && \ 20 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarnpkg /usr/local/bin/yarnpkg 21 | -------------------------------------------------------------------------------- /1.18/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | # Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles. 4 | 5 | # By policy, the base image tag should be a quarterly tag unless there's a 6 | # specific reason to use a different one. This means January, April, July, or 7 | # October. 8 | 9 | # NOTE: The base image uses November due to a OpenSSL CVE. Will resume using quarterly images in Q1 10 | FROM cimg/base:2022.11 11 | 12 | LABEL maintainer="Community & Partner Engineering Team " 13 | 14 | ENV GO_VER="1.18.10" 15 | 16 | # Install packages needed for CGO 17 | RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \ 18 | g++ \ 19 | libc6-dev && \ 20 | sudo rm -rf /var/lib/apt/lists/* && \ 21 | # Check if we're facing the first minor release issue and adjust if needed 22 | if [[ ${GO_VER:(-2)} == ".0" ]]; then \ 23 | GO_VER=${GO_VER:0:-2}; \ 24 | fi && \ 25 | curl -sSL "https://golang.org/dl/go${GO_VER}.linux-amd64.tar.gz" | sudo tar -xz -C /usr/local/ && \ 26 | mkdir -p /home/circleci/go/bin 27 | 28 | # Install related tools 29 | ENV GOTESTSUM_V=1.8.2 30 | ENV GOCI_LINT_V=1.49.0 31 | RUN curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_V}/gotestsum_${GOTESTSUM_V}_linux_amd64.tar.gz" | \ 32 | sudo tar -xz -C /usr/local/bin gotestsum && \ 33 | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v${GOCI_LINT_V} 34 | 35 | ENV GOPATH /home/circleci/go 36 | ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH 37 | -------------------------------------------------------------------------------- /1.18/browsers/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.18.10-node 4 | 5 | LABEL maintainer="CircleCI Community & Partner Engineering Team " 6 | 7 | # Install Selenium 8 | ENV SELENIUM_VER=3.141.59 9 | RUN curl -sSL -o selenium-server-standalone-${SELENIUM_VER}.jar "https://selenium-release.storage.googleapis.com/${SELENIUM_VER%.*}/selenium-server-standalone-${SELENIUM_VER}.jar" && \ 10 | sudo cp selenium-server-standalone-${SELENIUM_VER}.jar /usr/local/bin/selenium.jar && \ 11 | rm selenium-server-standalone-${SELENIUM_VER}.jar 12 | 13 | RUN sudo apt-get update && \ 14 | sudo apt-get install --yes --no-install-recommends \ 15 | xvfb \ 16 | && \ 17 | 18 | # Install Java only if it's not already available 19 | # Java is installed for Selenium 20 | if ! command -v java > /dev/null; then \ 21 | echo "Java not found in parent image, installing..." && \ 22 | sudo apt-get install -y --no-install-recommends --no-upgrade openjdk-11-jre; \ 23 | fi && \ 24 | sudo rm -rf /var/lib/apt/lists/* 25 | 26 | # Below is setup to allow xvfb to start when the container starts up. 27 | # The label in particular allows this image to override what CircleCI does 28 | # when booting the image. 29 | LABEL com.circleci.preserve-entrypoint=true 30 | ENV DISPLAY=":99" 31 | #RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint && \ 32 | # chmod +x /tmp/entrypoint && \ 33 | # sudo mv /tmp/entrypoint /docker-entrypoint.sh 34 | RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' | sudo tee /docker-entrypoint.sh && \ 35 | sudo chmod +x /docker-entrypoint.sh 36 | 37 | # Install a single version of Firefox. This isn't intended to be a regularly 38 | # updated thing. Instead, if this version of Firefox isn't what the end user 39 | # wants they should install a different version via the Browser Tools Orb. 40 | # 41 | # Canonical made a major technology change in how Firefox is installed from 42 | # Ubuntu 21.10 and up. The general CI space doesn't seem to be ready for a snap 43 | # based Firefox right now so we are installing it from the Mozilla PPA. 44 | RUN echo 'Package: *' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 45 | echo 'Pin: release o=LP-PPA-mozillateam' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 46 | echo 'Pin-Priority: 1001' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 47 | sudo add-apt-repository --yes ppa:mozillateam/ppa && \ 48 | sudo apt-get install --no-install-recommends --yes firefox && \ 49 | sudo rm -rf /var/lib/apt/lists/* && \ 50 | firefox --version 51 | 52 | # Install a single version of Google Chrome Stable. This isn't intended to be a 53 | # regularly updated thing. Instead, if this version of Chrome isn't what the 54 | # end user wants they should install a different version via the Browser Tools 55 | # Orb. 56 | RUN wget -q -O - "https://dl.google.com/linux/linux_signing_key.pub" | sudo apt-key add - && \ 57 | echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list && \ 58 | sudo apt-get update && \ 59 | sudo apt-get install google-chrome-stable && \ 60 | sudo rm -rf /var/lib/apt/lists/* 61 | 62 | ENTRYPOINT ["/docker-entrypoint.sh"] 63 | CMD ["/bin/sh"] 64 | -------------------------------------------------------------------------------- /1.18/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.18.10 4 | 5 | LABEL maintainer="Community & Partner Engineering Team " 6 | 7 | # Dockerfile will pull the latest LTS release from cimg-node. 8 | RUN curl -sSL "https://raw.githubusercontent.com/CircleCI-Public/cimg-node/main/ALIASES" -o nodeAliases.txt && \ 9 | NODE_VERSION=$(grep "lts" ./nodeAliases.txt | cut -d "=" -f 2-) && \ 10 | curl -L -o node.tar.xz "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" && \ 11 | sudo tar -xJf node.tar.xz -C /usr/local --strip-components=1 && \ 12 | rm node.tar.xz nodeAliases.txt && \ 13 | sudo ln -s /usr/local/bin/node /usr/local/bin/nodejs 14 | 15 | ENV YARN_VERSION 1.22.18 16 | RUN curl -L -o yarn.tar.gz "https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz" && \ 17 | sudo tar -xzf yarn.tar.gz -C /opt/ && \ 18 | rm yarn.tar.gz && \ 19 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarn /usr/local/bin/yarn && \ 20 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarnpkg /usr/local/bin/yarnpkg 21 | -------------------------------------------------------------------------------- /1.19/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | # Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles. 4 | 5 | # By policy, the base image tag should be a quarterly tag unless there's a 6 | # specific reason to use a different one. This means January, April, July, or 7 | # October. 8 | FROM cimg/base:2023.07 9 | 10 | LABEL maintainer="Community & Partner Engineering Team " 11 | 12 | ENV GO_VER="1.19.13" 13 | 14 | # Install packages needed for CGO 15 | RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \ 16 | g++ \ 17 | libc6-dev && \ 18 | sudo rm -rf /var/lib/apt/lists/* && \ 19 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 20 | curl -sSL "https://go.dev/dl/go${GO_VER}.linux-${ARCH}.tar.gz" | sudo tar -xz -C /usr/local/ && \ 21 | mkdir -p /home/circleci/go/bin 22 | 23 | ENV GOPATH /home/circleci/go 24 | ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH 25 | 26 | # Install related tools 27 | ENV GOTESTSUM_V=1.10.1 28 | ENV GOCI_LINT_V=1.54.2 29 | ENV GOVULNCHECK_V=1.0.1 30 | 31 | RUN [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 32 | curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_V}/gotestsum_${GOTESTSUM_V}_linux_${ARCH}.tar.gz" | \ 33 | sudo tar -xz -C /usr/local/bin gotestsum && \ 34 | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v${GOCI_LINT_V} && \ 35 | go install "golang.org/x/vuln/cmd/govulncheck@v${GOVULNCHECK_V}" && go clean -cache -modcache && rm -rf "${GOPATH}/pkg" 36 | -------------------------------------------------------------------------------- /1.19/browsers/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.19.13-node 4 | 5 | LABEL maintainer="CircleCI Community & Partner Engineering Team " 6 | 7 | # Install Selenium 8 | ENV SELENIUM_VER=3.141.59 9 | RUN curl -sSL -o selenium-server-standalone-${SELENIUM_VER}.jar "https://selenium-release.storage.googleapis.com/${SELENIUM_VER%.*}/selenium-server-standalone-${SELENIUM_VER}.jar" && \ 10 | sudo cp selenium-server-standalone-${SELENIUM_VER}.jar /usr/local/bin/selenium.jar && \ 11 | rm selenium-server-standalone-${SELENIUM_VER}.jar 12 | 13 | RUN sudo apt-get update && \ 14 | sudo apt-get install --yes --no-install-recommends \ 15 | xvfb \ 16 | && \ 17 | 18 | # Install Java only if it's not already available 19 | # Java is installed for Selenium 20 | if ! command -v java > /dev/null; then \ 21 | echo "Java not found in parent image, installing..." && \ 22 | sudo apt-get install -y --no-install-recommends --no-upgrade openjdk-11-jre; \ 23 | fi && \ 24 | sudo rm -rf /var/lib/apt/lists/* 25 | 26 | # Below is setup to allow xvfb to start when the container starts up. 27 | # The label in particular allows this image to override what CircleCI does 28 | # when booting the image. 29 | LABEL com.circleci.preserve-entrypoint=true 30 | ENV DISPLAY=":99" 31 | #RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint && \ 32 | # chmod +x /tmp/entrypoint && \ 33 | # sudo mv /tmp/entrypoint /docker-entrypoint.sh 34 | RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' | sudo tee /docker-entrypoint.sh && \ 35 | sudo chmod +x /docker-entrypoint.sh 36 | 37 | # Install a single version of Firefox. This isn't intended to be a regularly 38 | # updated thing. Instead, if this version of Firefox isn't what the end user 39 | # wants they should install a different version via the Browser Tools Orb. 40 | # 41 | # Canonical made a major technology change in how Firefox is installed from 42 | # Ubuntu 21.10 and up. The general CI space doesn't seem to be ready for a snap 43 | # based Firefox right now so we are installing it from the Mozilla PPA. 44 | RUN echo 'Package: *' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 45 | echo 'Pin: release o=LP-PPA-mozillateam' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 46 | echo 'Pin-Priority: 1001' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 47 | sudo add-apt-repository --yes ppa:mozillateam/ppa && \ 48 | sudo apt-get install --no-install-recommends --yes firefox && \ 49 | sudo rm -rf /var/lib/apt/lists/* && \ 50 | firefox --version 51 | 52 | # Install a single version of Google Chrome Stable. This isn't intended to be a 53 | # regularly updated thing. Instead, if this version of Chrome isn't what the 54 | # end user wants they should install a different version via the Browser Tools 55 | # Orb. 56 | RUN wget -q -O - "https://dl.google.com/linux/linux_signing_key.pub" | sudo apt-key add - && \ 57 | echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list && \ 58 | sudo apt-get update && \ 59 | sudo apt-get install google-chrome-stable && \ 60 | sudo rm -rf /var/lib/apt/lists/* 61 | 62 | ENTRYPOINT ["/docker-entrypoint.sh"] 63 | CMD ["/bin/sh"] 64 | -------------------------------------------------------------------------------- /1.19/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.19.13 4 | 5 | LABEL maintainer="Community & Partner Engineering Team " 6 | 7 | # Dockerfile will pull the latest LTS release from cimg-node. 8 | RUN curl -sSL "https://raw.githubusercontent.com/CircleCI-Public/cimg-node/main/ALIASES" -o nodeAliases.txt && \ 9 | NODE_VERSION=$(grep "lts" ./nodeAliases.txt | cut -d "=" -f 2-) && \ 10 | [[ $(uname -m) == "x86_64" ]] && ARCH="x64" || ARCH="arm64" && \ 11 | curl -L -o node.tar.xz "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" && \ 12 | sudo tar -xJf node.tar.xz -C /usr/local --strip-components=1 && \ 13 | rm node.tar.xz nodeAliases.txt && \ 14 | sudo ln -s /usr/local/bin/node /usr/local/bin/nodejs 15 | 16 | ENV YARN_VERSION 1.22.19 17 | RUN curl -L -o yarn.tar.gz "https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz" && \ 18 | sudo tar -xzf yarn.tar.gz -C /opt/ && \ 19 | rm yarn.tar.gz && \ 20 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarn /usr/local/bin/yarn && \ 21 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarnpkg /usr/local/bin/yarnpkg 22 | -------------------------------------------------------------------------------- /1.20/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | # Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles. 4 | 5 | # By policy, the base image tag should be a quarterly tag unless there's a 6 | # specific reason to use a different one. This means January, April, July, or 7 | # October. 8 | FROM cimg/base:2023.07 9 | 10 | LABEL maintainer="CircleCI Execution Team " 11 | 12 | ENV GO_VER="1.20.14" 13 | 14 | # Install packages needed for CGO 15 | RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \ 16 | g++ \ 17 | libc6-dev && \ 18 | sudo rm -rf /var/lib/apt/lists/* && \ 19 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 20 | curl -sSL "https://go.dev/dl/go${GO_VER}.linux-${ARCH}.tar.gz" | sudo tar -xz -C /usr/local/ && \ 21 | mkdir -p /home/circleci/go/bin 22 | 23 | ENV GOPATH /home/circleci/go 24 | ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH 25 | 26 | # Install related tools 27 | ENV GOTESTSUM_V=1.11.0 28 | ENV GOCI_LINT_V=1.56.0 29 | ENV GOVULNCHECK_V=1.0.3 30 | 31 | RUN [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 32 | curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_V}/gotestsum_${GOTESTSUM_V}_linux_${ARCH}.tar.gz" | \ 33 | sudo tar -xz -C /usr/local/bin gotestsum && \ 34 | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v${GOCI_LINT_V} && \ 35 | go install "golang.org/x/vuln/cmd/govulncheck@v${GOVULNCHECK_V}" && go clean -cache -modcache && rm -rf "${GOPATH}/pkg" 36 | -------------------------------------------------------------------------------- /1.20/browsers/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.20.14-node 4 | 5 | LABEL maintainer="CircleCI Community & Partner Engineering Team " 6 | 7 | # Install Selenium 8 | ENV SELENIUM_VER=3.141.59 9 | RUN curl -sSL -o selenium-server-standalone-${SELENIUM_VER}.jar "https://selenium-release.storage.googleapis.com/${SELENIUM_VER%.*}/selenium-server-standalone-${SELENIUM_VER}.jar" && \ 10 | sudo cp selenium-server-standalone-${SELENIUM_VER}.jar /usr/local/bin/selenium.jar && \ 11 | rm selenium-server-standalone-${SELENIUM_VER}.jar 12 | 13 | RUN sudo apt-get update && \ 14 | sudo apt-get install --yes --no-install-recommends \ 15 | xvfb \ 16 | && \ 17 | 18 | # Install Java only if it's not already available 19 | # Java is installed for Selenium 20 | if ! command -v java > /dev/null; then \ 21 | echo "Java not found in parent image, installing..." && \ 22 | sudo apt-get install -y --no-install-recommends --no-upgrade openjdk-11-jre; \ 23 | fi && \ 24 | sudo rm -rf /var/lib/apt/lists/* 25 | 26 | # Below is setup to allow xvfb to start when the container starts up. 27 | # The label in particular allows this image to override what CircleCI does 28 | # when booting the image. 29 | LABEL com.circleci.preserve-entrypoint=true 30 | ENV DISPLAY=":99" 31 | #RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint && \ 32 | # chmod +x /tmp/entrypoint && \ 33 | # sudo mv /tmp/entrypoint /docker-entrypoint.sh 34 | RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' | sudo tee /docker-entrypoint.sh && \ 35 | sudo chmod +x /docker-entrypoint.sh 36 | 37 | # Install a single version of Firefox. This isn't intended to be a regularly 38 | # updated thing. Instead, if this version of Firefox isn't what the end user 39 | # wants they should install a different version via the Browser Tools Orb. 40 | # 41 | # Canonical made a major technology change in how Firefox is installed from 42 | # Ubuntu 21.10 and up. The general CI space doesn't seem to be ready for a snap 43 | # based Firefox right now so we are installing it from the Mozilla PPA. 44 | RUN echo 'Package: *' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 45 | echo 'Pin: release o=LP-PPA-mozillateam' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 46 | echo 'Pin-Priority: 1001' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 47 | sudo add-apt-repository --yes ppa:mozillateam/ppa && \ 48 | sudo apt-get install --no-install-recommends --yes firefox && \ 49 | sudo rm -rf /var/lib/apt/lists/* && \ 50 | firefox --version 51 | 52 | # Install a single version of Google Chrome Stable. This isn't intended to be a 53 | # regularly updated thing. Instead, if this version of Chrome isn't what the 54 | # end user wants they should install a different version via the Browser Tools 55 | # Orb. 56 | RUN wget -q -O - "https://dl.google.com/linux/linux_signing_key.pub" | sudo apt-key add - && \ 57 | echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list && \ 58 | sudo apt-get update && \ 59 | sudo apt-get install google-chrome-stable && \ 60 | sudo rm -rf /var/lib/apt/lists/* 61 | 62 | ENTRYPOINT ["/docker-entrypoint.sh"] 63 | CMD ["/bin/sh"] 64 | -------------------------------------------------------------------------------- /1.20/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.20.14 4 | 5 | LABEL maintainer="Community & Partner Engineering Team " 6 | 7 | # Dockerfile will pull the latest LTS release from cimg-node. 8 | RUN curl -sSL "https://raw.githubusercontent.com/CircleCI-Public/cimg-node/main/ALIASES" -o nodeAliases.txt && \ 9 | NODE_VERSION=$(grep "lts" ./nodeAliases.txt | cut -d "=" -f 2-) && \ 10 | [[ $(uname -m) == "x86_64" ]] && ARCH="x64" || ARCH="arm64" && \ 11 | curl -L -o node.tar.xz "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" && \ 12 | sudo tar -xJf node.tar.xz -C /usr/local --strip-components=1 && \ 13 | rm node.tar.xz nodeAliases.txt && \ 14 | sudo ln -s /usr/local/bin/node /usr/local/bin/nodejs 15 | 16 | ENV YARN_VERSION 1.22.19 17 | RUN curl -L -o yarn.tar.gz "https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz" && \ 18 | sudo tar -xzf yarn.tar.gz -C /opt/ && \ 19 | rm yarn.tar.gz && \ 20 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarn /usr/local/bin/yarn && \ 21 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarnpkg /usr/local/bin/yarnpkg 22 | -------------------------------------------------------------------------------- /1.21/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | # Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles. 4 | 5 | # By policy, the base image tag should be a quarterly tag unless there's a 6 | # specific reason to use a different one. This means January, April, July, or 7 | # October. 8 | FROM cimg/base:2024.07 9 | 10 | LABEL maintainer="CircleCI Execution Team " 11 | 12 | ENV GO_VER="1.21.13" 13 | 14 | # Install packages needed for CGO 15 | RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \ 16 | g++ \ 17 | libc6-dev && \ 18 | sudo rm -rf /var/lib/apt/lists/* && \ 19 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 20 | curl -sSL "https://go.dev/dl/go${GO_VER}.linux-${ARCH}.tar.gz" | sudo tar -xz -C /usr/local/ && \ 21 | mkdir -p /home/circleci/go/bin 22 | 23 | ENV GOPATH /home/circleci/go 24 | ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH 25 | 26 | # Install related tools 27 | # renovate: datasource=github-releases depName=gotestyourself/gotestsum 28 | ENV GOTESTSUM_VERSION=1.12.0 29 | # renovate: datasource=github-releases depName=golangci/golangci-lint 30 | ENV GOCI_LINT_VERSION=1.59.1 31 | # renovate: datasource=github-releases depName=golang/vuln 32 | ENV GOVULNCHECK_VERSION=1.1.3 33 | 34 | RUN [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 35 | curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_VERSION}/gotestsum_${GOTESTSUM_VERSION}_linux_${ARCH}.tar.gz" | \ 36 | sudo tar -xz -C /usr/local/bin gotestsum && \ 37 | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v${GOCI_LINT_VERSION} && \ 38 | go install "golang.org/x/vuln/cmd/govulncheck@v${GOVULNCHECK_VERSION}" && go clean -cache -modcache && rm -rf "${GOPATH}/pkg" 39 | -------------------------------------------------------------------------------- /1.21/browsers/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.21.13-node 4 | 5 | LABEL maintainer="CircleCI Community & Partner Engineering Team " 6 | 7 | # Install Selenium 8 | ENV SELENIUM_VER=3.141.59 9 | RUN curl -sSL -o selenium-server-standalone-${SELENIUM_VER}.jar "https://selenium-release.storage.googleapis.com/${SELENIUM_VER%.*}/selenium-server-standalone-${SELENIUM_VER}.jar" && \ 10 | sudo cp selenium-server-standalone-${SELENIUM_VER}.jar /usr/local/bin/selenium.jar && \ 11 | rm selenium-server-standalone-${SELENIUM_VER}.jar 12 | 13 | RUN sudo apt-get update && \ 14 | sudo apt-get install --yes --no-install-recommends \ 15 | xvfb \ 16 | && \ 17 | 18 | # Install Java only if it's not already available 19 | # Java is installed for Selenium 20 | if ! command -v java > /dev/null; then \ 21 | echo "Java not found in parent image, installing..." && \ 22 | sudo apt-get install -y --no-install-recommends --no-upgrade openjdk-11-jre; \ 23 | fi && \ 24 | sudo rm -rf /var/lib/apt/lists/* 25 | 26 | # Below is setup to allow xvfb to start when the container starts up. 27 | # The label in particular allows this image to override what CircleCI does 28 | # when booting the image. 29 | LABEL com.circleci.preserve-entrypoint=true 30 | ENV DISPLAY=":99" 31 | #RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint && \ 32 | # chmod +x /tmp/entrypoint && \ 33 | # sudo mv /tmp/entrypoint /docker-entrypoint.sh 34 | RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' | sudo tee /docker-entrypoint.sh && \ 35 | sudo chmod +x /docker-entrypoint.sh 36 | 37 | # Install a single version of Firefox. This isn't intended to be a regularly 38 | # updated thing. Instead, if this version of Firefox isn't what the end user 39 | # wants they should install a different version via the Browser Tools Orb. 40 | # 41 | # Canonical made a major technology change in how Firefox is installed from 42 | # Ubuntu 21.10 and up. The general CI space doesn't seem to be ready for a snap 43 | # based Firefox right now so we are installing it from the Mozilla PPA. 44 | RUN echo 'Package: *' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 45 | echo 'Pin: release o=LP-PPA-mozillateam' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 46 | echo 'Pin-Priority: 1001' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 47 | sudo add-apt-repository --yes ppa:mozillateam/ppa && \ 48 | sudo apt-get install --no-install-recommends --yes firefox && \ 49 | sudo rm -rf /var/lib/apt/lists/* && \ 50 | firefox --version 51 | 52 | # Install a single version of Google Chrome Stable. This isn't intended to be a 53 | # regularly updated thing. Instead, if this version of Chrome isn't what the 54 | # end user wants they should install a different version via the Browser Tools 55 | # Orb. 56 | RUN wget -q -O - "https://dl.google.com/linux/linux_signing_key.pub" | sudo apt-key add - && \ 57 | echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list && \ 58 | sudo apt-get update && \ 59 | sudo apt-get install google-chrome-stable && \ 60 | sudo rm -rf /var/lib/apt/lists/* 61 | 62 | ENTRYPOINT ["/docker-entrypoint.sh"] 63 | CMD ["/bin/sh"] 64 | -------------------------------------------------------------------------------- /1.21/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.21.13 4 | 5 | LABEL maintainer="Community & Partner Engineering Team " 6 | 7 | # Dockerfile will pull the latest LTS release from cimg-node. 8 | RUN curl -sSL "https://raw.githubusercontent.com/CircleCI-Public/cimg-node/main/ALIASES" -o nodeAliases.txt && \ 9 | NODE_VERSION=$(grep "lts" ./nodeAliases.txt | cut -d "=" -f 2-) && \ 10 | [[ $(uname -m) == "x86_64" ]] && ARCH="x64" || ARCH="arm64" && \ 11 | curl -L -o node.tar.xz "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" && \ 12 | sudo tar -xJf node.tar.xz -C /usr/local --strip-components=1 && \ 13 | rm node.tar.xz nodeAliases.txt && \ 14 | sudo ln -s /usr/local/bin/node /usr/local/bin/nodejs 15 | 16 | ENV YARN_VERSION 1.22.19 17 | RUN curl -L -o yarn.tar.gz "https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz" && \ 18 | sudo tar -xzf yarn.tar.gz -C /opt/ && \ 19 | rm yarn.tar.gz && \ 20 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarn /usr/local/bin/yarn && \ 21 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarnpkg /usr/local/bin/yarnpkg 22 | -------------------------------------------------------------------------------- /1.22/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | # Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles. 4 | 5 | # By policy, the base image tag should be a quarterly tag unless there's a 6 | # specific reason to use a different one. This means January, April, July, or 7 | # October. 8 | FROM cimg/base:2025.02 9 | 10 | LABEL maintainer="CircleCI Execution Team " 11 | 12 | ENV GO_VER="1.22.12" 13 | 14 | # Install packages needed for CGO 15 | RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \ 16 | g++ \ 17 | libc6-dev && \ 18 | sudo rm -rf /var/lib/apt/lists/* && \ 19 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 20 | curl -sSL "https://go.dev/dl/go${GO_VER}.linux-${ARCH}.tar.gz" | sudo tar -xz -C /usr/local/ && \ 21 | mkdir -p /home/circleci/go/bin 22 | 23 | ENV GOPATH="/home/circleci/go" 24 | ENV PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" 25 | 26 | # Install related tools 27 | # renovate: datasource=github-releases depName=gotestyourself/gotestsum 28 | ENV GOTESTSUM_VERSION=1.12.0 29 | # renovate: datasource=github-releases depName=golangci/golangci-lint 30 | ENV GOCI_LINT_VERSION=1.60.1 31 | # renovate: datasource=github-releases depName=golang/vuln 32 | ENV GOVULNCHECK_VERSION=1.1.4 33 | # renovate: datasource=github-releases depName=go-task/task 34 | ENV TASK_VERSION=3.40.1 35 | 36 | RUN [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 37 | curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_VERSION}/gotestsum_${GOTESTSUM_VERSION}_linux_${ARCH}.tar.gz" | \ 38 | sudo tar -xz -C /usr/local/bin gotestsum && \ 39 | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v${GOCI_LINT_VERSION} && \ 40 | go install "golang.org/x/vuln/cmd/govulncheck@v${GOVULNCHECK_VERSION}" && go clean -cache -modcache && rm -rf "${GOPATH}/pkg" && \ 41 | curl -sSfL "https://github.com/go-task/task/releases/download/v${TASK_VERSION}/task_linux_${ARCH}.tar.gz" | \ 42 | sudo tar -xz -C /usr/local/bin task 43 | -------------------------------------------------------------------------------- /1.22/browsers/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.22.12-node 4 | 5 | LABEL maintainer="CircleCI Community & Partner Engineering Team " 6 | 7 | # Install Selenium 8 | ENV SELENIUM_VER=3.141.59 9 | RUN curl -sSL -o selenium-server-standalone-${SELENIUM_VER}.jar "https://selenium-release.storage.googleapis.com/${SELENIUM_VER%.*}/selenium-server-standalone-${SELENIUM_VER}.jar" && \ 10 | sudo cp selenium-server-standalone-${SELENIUM_VER}.jar /usr/local/bin/selenium.jar && \ 11 | rm selenium-server-standalone-${SELENIUM_VER}.jar 12 | 13 | RUN sudo apt-get update && \ 14 | sudo apt-get install --yes --no-install-recommends \ 15 | xvfb \ 16 | && \ 17 | # Install Java only if it's not already available 18 | # Java is installed for Selenium 19 | if ! command -v java > /dev/null; then \ 20 | echo "Java not found in parent image, installing..." && \ 21 | sudo apt-get install -y --no-install-recommends --no-upgrade openjdk-11-jre; \ 22 | fi && \ 23 | sudo rm -rf /var/lib/apt/lists/* 24 | 25 | # Below is setup to allow xvfb to start when the container starts up. 26 | # The label in particular allows this image to override what CircleCI does 27 | # when booting the image. 28 | LABEL com.circleci.preserve-entrypoint=true 29 | ENV DISPLAY=":99" 30 | #RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint && \ 31 | # chmod +x /tmp/entrypoint && \ 32 | # sudo mv /tmp/entrypoint /docker-entrypoint.sh 33 | RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' | sudo tee /docker-entrypoint.sh && \ 34 | sudo chmod +x /docker-entrypoint.sh 35 | 36 | # Install a single version of Firefox. This isn't intended to be a regularly 37 | # updated thing. Instead, if this version of Firefox isn't what the end user 38 | # wants they should install a different version via the Browser Tools Orb. 39 | # 40 | # Canonical made a major technology change in how Firefox is installed from 41 | # Ubuntu 21.10 and up. The general CI space doesn't seem to be ready for a snap 42 | # based Firefox right now so we are installing it from the Mozilla PPA. 43 | RUN echo 'Package: *' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 44 | echo 'Pin: release o=LP-PPA-mozillateam' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 45 | echo 'Pin-Priority: 1001' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 46 | sudo add-apt-repository --yes ppa:mozillateam/ppa && \ 47 | sudo apt-get install --no-install-recommends --yes firefox && \ 48 | sudo rm -rf /var/lib/apt/lists/* && \ 49 | firefox --version 50 | 51 | # Install a single version of Google Chrome Stable. This isn't intended to be a 52 | # regularly updated thing. Instead, if this version of Chrome isn't what the 53 | # end user wants they should install a different version via the Browser Tools 54 | # Orb. 55 | RUN wget -q -O - "https://dl.google.com/linux/linux_signing_key.pub" | sudo apt-key add - && \ 56 | echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list && \ 57 | sudo apt-get update && \ 58 | sudo apt-get install google-chrome-stable && \ 59 | sudo rm -rf /var/lib/apt/lists/* 60 | 61 | ENTRYPOINT ["/docker-entrypoint.sh"] 62 | CMD ["/bin/sh"] 63 | -------------------------------------------------------------------------------- /1.22/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.22.12 4 | 5 | LABEL maintainer="Community & Partner Engineering Team " 6 | 7 | # Dockerfile will pull the latest LTS release from cimg-node. 8 | RUN curl -sSL "https://raw.githubusercontent.com/CircleCI-Public/cimg-node/main/ALIASES" -o nodeAliases.txt && \ 9 | NODE_VERSION=$(grep "lts" ./nodeAliases.txt | cut -d "=" -f 2-) && \ 10 | [[ $(uname -m) == "x86_64" ]] && ARCH="x64" || ARCH="arm64" && \ 11 | curl -L -o node.tar.xz "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" && \ 12 | sudo tar -xJf node.tar.xz -C /usr/local --strip-components=1 && \ 13 | rm node.tar.xz nodeAliases.txt && \ 14 | sudo ln -s /usr/local/bin/node /usr/local/bin/nodejs 15 | 16 | ENV YARN_VERSION="1.22.19" 17 | RUN curl -L -o yarn.tar.gz "https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz" && \ 18 | sudo tar -xzf yarn.tar.gz -C /opt/ && \ 19 | rm yarn.tar.gz && \ 20 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarn /usr/local/bin/yarn && \ 21 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarnpkg /usr/local/bin/yarnpkg 22 | -------------------------------------------------------------------------------- /1.23/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | # Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles. 4 | 5 | # By policy, the base image tag should be a quarterly tag unless there's a 6 | # specific reason to use a different one. This means January, April, July, or 7 | # October. 8 | FROM cimg/base:2025.02 9 | 10 | LABEL maintainer="CircleCI Execution Team " 11 | 12 | ENV GO_VER="1.23.10" 13 | 14 | # Install packages needed for CGO 15 | RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \ 16 | g++ \ 17 | libc6-dev && \ 18 | sudo rm -rf /var/lib/apt/lists/* && \ 19 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 20 | curl -sSL "https://go.dev/dl/go${GO_VER}.linux-${ARCH}.tar.gz" | sudo tar -xz -C /usr/local/ && \ 21 | mkdir -p /home/circleci/go/bin 22 | 23 | ENV GOPATH="/home/circleci/go" 24 | ENV PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" 25 | 26 | # Install related tools 27 | # renovate: datasource=github-releases depName=gotestyourself/gotestsum 28 | ENV GOTESTSUM_VERSION=1.12.0 29 | # renovate: datasource=github-releases depName=golangci/golangci-lint 30 | ENV GOCI_LINT_VERSION=1.64.5 31 | # renovate: datasource=github-releases depName=golang/vuln 32 | ENV GOVULNCHECK_VERSION=1.1.4 33 | # renovate: datasource=github-releases depName=go-task/task 34 | ENV TASK_VERSION=3.40.1 35 | 36 | RUN [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 37 | curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_VERSION}/gotestsum_${GOTESTSUM_VERSION}_linux_${ARCH}.tar.gz" | \ 38 | sudo tar -xz -C /usr/local/bin gotestsum && \ 39 | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v${GOCI_LINT_VERSION} && \ 40 | go install "golang.org/x/vuln/cmd/govulncheck@v${GOVULNCHECK_VERSION}" && go clean -cache -modcache && rm -rf "${GOPATH}/pkg" && \ 41 | curl -sSfL "https://github.com/go-task/task/releases/download/v${TASK_VERSION}/task_linux_${ARCH}.tar.gz" | \ 42 | sudo tar -xz -C /usr/local/bin task 43 | -------------------------------------------------------------------------------- /1.23/browsers/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.23.10-node 4 | 5 | LABEL maintainer="CircleCI Community & Partner Engineering Team " 6 | 7 | # Install Selenium 8 | ENV SELENIUM_VER=3.141.59 9 | RUN curl -sSL -o selenium-server-standalone-${SELENIUM_VER}.jar "https://selenium-release.storage.googleapis.com/${SELENIUM_VER%.*}/selenium-server-standalone-${SELENIUM_VER}.jar" && \ 10 | sudo cp selenium-server-standalone-${SELENIUM_VER}.jar /usr/local/bin/selenium.jar && \ 11 | rm selenium-server-standalone-${SELENIUM_VER}.jar 12 | 13 | RUN sudo apt-get update && \ 14 | sudo apt-get install --yes --no-install-recommends \ 15 | xvfb \ 16 | && \ 17 | # Install Java only if it's not already available 18 | # Java is installed for Selenium 19 | if ! command -v java > /dev/null; then \ 20 | echo "Java not found in parent image, installing..." && \ 21 | sudo apt-get install -y --no-install-recommends --no-upgrade openjdk-11-jre; \ 22 | fi && \ 23 | sudo rm -rf /var/lib/apt/lists/* 24 | 25 | # Below is setup to allow xvfb to start when the container starts up. 26 | # The label in particular allows this image to override what CircleCI does 27 | # when booting the image. 28 | LABEL com.circleci.preserve-entrypoint=true 29 | ENV DISPLAY=":99" 30 | #RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint && \ 31 | # chmod +x /tmp/entrypoint && \ 32 | # sudo mv /tmp/entrypoint /docker-entrypoint.sh 33 | RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' | sudo tee /docker-entrypoint.sh && \ 34 | sudo chmod +x /docker-entrypoint.sh 35 | 36 | # Install a single version of Firefox. This isn't intended to be a regularly 37 | # updated thing. Instead, if this version of Firefox isn't what the end user 38 | # wants they should install a different version via the Browser Tools Orb. 39 | # 40 | # Canonical made a major technology change in how Firefox is installed from 41 | # Ubuntu 21.10 and up. The general CI space doesn't seem to be ready for a snap 42 | # based Firefox right now so we are installing it from the Mozilla PPA. 43 | RUN echo 'Package: *' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 44 | echo 'Pin: release o=LP-PPA-mozillateam' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 45 | echo 'Pin-Priority: 1001' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 46 | sudo add-apt-repository --yes ppa:mozillateam/ppa && \ 47 | sudo apt-get install --no-install-recommends --yes firefox && \ 48 | sudo rm -rf /var/lib/apt/lists/* && \ 49 | firefox --version 50 | 51 | # Install a single version of Google Chrome Stable. This isn't intended to be a 52 | # regularly updated thing. Instead, if this version of Chrome isn't what the 53 | # end user wants they should install a different version via the Browser Tools 54 | # Orb. 55 | RUN wget -q -O - "https://dl.google.com/linux/linux_signing_key.pub" | sudo apt-key add - && \ 56 | echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list && \ 57 | sudo apt-get update && \ 58 | sudo apt-get install google-chrome-stable && \ 59 | sudo rm -rf /var/lib/apt/lists/* 60 | 61 | ENTRYPOINT ["/docker-entrypoint.sh"] 62 | CMD ["/bin/sh"] 63 | -------------------------------------------------------------------------------- /1.23/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.23.10 4 | 5 | LABEL maintainer="Community & Partner Engineering Team " 6 | 7 | # Dockerfile will pull the latest LTS release from cimg-node. 8 | RUN curl -sSL "https://raw.githubusercontent.com/CircleCI-Public/cimg-node/main/ALIASES" -o nodeAliases.txt && \ 9 | NODE_VERSION=$(grep "lts" ./nodeAliases.txt | cut -d "=" -f 2-) && \ 10 | [[ $(uname -m) == "x86_64" ]] && ARCH="x64" || ARCH="arm64" && \ 11 | curl -L -o node.tar.xz "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" && \ 12 | sudo tar -xJf node.tar.xz -C /usr/local --strip-components=1 && \ 13 | rm node.tar.xz nodeAliases.txt && \ 14 | sudo ln -s /usr/local/bin/node /usr/local/bin/nodejs 15 | 16 | ENV YARN_VERSION="1.22.19" 17 | RUN curl -L -o yarn.tar.gz "https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz" && \ 18 | sudo tar -xzf yarn.tar.gz -C /opt/ && \ 19 | rm yarn.tar.gz && \ 20 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarn /usr/local/bin/yarn && \ 21 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarnpkg /usr/local/bin/yarnpkg 22 | -------------------------------------------------------------------------------- /1.24/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | # Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles. 4 | 5 | # By policy, the base image tag should be a quarterly tag unless there's a 6 | # specific reason to use a different one. This means January, April, July, or 7 | # October. 8 | FROM cimg/base:2025.02 9 | 10 | LABEL maintainer="CircleCI Execution Team " 11 | 12 | ENV GO_VER="1.24.4" 13 | 14 | # Install packages needed for CGO 15 | RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \ 16 | g++ \ 17 | libc6-dev && \ 18 | sudo rm -rf /var/lib/apt/lists/* && \ 19 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 20 | curl -sSL "https://go.dev/dl/go${GO_VER}.linux-${ARCH}.tar.gz" | sudo tar -xz -C /usr/local/ && \ 21 | mkdir -p /home/circleci/go/bin 22 | 23 | ENV GOPATH="/home/circleci/go" 24 | ENV PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" 25 | 26 | # Install related tools 27 | # renovate: datasource=github-releases depName=gotestyourself/gotestsum 28 | ENV GOTESTSUM_VERSION=1.12.0 29 | # renovate: datasource=github-releases depName=golangci/golangci-lint 30 | ENV GOCI_LINT_VERSION=1.64.5 31 | # renovate: datasource=github-releases depName=golang/vuln 32 | ENV GOVULNCHECK_VERSION=1.1.4 33 | # renovate: datasource=github-releases depName=go-task/task 34 | ENV TASK_VERSION=3.40.1 35 | 36 | RUN [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 37 | curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_VERSION}/gotestsum_${GOTESTSUM_VERSION}_linux_${ARCH}.tar.gz" | \ 38 | sudo tar -xz -C /usr/local/bin gotestsum && \ 39 | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v${GOCI_LINT_VERSION} && \ 40 | go install "golang.org/x/vuln/cmd/govulncheck@v${GOVULNCHECK_VERSION}" && go clean -cache -modcache && rm -rf "${GOPATH}/pkg" && \ 41 | curl -sSfL "https://github.com/go-task/task/releases/download/v${TASK_VERSION}/task_linux_${ARCH}.tar.gz" | \ 42 | sudo tar -xz -C /usr/local/bin task 43 | -------------------------------------------------------------------------------- /1.24/browsers/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.24.4-node 4 | 5 | LABEL maintainer="CircleCI Community & Partner Engineering Team " 6 | 7 | # Install Selenium 8 | ENV SELENIUM_VER=3.141.59 9 | RUN curl -sSL -o selenium-server-standalone-${SELENIUM_VER}.jar "https://selenium-release.storage.googleapis.com/${SELENIUM_VER%.*}/selenium-server-standalone-${SELENIUM_VER}.jar" && \ 10 | sudo cp selenium-server-standalone-${SELENIUM_VER}.jar /usr/local/bin/selenium.jar && \ 11 | rm selenium-server-standalone-${SELENIUM_VER}.jar 12 | 13 | RUN sudo apt-get update && \ 14 | sudo apt-get install --yes --no-install-recommends \ 15 | xvfb \ 16 | && \ 17 | # Install Java only if it's not already available 18 | # Java is installed for Selenium 19 | if ! command -v java > /dev/null; then \ 20 | echo "Java not found in parent image, installing..." && \ 21 | sudo apt-get install -y --no-install-recommends --no-upgrade openjdk-11-jre; \ 22 | fi && \ 23 | sudo rm -rf /var/lib/apt/lists/* 24 | 25 | # Below is setup to allow xvfb to start when the container starts up. 26 | # The label in particular allows this image to override what CircleCI does 27 | # when booting the image. 28 | LABEL com.circleci.preserve-entrypoint=true 29 | ENV DISPLAY=":99" 30 | #RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' > /tmp/entrypoint && \ 31 | # chmod +x /tmp/entrypoint && \ 32 | # sudo mv /tmp/entrypoint /docker-entrypoint.sh 33 | RUN printf '#!/bin/sh\nXvfb :99 -screen 0 1280x1024x24 &\nexec "$@"\n' | sudo tee /docker-entrypoint.sh && \ 34 | sudo chmod +x /docker-entrypoint.sh 35 | 36 | # Install a single version of Firefox. This isn't intended to be a regularly 37 | # updated thing. Instead, if this version of Firefox isn't what the end user 38 | # wants they should install a different version via the Browser Tools Orb. 39 | # 40 | # Canonical made a major technology change in how Firefox is installed from 41 | # Ubuntu 21.10 and up. The general CI space doesn't seem to be ready for a snap 42 | # based Firefox right now so we are installing it from the Mozilla PPA. 43 | RUN echo 'Package: *' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 44 | echo 'Pin: release o=LP-PPA-mozillateam' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 45 | echo 'Pin-Priority: 1001' | sudo tee -a /etc/apt/preferences.d/firefox.pref && \ 46 | sudo add-apt-repository --yes ppa:mozillateam/ppa && \ 47 | sudo apt-get install --no-install-recommends --yes firefox && \ 48 | sudo rm -rf /var/lib/apt/lists/* && \ 49 | firefox --version 50 | 51 | # Install a single version of Google Chrome Stable. This isn't intended to be a 52 | # regularly updated thing. Instead, if this version of Chrome isn't what the 53 | # end user wants they should install a different version via the Browser Tools 54 | # Orb. 55 | RUN wget -q -O - "https://dl.google.com/linux/linux_signing_key.pub" | sudo apt-key add - && \ 56 | echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list && \ 57 | sudo apt-get update && \ 58 | sudo apt-get install google-chrome-stable && \ 59 | sudo rm -rf /var/lib/apt/lists/* 60 | 61 | ENTRYPOINT ["/docker-entrypoint.sh"] 62 | CMD ["/bin/sh"] 63 | -------------------------------------------------------------------------------- /1.24/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/go:1.24.4 4 | 5 | LABEL maintainer="Community & Partner Engineering Team " 6 | 7 | # Dockerfile will pull the latest LTS release from cimg-node. 8 | RUN curl -sSL "https://raw.githubusercontent.com/CircleCI-Public/cimg-node/main/ALIASES" -o nodeAliases.txt && \ 9 | NODE_VERSION=$(grep "lts" ./nodeAliases.txt | cut -d "=" -f 2-) && \ 10 | [[ $(uname -m) == "x86_64" ]] && ARCH="x64" || ARCH="arm64" && \ 11 | curl -L -o node.tar.xz "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCH}.tar.xz" && \ 12 | sudo tar -xJf node.tar.xz -C /usr/local --strip-components=1 && \ 13 | rm node.tar.xz nodeAliases.txt && \ 14 | sudo ln -s /usr/local/bin/node /usr/local/bin/nodejs 15 | 16 | ENV YARN_VERSION="1.22.19" 17 | RUN curl -L -o yarn.tar.gz "https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz" && \ 18 | sudo tar -xzf yarn.tar.gz -C /opt/ && \ 19 | rm yarn.tar.gz && \ 20 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarn /usr/local/bin/yarn && \ 21 | sudo ln -s /opt/yarn-v${YARN_VERSION}/bin/yarnpkg /usr/local/bin/yarnpkg 22 | -------------------------------------------------------------------------------- /Dockerfile.template: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | # Do not edit individual Dockerfiles manually. Instead, please make changes to the Dockerfile.template, which will be used by the build script to generate Dockerfiles. 4 | 5 | # By policy, the base image tag should be a quarterly tag unless there's a 6 | # specific reason to use a different one. This means January, April, July, or 7 | # October. 8 | FROM cimg/base:2025.02 9 | 10 | LABEL maintainer="CircleCI Execution Team " 11 | 12 | ENV GO_VER="%%VERSION_FULL%%" 13 | 14 | # Install packages needed for CGO 15 | RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \ 16 | g++ \ 17 | libc6-dev && \ 18 | sudo rm -rf /var/lib/apt/lists/* && \ 19 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 20 | curl -sSL "https://go.dev/dl/go${GO_VER}.linux-${ARCH}.tar.gz" | sudo tar -xz -C /usr/local/ && \ 21 | mkdir -p /home/circleci/go/bin 22 | 23 | ENV GOPATH="/home/circleci/go" 24 | ENV PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" 25 | 26 | # Install related tools 27 | # renovate: datasource=github-releases depName=gotestyourself/gotestsum 28 | ENV GOTESTSUM_VERSION=1.12.0 29 | # renovate: datasource=github-releases depName=golangci/golangci-lint 30 | ENV GOCI_LINT_VERSION=1.64.5 31 | # renovate: datasource=github-releases depName=golang/vuln 32 | ENV GOVULNCHECK_VERSION=1.1.4 33 | # renovate: datasource=github-releases depName=go-task/task 34 | ENV TASK_VERSION=3.40.1 35 | 36 | RUN [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 37 | curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_VERSION}/gotestsum_${GOTESTSUM_VERSION}_linux_${ARCH}.tar.gz" | \ 38 | sudo tar -xz -C /usr/local/bin gotestsum && \ 39 | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sudo sh -s -- -b /usr/local/bin v${GOCI_LINT_VERSION} && \ 40 | go install "golang.org/x/vuln/cmd/govulncheck@v${GOVULNCHECK_VERSION}" && go clean -cache -modcache && rm -rf "${GOPATH}/pkg" && \ 41 | curl -sSfL "https://github.com/go-task/task/releases/download/v${TASK_VERSION}/task_linux_${ARCH}.tar.gz" | \ 42 | sudo tar -xz -C /usr/local/bin task 43 | -------------------------------------------------------------------------------- /GEN-CHECK: -------------------------------------------------------------------------------- 1 | GEN_CHECK=(1.24.4 1.23.10) 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Circle Internet Services, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |

3 | CircleCI Logo 4 | Docker Logo 5 | Go Logo 6 |

7 |

CircleCI Convenience Images => Go

8 |

A Continuous Integration focused Go Docker image built to run on CircleCI

9 |
10 | 11 | [![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) 12 | 13 | **_This image is designed to supercede the legacy CircleCI Go image, `circleci/golang`._** 14 | 15 | `cimg/go` is a Docker image created by CircleCI with continuous integration builds in mind. 16 | Each 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. 17 | 18 | ## Support Policy 19 | 20 | The 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. 21 | 22 | ## Table of Contents 23 | 24 | - [Getting Started](#getting-started) 25 | - [How This Image Works](#how-this-image-works) 26 | - [Changes From Legacy Image](#changes-from-legacy-image) 27 | - [Development](#development) 28 | - [Contributing](#contributing) 29 | - [Additional Resources](#additional-resources) 30 | - [License](#license) 31 | 32 | ## Getting Started 33 | 34 | This image can be used with the CircleCI `docker` executor. 35 | For example: 36 | 37 | ```yaml 38 | jobs: 39 | build: 40 | docker: 41 | - image: cimg/go:1.17 42 | steps: 43 | - checkout 44 | - run: go version 45 | ``` 46 | 47 | In the above example, the CircleCI Go Docker image is used for the primary container. 48 | More specifically, the tag `1.17` is used meaning the version of Go will be Go v1.17. 49 | You can now use Go within the steps for this job. 50 | 51 | ## How This Image Works 52 | 53 | This image contains the Go programming language and its complete toolchain. 54 | This includes support for Go modules, the official Go Proxy Server, etc. 55 | 56 | ### Changes From Legacy Image 57 | 58 | If you're coming from the legacy version of this image, `circleci/golang`, here's any changes that you might want to be aware of: 59 | 60 | - `GOPATH` - this envar has changed from `/go` to `$HOME/go`. 61 | The latter will expand to the full path of `/home/circleci/go`. 62 | On first run, this change may affect caching and some other commands if you don’t correct the page in your config. 63 | 64 | ### Variants 65 | 66 | Variant images typically contain the same base software, but with a few additional modifications. 67 | 68 | #### Node.js 69 | 70 | The Node.js variant is the same Go image but with Node.js also installed. 71 | The Node.js variant will be used by appending `-node` to the end of an existing `cimg/go` tag. 72 | 73 | ```yaml 74 | jobs: 75 | build: 76 | docker: 77 | - image: cimg/go:1.17-node 78 | steps: 79 | - checkout 80 | - run: go version 81 | - run: node --version 82 | ``` 83 | 84 | #### Browsers 85 | 86 | The browsers variant is the same Go image but with Node.js, Java, Selenium, and browser dependencies pre-installed via apt. 87 | The browsers variant can be used by appending `-browser` to the end of an existing `cimg/go` tag. 88 | The browsers variant is designed to work in conjunction with the [CircleCI Browser Tools orb](https://circleci.com/developer/orbs/orb/circleci/browser-tools). 89 | You 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. 90 | 91 | ```yaml 92 | orbs: 93 | browser-tools: circleci/browser-tools@1.1 94 | jobs: 95 | build: 96 | docker: 97 | - image: cimg/go:1.17-browsers 98 | steps: 99 | - browser-tools/install-browser-tools 100 | - checkout 101 | - run: | 102 | go version 103 | node --version 104 | java --version 105 | google-chrome --version 106 | ``` 107 | 108 | ### Tagging Scheme 109 | 110 | This image has the following tagging scheme: 111 | 112 | ``` 113 | cimg/go:[-variant] 114 | ``` 115 | 116 | `` - The version of Go to use. 117 | This can be a full SemVer point release (such as `1.12.7`) or just the minor release (such as `1.12.0`). 118 | If you use the minor release tag, it will automatically point to future patch updates as they are released by the Go Team. 119 | For 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. 120 | 121 | `[-variant]` - Variant tags, if available, can optionally be used. 122 | Once the Node.js variant is available, it could be used like this: `cimg/go:1.17-node`. 123 | 124 | ## Development 125 | 126 | Images can be built and run locally with this repository. 127 | This has the following requirements: 128 | 129 | - local machine of Linux (Ubuntu tested) or macOS 130 | - modern version of Bash (v4+) 131 | - modern version of Docker Engine (v19.03+) 132 | 133 | ### Cloning For Community Users (no write access to this repository) 134 | 135 | Fork this repository on GitHub. 136 | When 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. 137 | It would look something like this: 138 | 139 | ```bash 140 | git clone --recurse-submodules 141 | ``` 142 | 143 | If you missed this step and already cloned, you can just run `git submodule update --init` to populate the submodule. 144 | Then you can optionally add this repo as an upstream to your own: 145 | 146 | ```bash 147 | git remote add upstream https://github.com/CircleCI-Public/cimg-go.git 148 | ``` 149 | 150 | ### Cloning For Maintainers ( you have write access to this repository) 151 | 152 | Clone the project with the following command so that you populate the submodule: 153 | 154 | ```bash 155 | git clone --recurse-submodules git@github.com:CircleCI-Public/cimg-go.git 156 | ``` 157 | 158 | ### Generating Dockerfiles 159 | 160 | Dockerfiles can be generated for a specific Go version using the `gen-dockerfiles.sh` script. 161 | For example, to generate the Dockerfile for Go v1.18, you would run the following from the root of the repo: 162 | 163 | ```bash 164 | ./shared/gen-dockerfiles.sh 1.18.0 165 | ``` 166 | 167 | The generated Dockerfile will be located at `./1.18/Dockefile`. 168 | To build this image locally and try it out, you can run the following: 169 | 170 | ```bash 171 | cd 1.18 172 | docker build -t test/go:1.18.0 . 173 | docker run -it test/go:1.18.0 bash 174 | ``` 175 | 176 | ### Building the Dockerfiles 177 | 178 | To build the Docker images locally as this repository does, you'll want to run the `build-images.sh` script: 179 | 180 | ```bash 181 | ./build-images.sh 182 | ``` 183 | 184 | This would need to be run after generating the Dockerfiles first. 185 | When releasing proper images for CircleCI, this script is run from a CircleCI pipeline and not locally. 186 | 187 | ### Publishing Official Images (for Maintainers only) 188 | 189 | The individual scripts (above) can be used to create the correct files for an image, and then added to a new git branch, committed, etc. 190 | A release script is included to make this process easier. 191 | To 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: 192 | 193 | ```bash 194 | ./shared/release.sh 9.99 195 | ``` 196 | 197 | This will automatically create a new Git branch, generate the Dockerfile(s), stage the changes, commit them, and push them to GitHub. 198 | The commit message will end with the string `[release]`. 199 | This string is used by CircleCI to know when to push images to Docker Hub. 200 | All that would need to be done after that is: 201 | 202 | - wait for build to pass on CircleCI 203 | - review the PR 204 | - merge the PR 205 | 206 | The main branch build will then publish a release. 207 | 208 | ### Incorporating Changes 209 | 210 | How changes are incorporated into this image depends on where they come from. 211 | 212 | **build scripts** - Changes within the `./shared` submodule happen in its [own repository](https://github.com/CircleCI-Public/cimg-shared). 213 | For those changes to affect this image, the submodule needs to be updated. 214 | Typically like this: 215 | 216 | ```bash 217 | cd shared 218 | git pull 219 | cd .. 220 | git add shared 221 | git commit -m "Updating submodule for foo." 222 | ``` 223 | 224 | **parent image** - By design, when changes happen to a parent image, they don't appear in existing Go images. 225 | This is to aid in "determinism" and prevent breaking customer builds. 226 | New Go images will automatically pick up the changes. 227 | 228 | If 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. 229 | This will create a new Dockerfile and once published, a new image. 230 | 231 | **Go specific changes** - Editing the `Dockerfile.template` file in this repo will modify the Go image specifically. 232 | Don't forget that to see any of these changes locally, the `gen-dockerfiles.sh` script will need to be run again (see above). 233 | 234 | ## Contributing 235 | 236 | We encourage [issues](https://github.com/CircleCI-Public/cimg-go/issues) and [pull requests](https://github.com/CircleCI-Public/cimg-go/pulls) against this repository. 237 | 238 | Please 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. 239 | 240 | ## Additional Resources 241 | 242 | [CircleCI Docs](https://circleci.com/docs/) - The official CircleCI Documentation website. 243 | [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. 244 | It will list all of the keys and values supported in `.circleci/config.yml`. 245 | [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. 246 | 247 | ## License 248 | 249 | This repository is licensed under the MIT license. 250 | The license can be found [here](./LICENSE). 251 | -------------------------------------------------------------------------------- /build-images.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Do not edit by hand; please use build scripts/templates to make changes 3 | set -eo pipefail 4 | 5 | docker context create cimg 6 | docker buildx create --use cimg 7 | docker buildx build --platform=linux/amd64,linux/arm64 --file 1.24/Dockerfile -t cimg/go:1.24.4 -t cimg/go:1.24 --push . 8 | docker buildx build --platform=linux/amd64,linux/arm64 --file 1.24/node/Dockerfile -t cimg/go:1.24.4-node -t cimg/go:1.24-node --push . 9 | docker buildx build --platform=linux/amd64 --file 1.24/browsers/Dockerfile -t cimg/go:1.24.4-browsers -t cimg/go:1.24-browsers --push . 10 | docker buildx build --platform=linux/amd64,linux/arm64 --file 1.23/Dockerfile -t cimg/go:1.23.10 -t cimg/go:1.23 --push . 11 | docker buildx build --platform=linux/amd64,linux/arm64 --file 1.23/node/Dockerfile -t cimg/go:1.23.10-node -t cimg/go:1.23-node --push . 12 | docker buildx build --platform=linux/amd64 --file 1.23/browsers/Dockerfile -t cimg/go:1.23.10-browsers -t cimg/go:1.23-browsers --push . 13 | -------------------------------------------------------------------------------- /goFeed.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | vers=() 4 | 5 | if [ -f shared/automated-updates.sh ]; then 6 | source shared/automated-updates.sh 7 | else 8 | echo "Check if submodule was loaded; automated-updates.sh is missing" 9 | exit 1 10 | fi 11 | 12 | getGoVulnCheck() { 13 | local templateFile=$1 14 | 15 | RSS_URL="https://github.com/golang/vuln/tags.atom" 16 | VERSIONS=$(curl --silent "$RSS_URL" | grep -E '(title)' | tail -n +2 | sed -e 's/^[ \t]*//' | sed -e 's///' -e 's/<\/title>//' | tr -d ':') 17 | 18 | for version in $VERSIONS; do 19 | if [[ $version =~ ^v[0-9]+(\.[0-9]+)*$ ]]; then 20 | generateVersions "$(cut -d "v" -f2 <<< "${version}")" 21 | generateSearchTerms "GOVULNCHECK_V=" "$templateFile" 22 | replaceVersions "GOVULNCHECK_V=" "$SEARCH_TERM" "true" 23 | fi 24 | done 25 | } 26 | 27 | getGoTestSum() { 28 | local templateFile=$1 29 | 30 | RSS_URL="https://github.com/gotestyourself/gotestsum/tags.atom" 31 | VERSIONS=$(curl --silent "$RSS_URL" | grep -E '(title)' | tail -n +2 | sed -e 's/^[ \t]*//' | sed -e 's/<title>//' -e 's/<\/title>//') 32 | 33 | for version in $VERSIONS; do 34 | if [[ $version =~ ^v[0-9]+(\.[0-9]+)*$ ]]; then 35 | generateVersions "$(cut -d "v" -f2 <<< "${version}")" 36 | generateSearchTerms "GOTESTSUM_V=" "$templateFile" 37 | replaceVersions "GOTESTSUM_V=" "$SEARCH_TERM" "true" 38 | fi 39 | done 40 | } 41 | 42 | getGoCILint () { 43 | local templateFile=$1 44 | 45 | RSS_URL="https://github.com/golangci/golangci-lint/tags.atom" 46 | VERSIONS=$(curl --silent "$RSS_URL" | grep -E '(title)' | tail -n +2 | sed -e 's/^[ \t]*//' | sed -e 's/<title>//' -e 's/<\/title>//') 47 | 48 | for version in $VERSIONS; do 49 | if [[ $version =~ ^v[0-9]+(\.[0-9]+)*$ ]]; then 50 | generateVersions "$(cut -d "v" -f2 <<< "${version}")" 51 | generateSearchTerms "GOCI_LINT_V=" "$templateFile" 52 | replaceVersions "GOCI_LINT_V=" "$SEARCH_TERM" "true" 53 | fi 54 | done 55 | } 56 | 57 | getGoVersion() { 58 | echo "Getting Go Test Sum Versions..." 59 | getGoTestSum "Dockerfile.template" 60 | 61 | echo "Getting Go Lint Versions..." 62 | getGoCILint "Dockerfile.template" 63 | 64 | echo "Getting Go Vuln Check Versions..." 65 | getGoVulnCheck "Dockerfile.template" 66 | 67 | RSS_URL="https://github.com/golang/go/tags.atom" 68 | VERSIONS=$(curl --silent "$RSS_URL" | grep -E '(title)' | tail -n +2 | sed -e 's/^[ \t]*//' | sed -e 's/<title>//' -e 's/<\/title>//') 69 | 70 | for version in $VERSIONS; do 71 | if [[ $version =~ ^go[0-9]+(\.[0-9]+)*$ ]]; then 72 | generateVersions "$(trimmer "go" <<< "$version")" 73 | generateSearchTerms "GO_VER=" "$majorMinor/Dockerfile" '"' 74 | directoryCheck "$majorMinor" "$SEARCH_TERM" 75 | if [[ $(eval echo $?) == 0 ]]; then 76 | generateVersionString "$newVersion" 77 | fi 78 | fi 79 | done 80 | } 81 | 82 | getGoVersion 83 | 84 | if [ -n "${vers[*]}" ]; then 85 | echo "Included version updates: ${vers[*]}" 86 | echo "Running release script" 87 | ./shared/release.sh "${vers[@]}" 88 | else 89 | echo "No new version updates" 90 | exit 0 91 | fi 92 | -------------------------------------------------------------------------------- /img/circle-circleci.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 | 4 | <svg 5 | xmlns:dc="http://purl.org/dc/elements/1.1/" 6 | xmlns:cc="http://creativecommons.org/ns#" 7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 8 | xmlns:svg="http://www.w3.org/2000/svg" 9 | xmlns="http://www.w3.org/2000/svg" 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 12 | width="5000" 13 | height="5000" 14 | viewBox="0 0 5000 4999.9999" 15 | id="svg2" 16 | version="1.1" 17 | inkscape:version="0.92.4 (5da689c313, 2019-01-14)" 18 | sodipodi:docname="circle-circleci.svg" 19 | inkscape:export-filename="/home/felicianotech/Projects/cloud-unpacked/graphics/logos/master/master.png" 20 | inkscape:export-xdpi="11.9" 21 | inkscape:export-ydpi="11.9"> 22 | <defs 23 | id="defs4" /> 24 | <sodipodi:namedview 25 | id="base" 26 | pagecolor="#000000" 27 | bordercolor="#666666" 28 | borderopacity="1.0" 29 | inkscape:pageopacity="0" 30 | inkscape:pageshadow="2" 31 | inkscape:zoom="0.0625" 32 | inkscape:cx="6689.6583" 33 | inkscape:cy="-1323.8416" 34 | inkscape:document-units="px" 35 | inkscape:current-layer="layer1" 36 | showgrid="false" 37 | inkscape:window-width="3732" 38 | inkscape:window-height="2032" 39 | inkscape:window-x="108" 40 | inkscape:window-y="54" 41 | inkscape:window-maximized="1" 42 | fit-margin-top="0" 43 | fit-margin-left="0" 44 | fit-margin-right="0" 45 | fit-margin-bottom="0" 46 | showborder="true" 47 | units="px" 48 | inkscape:pagecheckerboard="true" /> 49 | <metadata 50 | id="metadata7"> 51 | <rdf:RDF> 52 | <cc:Work 53 | rdf:about=""> 54 | <dc:format>image/svg+xml</dc:format> 55 | <dc:type 56 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 57 | <dc:title /> 58 | </cc:Work> 59 | </rdf:RDF> 60 | </metadata> 61 | <g 62 | inkscape:label="Layer 1" 63 | inkscape:groupmode="layer" 64 | id="layer1" 65 | transform="translate(2386.9101,-3798.7827)"> 66 | <circle 67 | style="fill:#1c1c1c;fill-opacity:1" 68 | id="path864" 69 | cx="113.0899" 70 | cy="6298.7827" 71 | r="2500" /> 72 | <circle 73 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 74 | id="path4304-4-6" 75 | cx="2523.1167" 76 | cy="-317.93839" 77 | r="0" /> 78 | <circle 79 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 80 | id="path4304-4-2" 81 | cx="320.25952" 82 | cy="862.34735" 83 | r="0" /> 84 | <circle 85 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 86 | id="path4304-4-0" 87 | cx="2523.1167" 88 | cy="862.34735" 89 | r="0" /> 90 | <circle 91 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 92 | id="path4304-4-0-6" 93 | cx="1385.9738" 94 | cy="2456.3474" 95 | r="0" /> 96 | <circle 97 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 98 | id="path4304-4-9-6" 99 | cx="2458.947" 100 | cy="2162.2476" 101 | r="0" /> 102 | <circle 103 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 104 | id="path4304-4-9-0" 105 | cx="2475.4346" 106 | cy="-339.29968" 107 | r="0" /> 108 | <path 109 | inkscape:connector-curvature="0" 110 | id="path957" 111 | style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.2450068" 112 | d="m 94.378722,5048.7826 c -583.509852,0 -1073.167152,399.7841 -1210.978622,940.279 -0.9289,3.9342 -1.5659,7.943 -1.5659,12.1262 0,32.8682 26.6558,59.5115 59.5318,59.5115 h 503.81397 c 23.991,0 44.5089,-14.3299 53.9934,-34.7606 l 0.078,0.028 c 103.5209,-225.3339 330.88536,-381.9807 595.128202,-381.9807 361.504998,0 654.729098,293.2241 654.729098,654.8113 0,361.6011 -293.2241,654.8252 -654.729098,654.8252 -264.242842,0 -491.607302,-156.6467 -595.128202,-382.0415 l -0.078,0.1194 c -9.4845,-20.4793 -30.0024,-34.7718 -53.9934,-34.7718 H -1058.634 c -32.876,0 -59.5318,26.567 -59.5318,59.5213 0,4.076 0.637,7.9568 1.4832,11.8573 137.76837,540.5322 627.44447,940.4757 1211.061322,940.4757 690.273998,0 1249.966878,-559.7177 1249.966878,-1249.9869 0,-690.3437 -559.69288,-1250.0117 -1249.966878,-1250.0117 z M -203.2702,6298.7943 c 0,-164.3284 133.283022,-297.6065 297.648922,-297.6065 164.333398,0 297.573938,133.2781 297.573938,297.6065 0,164.3409 -133.24054,297.6539 -297.573938,297.6539 -164.3659,0 -297.648922,-133.313 -297.648922,-297.6539" 113 | sodipodi:nodetypes="ccsssccsssccsssasscccsssc" /> 114 | </g> 115 | </svg> 116 | -------------------------------------------------------------------------------- /img/circle-docker.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 | 4 | <svg 5 | xmlns:dc="http://purl.org/dc/elements/1.1/" 6 | xmlns:cc="http://creativecommons.org/ns#" 7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 8 | xmlns:svg="http://www.w3.org/2000/svg" 9 | xmlns="http://www.w3.org/2000/svg" 10 | xmlns:xlink="http://www.w3.org/1999/xlink" 11 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 12 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 13 | width="5000" 14 | height="5000" 15 | viewBox="0 0 5000 4999.9999" 16 | id="svg2" 17 | version="1.1" 18 | inkscape:version="0.92.4 (5da689c313, 2019-01-14)" 19 | sodipodi:docname="circle-dockersvg.svg" 20 | inkscape:export-filename="/home/felicianotech/Projects/cloud-unpacked/graphics/logos/master/master.png" 21 | inkscape:export-xdpi="11.9" 22 | inkscape:export-ydpi="11.9"> 23 | <defs 24 | id="defs4"> 25 | <path 26 | d="M34,15.167c0,0-7.333,5.833-9.333,6C22.667,21.333,14,27,14,27l-5.667-0.166L2,19.667l8.667,64.752h100.581 l-70.51-70.51L34,15.167z" 27 | id="SVGID_1_" /> 28 | <filter 29 | height="70.51" 30 | width="109.248" 31 | y="13.909" 32 | x="2" 33 | filterUnits="userSpaceOnUse" 34 | id="Adobe_OpacityMaskFilter"> 35 | <feColorMatrix 36 | id="feColorMatrix1326" 37 | values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0" 38 | type="matrix" /> 39 | 40 | </filter> 41 | <path 42 | d="M18.692,15.471h3.947v-3.866h-3.947V15.471z M4.164,15.47h3.947v-3.866H4.164V15.47z M8.111,11.604h0.002 H8.111z M9.008,15.47h3.947v-3.866H9.008V15.47z M13.851,15.47h3.946v-3.866h-3.946V15.47z M23.535,15.47h3.946v-3.866h-3.946 V15.47z M7.588,22.131c0-1.129,0.936-2.046,2.087-2.046c1.151,0,2.089,0.917,2.089,2.046c0,1.127-0.937,2.046-2.089,2.046 C8.526,24.177,7.588,23.258,7.588,22.131 M32.206,9.347c-0.835,0.948-1.084,2.522-0.97,3.731c0.084,0.89,0.369,1.791,0.928,2.506 c-0.425,0.25-0.908,0.447-1.338,0.591c-0.874,0.289-1.825,0.45-2.75,0.45H2.111l-0.056,0.589c-0.184,1.955,0.089,3.911,0.915,5.7 l0.354,0.711l0.041,0.066c2.443,4.063,6.729,5.774,11.402,5.774c9.046,0,16.507-3.957,19.933-12.318 c2.289,0.115,4.631-0.547,5.752-2.689l0.286-0.549l-0.542-0.305c-1.327-0.749-3.091-0.853-4.594-0.418v0.001 c-0.186-1.567-1.235-2.939-2.484-3.922l-0.495-0.389L32.206,9.347z M9.008,10.512h3.947V6.645H9.008V10.512z M13.851,10.512h3.946 V6.645h-3.946V10.512z M18.692,10.512h3.947V6.645h-3.947V10.512z M18.692,5.554h3.947V1.687h-3.947V5.554z" 43 | id="SVGID_6_" /> 44 | </defs> 45 | <sodipodi:namedview 46 | id="base" 47 | pagecolor="#000000" 48 | bordercolor="#666666" 49 | borderopacity="1.0" 50 | inkscape:pageopacity="0" 51 | inkscape:pageshadow="2" 52 | inkscape:zoom="0.088388348" 53 | inkscape:cx="4049.8377" 54 | inkscape:cy="195.94416" 55 | inkscape:document-units="px" 56 | inkscape:current-layer="layer1" 57 | showgrid="false" 58 | inkscape:window-width="3732" 59 | inkscape:window-height="2032" 60 | inkscape:window-x="108" 61 | inkscape:window-y="54" 62 | inkscape:window-maximized="1" 63 | fit-margin-top="0" 64 | fit-margin-left="0" 65 | fit-margin-right="0" 66 | fit-margin-bottom="0" 67 | showborder="true" 68 | units="px" 69 | inkscape:pagecheckerboard="true" /> 70 | <metadata 71 | id="metadata7"> 72 | <rdf:RDF> 73 | <cc:Work 74 | rdf:about=""> 75 | <dc:format>image/svg+xml</dc:format> 76 | <dc:type 77 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 78 | <dc:title></dc:title> 79 | </cc:Work> 80 | </rdf:RDF> 81 | </metadata> 82 | <g 83 | inkscape:label="Layer 1" 84 | inkscape:groupmode="layer" 85 | id="layer1" 86 | transform="translate(2386.9101,-3798.7827)"> 87 | <circle 88 | style="fill:#0db7ed;fill-opacity:1" 89 | id="path864" 90 | cx="113.0899" 91 | cy="6298.7827" 92 | r="2500" /> 93 | <circle 94 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 95 | id="path4304-4-6" 96 | cx="2523.1167" 97 | cy="-317.93839" 98 | r="0" /> 99 | <circle 100 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 101 | id="path4304-4-2" 102 | cx="320.25952" 103 | cy="862.34735" 104 | r="0" /> 105 | <circle 106 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 107 | id="path4304-4-0" 108 | cx="2523.1167" 109 | cy="862.34735" 110 | r="0" /> 111 | <circle 112 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 113 | id="path4304-4-0-6" 114 | cx="1385.9738" 115 | cy="2456.3474" 116 | r="0" /> 117 | <circle 118 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 119 | id="path4304-4-9-6" 120 | cx="2458.947" 121 | cy="2162.2476" 122 | r="0" /> 123 | <circle 124 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 125 | id="path4304-4-9-0" 126 | cx="2475.4346" 127 | cy="-339.29968" 128 | r="0" /> 129 | <g 130 | id="g1358" 131 | transform="matrix(64.536443,0,0,64.536443,-1265.9957,5293.5631)"> 132 | <defs 133 | id="defs1351"> 134 | <path 135 | inkscape:connector-curvature="0" 136 | id="path1392" 137 | d="m 18.692,15.471 h 3.947 V 11.605 H 18.692 Z M 4.164,15.47 H 8.111 V 11.604 H 4.164 Z m 3.947,-3.866 h 0.002 z m 0.897,3.866 h 3.947 V 11.604 H 9.008 Z m 4.843,0 h 3.946 v -3.866 h -3.946 z m 9.684,0 h 3.946 V 11.604 H 23.535 Z M 7.588,22.131 c 0,-1.129 0.936,-2.046 2.087,-2.046 1.151,0 2.089,0.917 2.089,2.046 0,1.127 -0.937,2.046 -2.089,2.046 -1.149,0 -2.087,-0.919 -2.087,-2.046 M 32.206,9.347 c -0.835,0.948 -1.084,2.522 -0.97,3.731 0.084,0.89 0.369,1.791 0.928,2.506 -0.425,0.25 -0.908,0.447 -1.338,0.591 -0.874,0.289 -1.825,0.45 -2.75,0.45 H 2.111 l -0.056,0.589 c -0.184,1.955 0.089,3.911 0.915,5.7 l 0.354,0.711 0.041,0.066 c 2.443,4.063 6.729,5.774 11.402,5.774 9.046,0 16.507,-3.957 19.933,-12.318 2.289,0.115 4.631,-0.547 5.752,-2.689 l 0.286,-0.549 -0.542,-0.305 c -1.327,-0.749 -3.091,-0.853 -4.594,-0.418 v 10e-4 C 35.416,11.62 34.367,10.248 33.118,9.265 L 32.623,8.876 Z M 9.008,10.512 h 3.947 V 6.645 H 9.008 Z m 4.843,0 h 3.946 V 6.645 h -3.946 z m 4.841,0 h 3.947 V 6.645 h -3.947 z m 0,-4.958 h 3.947 V 1.687 h -3.947 z" /> 138 | 139 | </defs> 140 | 141 | <clipPath 142 | id="SVGID_7_"> 143 | <use 144 | height="100%" 145 | width="100%" 146 | y="0" 147 | x="0" 148 | style="overflow:visible" 149 | xlink:href="#SVGID_6_" 150 | overflow="visible" 151 | id="use1353" /> 152 | 153 | </clipPath> 154 | 155 | <rect 156 | style="fill:#ffffff" 157 | x="-3" 158 | y="-3.313" 159 | clip-path="url(#SVGID_7_)" 160 | width="48.737999" 161 | height="37.778" 162 | id="rect1356" /> 163 | 164 | </g> 165 | </g> 166 | <style 167 | id="style1118" 168 | type="text/css"> 169 | .st0{fill:#2DBCAF;} 170 | .st1{fill:#5DC9E1;} 171 | .st2{fill:#FDDD00;} 172 | .st3{fill:#CE3262;} 173 | .st4{fill:#00ACD7;} 174 | .st5{fill:#FFFFFF;} 175 | </style> 176 | </svg> 177 | -------------------------------------------------------------------------------- /img/circle-go.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 | <!-- Created with Inkscape (http://www.inkscape.org/) --> 3 | 4 | <svg 5 | xmlns:dc="http://purl.org/dc/elements/1.1/" 6 | xmlns:cc="http://creativecommons.org/ns#" 7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 8 | xmlns:svg="http://www.w3.org/2000/svg" 9 | xmlns="http://www.w3.org/2000/svg" 10 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 11 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 12 | width="5000" 13 | height="5000" 14 | viewBox="0 0 5000 4999.9999" 15 | id="svg2" 16 | version="1.1" 17 | inkscape:version="0.92.4 (5da689c313, 2019-01-14)" 18 | sodipodi:docname="circle-go.svg" 19 | inkscape:export-filename="/home/felicianotech/Projects/cloud-unpacked/graphics/logos/master/master.png" 20 | inkscape:export-xdpi="11.9" 21 | inkscape:export-ydpi="11.9"> 22 | <defs 23 | id="defs4" /> 24 | <sodipodi:namedview 25 | id="base" 26 | pagecolor="#000000" 27 | bordercolor="#666666" 28 | borderopacity="1.0" 29 | inkscape:pageopacity="0" 30 | inkscape:pageshadow="2" 31 | inkscape:zoom="0.0625" 32 | inkscape:cx="1793.6583" 33 | inkscape:cy="-1323.8416" 34 | inkscape:document-units="px" 35 | inkscape:current-layer="layer1" 36 | showgrid="false" 37 | inkscape:window-width="3732" 38 | inkscape:window-height="2032" 39 | inkscape:window-x="108" 40 | inkscape:window-y="54" 41 | inkscape:window-maximized="1" 42 | fit-margin-top="0" 43 | fit-margin-left="0" 44 | fit-margin-right="0" 45 | fit-margin-bottom="0" 46 | showborder="true" 47 | units="px" 48 | inkscape:pagecheckerboard="true" /> 49 | <metadata 50 | id="metadata7"> 51 | <rdf:RDF> 52 | <cc:Work 53 | rdf:about=""> 54 | <dc:format>image/svg+xml</dc:format> 55 | <dc:type 56 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 57 | <dc:title /> 58 | </cc:Work> 59 | </rdf:RDF> 60 | </metadata> 61 | <g 62 | inkscape:label="Layer 1" 63 | inkscape:groupmode="layer" 64 | id="layer1" 65 | transform="translate(2386.9101,-3798.7827)"> 66 | <circle 67 | style="fill:#00addf;fill-opacity:1" 68 | id="path864" 69 | cx="113.0899" 70 | cy="6298.7827" 71 | r="2500" /> 72 | <circle 73 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 74 | id="path4304-4-6" 75 | cx="2523.1167" 76 | cy="-317.93839" 77 | r="0" /> 78 | <circle 79 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 80 | id="path4304-4-2" 81 | cx="320.25952" 82 | cy="862.34735" 83 | r="0" /> 84 | <circle 85 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 86 | id="path4304-4-0" 87 | cx="2523.1167" 88 | cy="862.34735" 89 | r="0" /> 90 | <circle 91 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 92 | id="path4304-4-0-6" 93 | cx="1385.9738" 94 | cy="2456.3474" 95 | r="0" /> 96 | <circle 97 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 98 | id="path4304-4-9-6" 99 | cx="2458.947" 100 | cy="2162.2476" 101 | r="0" /> 102 | <circle 103 | style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 104 | id="path4304-4-9-0" 105 | cx="2475.4346" 106 | cy="-339.29968" 107 | r="0" /> 108 | <g 109 | id="g1157" 110 | transform="matrix(12.172099,0,0,12.172099,-1437.561,4883.9851)"> 111 | <g 112 | id="g1126"> 113 | <g 114 | id="g1124"> 115 | <g 116 | id="g1122"> 117 | <path 118 | id="path1120" 119 | d="m 40.2,101.1 c -0.4,0 -0.5,-0.2 -0.3,-0.5 L 42,97.9 c 0.2,-0.3 0.7,-0.5 1.1,-0.5 h 35.7 c 0.4,0 0.5,0.3 0.3,0.6 l -1.7,2.6 c -0.2,0.3 -0.7,0.6 -1,0.6 z" 120 | class="st5" 121 | inkscape:connector-curvature="0" 122 | style="fill:#ffffff" /> 123 | </g> 124 | </g> 125 | </g> 126 | <g 127 | id="g1134"> 128 | <g 129 | id="g1132"> 130 | <g 131 | id="g1130"> 132 | <path 133 | id="path1128" 134 | d="m 25.1,110.3 c -0.4,0 -0.5,-0.2 -0.3,-0.5 l 2.1,-2.7 c 0.2,-0.3 0.7,-0.5 1.1,-0.5 h 45.6 c 0.4,0 0.6,0.3 0.5,0.6 l -0.8,2.4 c -0.1,0.4 -0.5,0.6 -0.9,0.6 z" 135 | class="st5" 136 | inkscape:connector-curvature="0" 137 | style="fill:#ffffff" /> 138 | </g> 139 | </g> 140 | </g> 141 | <g 142 | id="g1142"> 143 | <g 144 | id="g1140"> 145 | <g 146 | id="g1138"> 147 | <path 148 | id="path1136" 149 | d="m 49.3,119.5 c -0.4,0 -0.5,-0.3 -0.3,-0.6 l 1.4,-2.5 c 0.2,-0.3 0.6,-0.6 1,-0.6 h 20 c 0.4,0 0.6,0.3 0.6,0.7 l -0.2,2.4 c 0,0.4 -0.4,0.7 -0.7,0.7 z" 150 | class="st5" 151 | inkscape:connector-curvature="0" 152 | style="fill:#ffffff" /> 153 | </g> 154 | </g> 155 | </g> 156 | <g 157 | id="g1155"> 158 | <g 159 | id="CXHf1q_2_"> 160 | <g 161 | id="g1152"> 162 | <g 163 | id="g1146"> 164 | <path 165 | id="path1144" 166 | d="m 153.1,99.3 c -6.3,1.6 -10.6,2.8 -16.8,4.4 -1.5,0.4 -1.6,0.5 -2.9,-1 -1.5,-1.7 -2.6,-2.8 -4.7,-3.8 -6.3,-3.1 -12.4,-2.2 -18.1,1.5 -6.8,4.4 -10.3,10.9 -10.2,19 0.1,8 5.6,14.6 13.5,15.7 6.8,0.9 12.5,-1.5 17,-6.6 0.9,-1.1 1.7,-2.3 2.7,-3.7 -3.6,0 -8.1,0 -19.3,0 -2.1,0 -2.6,-1.3 -1.9,-3 1.3,-3.1 3.7,-8.3 5.1,-10.9 0.3,-0.6 1,-1.6 2.5,-1.6 5.1,0 23.9,0 36.4,0 -0.2,2.7 -0.2,5.4 -0.6,8.1 -1.1,7.2 -3.8,13.8 -8.2,19.6 -7.2,9.5 -16.6,15.4 -28.5,17 -9.8,1.3 -18.9,-0.6 -26.9,-6.6 -7.4,-5.6 -11.6,-13 -12.7,-22.2 -1.3,-10.9 1.9,-20.7 8.5,-29.3 7.1,-9.3 16.5,-15.2 28,-17.3 9.4,-1.7 18.4,-0.6 26.5,4.9 5.3,3.5 9.1,8.3 11.6,14.1 0.6,0.9 0.2,1.4 -1,1.7 z" 167 | class="st5" 168 | inkscape:connector-curvature="0" 169 | style="fill:#ffffff" /> 170 | </g> 171 | <g 172 | id="g1150"> 173 | <path 174 | id="path1148" 175 | d="m 186.2,154.6 c -9.1,-0.2 -17.4,-2.8 -24.4,-8.8 -5.9,-5.1 -9.6,-11.6 -10.8,-19.3 -1.8,-11.3 1.3,-21.3 8.1,-30.2 7.3,-9.6 16.1,-14.6 28,-16.7 10.2,-1.8 19.8,-0.8 28.5,5.1 7.9,5.4 12.8,12.7 14.1,22.3 1.7,13.5 -2.2,24.5 -11.5,33.9 -6.6,6.7 -14.7,10.9 -24,12.8 -2.7,0.5 -5.4,0.6 -8,0.9 z M 210,114.2 c -0.1,-1.3 -0.1,-2.3 -0.3,-3.3 -1.8,-9.9 -10.9,-15.5 -20.4,-13.3 -9.3,2.1 -15.3,8 -17.5,17.4 -1.8,7.8 2,15.7 9.2,18.9 5.5,2.4 11,2.1 16.3,-0.6 7.9,-4.1 12.2,-10.5 12.7,-19.1 z" 176 | class="st5" 177 | inkscape:connector-curvature="0" 178 | style="fill:#ffffff" /> 179 | </g> 180 | </g> 181 | </g> 182 | </g> 183 | </g> 184 | </g> 185 | <style 186 | id="style1118" 187 | type="text/css"> 188 | .st0{fill:#2DBCAF;} 189 | .st1{fill:#5DC9E1;} 190 | .st2{fill:#FDDD00;} 191 | .st3{fill:#CE3262;} 192 | .st4{fill:#00ACD7;} 193 | .st5{fill:#FFFFFF;} 194 | </style> 195 | </svg> 196 | -------------------------------------------------------------------------------- /manifest: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | repository=go 4 | parent=base 5 | variants=(node browsers) 6 | namespace=cimg 7 | arm64=1 8 | -------------------------------------------------------------------------------- /push-images.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Do not edit by hand; please use build scripts/templates to make changes 3 | set -eo pipefail 4 | -------------------------------------------------------------------------------- /renovate.json5: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:recommended" 5 | ], 6 | "ignorePaths": [ 7 | "1.17/", 8 | "1.18/", 9 | "1.19/", 10 | "1.20/", 11 | "1.21/", 12 | "1.22/" 13 | ], 14 | "customManagers": [ 15 | { 16 | "customType": "regex", 17 | "fileMatch": ["Dockerfile.template"], 18 | "matchStrings": [ 19 | "#\\s*renovate:\\s*datasource=(?<datasource>.*?) depName=(?<depName>.*?)( versioning=(?<versioning>.*?))?\\s.*?_VERSION=\\s*(?<currentValue>.*)\\s" 20 | ], 21 | "versioningTemplate": "{{#if versioning}}{{{versioning}}}{{else}}semver{{/if}}" 22 | } 23 | ] 24 | } 25 | --------------------------------------------------------------------------------