├── .circleci └── config.yml ├── .github ├── CODEOWNERS ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ ├── cimg-bug-report.md │ ├── cimg-feature-request.md │ └── config.yml └── pull_request_template.md ├── .gitmodules ├── 2022.04 ├── Dockerfile └── node │ └── Dockerfile ├── 2022.05 ├── Dockerfile └── node │ └── Dockerfile ├── 2022.06 ├── Dockerfile └── node │ └── Dockerfile ├── 2022.07 ├── Dockerfile └── node │ └── Dockerfile ├── 2022.08 ├── Dockerfile └── node │ └── Dockerfile ├── 2022.09 ├── Dockerfile └── node │ └── Dockerfile ├── 2022.10 ├── Dockerfile └── node │ └── Dockerfile ├── 2022.11 ├── Dockerfile └── node │ └── Dockerfile ├── 2023.01 ├── Dockerfile └── node │ └── Dockerfile ├── 2023.02 ├── Dockerfile └── node │ └── Dockerfile ├── 2023.03 ├── Dockerfile └── node │ └── Dockerfile ├── 2023.04 ├── Dockerfile └── node │ └── Dockerfile ├── 2023.05 ├── Dockerfile └── node │ └── Dockerfile ├── 2023.06 ├── Dockerfile └── node │ └── Dockerfile ├── 2023.07 ├── Dockerfile └── node │ └── Dockerfile ├── 2023.08 ├── Dockerfile └── node │ └── Dockerfile ├── 2023.09 ├── Dockerfile └── node │ └── Dockerfile ├── 2023.12 ├── Dockerfile └── node │ └── Dockerfile ├── 2024.03 ├── Dockerfile └── node │ └── Dockerfile ├── 2024.08 ├── Dockerfile └── node │ └── Dockerfile ├── 2024.11 ├── Dockerfile └── node │ └── Dockerfile ├── 2025.01 ├── Dockerfile └── node │ └── Dockerfile ├── Dockerfile.template ├── GEN-CHECK ├── LICENSE ├── README.md ├── build-images.sh ├── deployFeed.sh ├── img ├── circle-circleci.svg └── circle-docker.svg ├── manifest └── push-images.sh /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | 3 | orbs: 4 | cimg: circleci/cimg@0.6.4 5 | slack: circleci/slack@4.12.1 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: deployFeed.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 | - cimg/build-and-deploy: 27 | name: "Test" 28 | resource-class: 2xlarge+ 29 | docker-namespace: ccitest 30 | docker-repository: deploy 31 | filters: 32 | branches: 33 | ignore: 34 | - main 35 | context: 36 | - slack-notification-access-token 37 | - slack-cimg-notifications 38 | - cimg-docker-image-building 39 | post-steps: 40 | - slack/notify: 41 | branch_pattern: main 42 | event: fail 43 | mentions: "@images" 44 | template: basic_fail_1 45 | - cimg/build-and-deploy: 46 | name: "Deploy" 47 | resource-class: 2xlarge+ 48 | docker-repository: deploy 49 | filters: 50 | branches: 51 | only: 52 | - main 53 | context: 54 | - slack-notification-access-token 55 | - slack-cimg-notifications 56 | - cimg-docker-image-building 57 | - cimg-docker-image-publishing 58 | post-steps: 59 | - slack/notify: 60 | branch_pattern: main 61 | event: fail 62 | mentions: "@images" 63 | template: basic_fail_1 64 | - trigger-images: 65 | matrix: 66 | parameters: 67 | deploy-images: 68 | - cimg-aws 69 | - cimg-azure 70 | - cimg-gcp 71 | context: 72 | - slack-notification-access-token 73 | - slack-cimg-notifications 74 | - cpe-image-bot-github-creds 75 | requires: 76 | - Deploy 77 | filters: 78 | branches: 79 | only: 80 | - main 81 | 82 | jobs: 83 | trigger-images: 84 | parameters: 85 | deploy-images: 86 | type: string 87 | docker: 88 | - image: cimg/base:current 89 | steps: 90 | - checkout 91 | - run: 92 | name: "Check if release build" 93 | command: | 94 | if ! git log -1 --pretty=%s | grep "\[release\]"; then 95 | echo "Not a release commit" 96 | circleci step halt 97 | fi 98 | - run: 99 | name: "Trigger utility image builds" 100 | command: | 101 | curl --request POST \ 102 | --url https://circleci.com/api/v2/project/gh/CircleCI-Public/<>/pipeline \ 103 | --header "Circle-Token: $IMAGE_BOT_TOKEN" \ 104 | --header "content-type: application/json" \ 105 | --data '{"parameters":{"trigger": true}, "branch": "main" }}' 106 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /2022.04/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:edge-22.04 6 | 7 | LABEL maintainer="Community & Partner Engineering Team " 8 | 9 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 10 | python3-pip \ 11 | rsync \ 12 | && \ 13 | sudo rm -rf /var/lib/apt/lists/* && \ 14 | 15 | # Setup Ansible 16 | pip install ansible && \ 17 | 18 | # Setup Packer & Terraform 19 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 20 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 21 | 22 | # Setup Salt 23 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 24 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 25 | 26 | # Setup Kubectl 27 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 28 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 29 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 30 | 31 | # Setup nFPM 32 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 33 | 34 | # Install tools from added Apt repos 35 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 36 | kubectl \ 37 | nfpm \ 38 | packer \ 39 | salt-master \ 40 | terraform \ 41 | && \ 42 | sudo rm -rf /var/lib/apt/lists/* 43 | 44 | # Install AWS related tools 45 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 46 | amazon-ecr-credential-helper \ 47 | && \ 48 | sudo rm -rf /var/lib/apt/lists/* && \ 49 | curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \ 50 | unzip awscliv2.zip && \ 51 | sudo ./aws/install && \ 52 | aws --version 53 | 54 | # Install GCP related tools 55 | RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \ 56 | curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo tee /usr/share/keyrings/cloud.google.gpg && \ 57 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 58 | google-cloud-cli \ 59 | google-cloud-cli-app-engine-go \ 60 | google-cloud-cli-app-engine-python \ 61 | google-cloud-cli-gke-gcloud-auth-plugin \ 62 | google-cloud-cli-kubectl-oidc \ 63 | && \ 64 | sudo rm -rf /var/lib/apt/lists/* && \ 65 | gcloud --version 66 | -------------------------------------------------------------------------------- /2022.04/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2022.04.2 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 | -------------------------------------------------------------------------------- /2022.05/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:edge-22.04 6 | 7 | LABEL maintainer="Community & Partner Engineering Team " 8 | 9 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 10 | python3-pip \ 11 | rsync \ 12 | && \ 13 | sudo rm -rf /var/lib/apt/lists/* && \ 14 | 15 | # Setup Ansible 16 | pip install ansible && \ 17 | pip cache purge && \ 18 | 19 | # Setup Packer & Terraform 20 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 21 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 22 | 23 | # Setup Salt 24 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 26 | 27 | # Setup Kubectl 28 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 29 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 30 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 31 | 32 | # Setup nFPM 33 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 34 | 35 | # Install tools from added Apt repos 36 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 37 | kubectl \ 38 | nfpm \ 39 | packer \ 40 | salt-master \ 41 | terraform \ 42 | && \ 43 | sudo rm -rf /var/lib/apt/lists/* 44 | 45 | # Install AWS related tools 46 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 47 | amazon-ecr-credential-helper \ 48 | && \ 49 | sudo rm -rf /var/lib/apt/lists/* && \ 50 | curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \ 51 | unzip awscliv2.zip && \ 52 | sudo ./aws/install && \ 53 | rm -fR aws* && \ 54 | aws --version 55 | 56 | # Install GCP related tools 57 | RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \ 58 | curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo tee /usr/share/keyrings/cloud.google.gpg && \ 59 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 60 | google-cloud-cli \ 61 | google-cloud-cli-app-engine-go \ 62 | google-cloud-cli-app-engine-python \ 63 | google-cloud-cli-gke-gcloud-auth-plugin \ 64 | google-cloud-cli-kubectl-oidc \ 65 | && \ 66 | sudo rm -rf /var/lib/apt/lists/* && \ 67 | gcloud --version 68 | 69 | # Install Azure related tools 70 | RUN curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/microsoft.gpg > /dev/null && \ 71 | echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/azure-cli.list && \ 72 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 73 | apt-transport-https \ 74 | azure-cli \ 75 | ca-certificates \ 76 | gnupg \ 77 | lsb-release \ 78 | && \ 79 | sudo rm -rf /var/lib/apt/lists/* && \ 80 | az --version 81 | -------------------------------------------------------------------------------- /2022.05/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2022.05.1 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 | -------------------------------------------------------------------------------- /2022.06/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:current-22.04 6 | 7 | LABEL maintainer="Community & Partner Engineering Team " 8 | 9 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 10 | python3-pip \ 11 | rsync \ 12 | && \ 13 | sudo rm -rf /var/lib/apt/lists/* && \ 14 | 15 | # Setup Ansible 16 | pip install ansible && \ 17 | pip cache purge && \ 18 | 19 | # Setup Packer & Terraform 20 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 21 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 22 | 23 | # Setup Salt 24 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 26 | 27 | # Setup Kubectl 28 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 29 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 30 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 31 | 32 | # Setup nFPM 33 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 34 | 35 | # Install tools from added Apt repos 36 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 37 | kubectl \ 38 | nfpm \ 39 | packer \ 40 | salt-master \ 41 | terraform \ 42 | && \ 43 | sudo rm -rf /var/lib/apt/lists/* 44 | -------------------------------------------------------------------------------- /2022.06/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2022.06.1 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 | -------------------------------------------------------------------------------- /2022.07/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:current-22.04 6 | 7 | LABEL maintainer="Community & Partner Engineering Team " 8 | 9 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 10 | python3-pip \ 11 | rsync \ 12 | && \ 13 | sudo rm -rf /var/lib/apt/lists/* && \ 14 | 15 | # Setup Ansible 16 | pip install ansible && \ 17 | pip cache purge && \ 18 | 19 | # Setup Packer & Terraform 20 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 21 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 22 | 23 | # Setup Salt 24 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 26 | 27 | # Setup Kubectl 28 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 29 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 30 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 31 | 32 | # Setup nFPM 33 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 34 | 35 | # Install tools from added Apt repos 36 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 37 | kubectl \ 38 | nfpm \ 39 | packer \ 40 | salt-master \ 41 | terraform \ 42 | && \ 43 | sudo rm -rf /var/lib/apt/lists/* 44 | -------------------------------------------------------------------------------- /2022.07/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2022.07.1 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 | -------------------------------------------------------------------------------- /2022.08/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:current-22.04 6 | 7 | LABEL maintainer="Community & Partner Engineering Team " 8 | 9 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 10 | python3-pip \ 11 | rsync \ 12 | && \ 13 | sudo rm -rf /var/lib/apt/lists/* && \ 14 | 15 | # Setup Ansible 16 | pip install ansible && \ 17 | pip cache purge && \ 18 | 19 | # Setup Packer & Terraform 20 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 21 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 22 | 23 | # Setup Salt 24 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 26 | 27 | # Setup Kubectl 28 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 29 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 30 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 31 | 32 | # Setup nFPM 33 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 34 | 35 | # Install tools from added Apt repos 36 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 37 | kubectl \ 38 | nfpm \ 39 | packer \ 40 | salt-master \ 41 | terraform \ 42 | && \ 43 | sudo rm -rf /var/lib/apt/lists/* 44 | -------------------------------------------------------------------------------- /2022.08/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2022.08.1 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 | -------------------------------------------------------------------------------- /2022.09/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.09 6 | 7 | LABEL maintainer="Community & Partner Engineering Team " 8 | 9 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 10 | python3-pip \ 11 | rsync \ 12 | && \ 13 | sudo rm -rf /var/lib/apt/lists/* && \ 14 | 15 | # Setup Ansible 16 | pip install ansible && \ 17 | pip cache purge && \ 18 | 19 | # Setup Packer & Terraform 20 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 21 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 22 | 23 | # Setup Salt 24 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 26 | 27 | # Setup Kubectl 28 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 29 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 30 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 31 | 32 | # Setup nFPM 33 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 34 | 35 | # Install tools from added Apt repos 36 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 37 | kubectl \ 38 | nfpm \ 39 | packer \ 40 | salt-master \ 41 | terraform \ 42 | && \ 43 | sudo rm -rf /var/lib/apt/lists/* 44 | -------------------------------------------------------------------------------- /2022.09/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2022.09.1 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 | -------------------------------------------------------------------------------- /2022.10/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:2022.10 9 | 10 | LABEL maintainer="Community & Partner Engineering Team " 11 | 12 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 13 | python3-pip \ 14 | rsync \ 15 | && \ 16 | sudo rm -rf /var/lib/apt/lists/* && \ 17 | 18 | # Setup Ansible 19 | pip install ansible && \ 20 | pip cache purge && \ 21 | 22 | # Setup Packer & Terraform 23 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 24 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 25 | 26 | # Setup Salt 27 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 28 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 29 | 30 | # Setup Kubectl 31 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 32 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 33 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 34 | 35 | # Setup nFPM 36 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 37 | 38 | # Install tools from added Apt repos 39 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 40 | kubectl \ 41 | nfpm \ 42 | packer \ 43 | salt-master \ 44 | terraform \ 45 | && \ 46 | sudo rm -rf /var/lib/apt/lists/* 47 | -------------------------------------------------------------------------------- /2022.10/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2022.10.1 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 | -------------------------------------------------------------------------------- /2022.11/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 | # Using November release to include OpenSSL CVE fixes. 9 | FROM cimg/base:2022.11 10 | 11 | LABEL maintainer="Community & Partner Engineering Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 25 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 26 | 27 | # Setup Salt 28 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 29 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 30 | 31 | # Setup Kubectl 32 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 33 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 34 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 35 | 36 | # Setup nFPM 37 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 38 | 39 | # Install tools from added Apt repos 40 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 41 | kubectl \ 42 | nfpm \ 43 | packer \ 44 | salt-master \ 45 | terraform \ 46 | && \ 47 | sudo rm -rf /var/lib/apt/lists/* 48 | -------------------------------------------------------------------------------- /2022.11/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2022.11.1 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 | -------------------------------------------------------------------------------- /2023.01/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 | FROM cimg/base:2023.01 10 | 11 | LABEL maintainer="Community & Partner Engineering Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 25 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 26 | 27 | # Setup Salt 28 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 29 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 30 | 31 | # Setup Kubectl 32 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 33 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 34 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 35 | 36 | # Setup nFPM 37 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 38 | 39 | # Install tools from added Apt repos 40 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 41 | kubectl \ 42 | nfpm \ 43 | packer \ 44 | salt-master \ 45 | terraform \ 46 | && \ 47 | sudo rm -rf /var/lib/apt/lists/* 48 | -------------------------------------------------------------------------------- /2023.01/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2023.01.1 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 | -------------------------------------------------------------------------------- /2023.02/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 | FROM cimg/base:2023.01 10 | 11 | LABEL maintainer="Community & Partner Engineering Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 25 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 26 | 27 | # Setup Salt 28 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 29 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 30 | 31 | # Setup Kubectl 32 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 33 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 34 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 35 | 36 | # Setup nFPM 37 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 38 | 39 | # Install tools from added Apt repos 40 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 41 | kubectl \ 42 | nfpm \ 43 | packer \ 44 | salt-master \ 45 | terraform \ 46 | && \ 47 | sudo rm -rf /var/lib/apt/lists/* 48 | -------------------------------------------------------------------------------- /2023.02/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2023.02.1 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 | -------------------------------------------------------------------------------- /2023.03/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 | FROM cimg/base:2023.01 10 | 11 | LABEL maintainer="Community & Partner Engineering Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 25 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 26 | 27 | # Setup Salt 28 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 29 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 30 | 31 | # Setup Kubectl 32 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 33 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 34 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 35 | 36 | # Setup nFPM 37 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 38 | 39 | # Install Helm 40 | HELM_VER=3.11.1 && \ 41 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-amd64.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-amd64/helm && \ 42 | helm version && \ 43 | 44 | # Install tools from added Apt repos 45 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 46 | kubectl \ 47 | nfpm \ 48 | packer \ 49 | salt-master \ 50 | terraform \ 51 | && \ 52 | sudo rm -rf /var/lib/apt/lists/* 53 | -------------------------------------------------------------------------------- /2023.03/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2023.03.1 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 | -------------------------------------------------------------------------------- /2023.04/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 | FROM cimg/base:2023.04 10 | 11 | LABEL maintainer="Community & Partner Engineering Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 25 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 26 | 27 | # Setup Salt 28 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 29 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 30 | 31 | # Setup Kubectl 32 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 33 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 34 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 35 | 36 | # Setup nFPM 37 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 38 | 39 | # Install Helm 40 | HELM_VER=3.11.1 && \ 41 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-amd64.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-amd64/helm && \ 42 | helm version && \ 43 | 44 | # Install tools from added Apt repos 45 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 46 | kubectl \ 47 | nfpm \ 48 | packer \ 49 | salt-master \ 50 | terraform \ 51 | && \ 52 | sudo rm -rf /var/lib/apt/lists/* 53 | -------------------------------------------------------------------------------- /2023.04/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2023.04.1 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 | -------------------------------------------------------------------------------- /2023.05/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 | FROM cimg/base:2023.04 10 | 11 | LABEL maintainer="Community & Partner Engineering Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - && \ 25 | sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" && \ 26 | 27 | # Setup Salt 28 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 29 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 30 | 31 | # Setup Kubectl 32 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 33 | sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && \ 34 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 35 | 36 | # Setup nFPM 37 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 38 | 39 | # Install Helm 40 | HELM_VER=3.11.1 && \ 41 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-amd64.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-amd64/helm && \ 42 | helm version && \ 43 | 44 | # Install tools from added Apt repos 45 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 46 | kubectl \ 47 | nfpm \ 48 | packer \ 49 | salt-master \ 50 | terraform \ 51 | && \ 52 | sudo rm -rf /var/lib/apt/lists/* 53 | -------------------------------------------------------------------------------- /2023.05/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2023.05.1 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 | -------------------------------------------------------------------------------- /2023.06/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 | FROM cimg/base:2023.04 10 | 11 | LABEL maintainer="Community & Partner Engineering Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \ 26 | 27 | # Setup Salt 28 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest/salt-archive-keyring.gpg && \ 29 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/ubuntu/20.04/amd64/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 30 | 31 | # Setup Kubectl 32 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 33 | sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg && \ 34 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 35 | 36 | # Setup nFPM 37 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 38 | 39 | # Install Helm 40 | HELM_VER=3.11.1 && \ 41 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-amd64.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-amd64/helm && \ 42 | helm version && \ 43 | 44 | # Install tools from added Apt repos 45 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 46 | kubectl \ 47 | nfpm \ 48 | packer \ 49 | salt-master \ 50 | terraform \ 51 | && \ 52 | sudo rm -rf /var/lib/apt/lists/* 53 | -------------------------------------------------------------------------------- /2023.06/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2023.06.1 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 | -------------------------------------------------------------------------------- /2023.07/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 | FROM cimg/base:2023.07 10 | 11 | LABEL maintainer="Community & Partner Engineering Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \ 26 | 27 | # Setup Salt 28 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 29 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/${ARCH}/latest/salt-archive-keyring.gpg && \ 30 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=${ARCH}] https://repo.saltproject.io/py3/ubuntu/20.04/${ARCH}/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 31 | 32 | # Setup Kubectl 33 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 34 | sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg && \ 35 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 36 | 37 | # Setup nFPM 38 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 39 | 40 | # Install Helm 41 | HELM_VER=3.12.1 && \ 42 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-${ARCH}.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-${ARCH}/helm && \ 43 | helm version && \ 44 | 45 | # Install tools from added Apt repos 46 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 47 | kubectl \ 48 | nfpm \ 49 | packer \ 50 | salt-master \ 51 | terraform \ 52 | && \ 53 | sudo rm -rf /var/lib/apt/lists/* 54 | -------------------------------------------------------------------------------- /2023.07/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2023.07.1 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 | -------------------------------------------------------------------------------- /2023.08/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 | FROM cimg/base:2023.07 10 | 11 | LABEL maintainer="Community & Partner Engineering Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \ 26 | 27 | # Setup Salt 28 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 29 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/${ARCH}/latest/salt-archive-keyring.gpg && \ 30 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=${ARCH}] https://repo.saltproject.io/py3/ubuntu/20.04/${ARCH}/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 31 | 32 | # Setup Kubectl 33 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 34 | sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg && \ 35 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 36 | 37 | # Setup nFPM 38 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 39 | 40 | # Install Helm 41 | HELM_VER=3.12.1 && \ 42 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-${ARCH}.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-${ARCH}/helm && \ 43 | helm version && \ 44 | 45 | # Install tools from added Apt repos 46 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 47 | kubectl \ 48 | nfpm \ 49 | packer \ 50 | salt-master \ 51 | terraform \ 52 | && \ 53 | sudo rm -rf /var/lib/apt/lists/* 54 | -------------------------------------------------------------------------------- /2023.08/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2023.08.1 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 | -------------------------------------------------------------------------------- /2023.09/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 | FROM cimg/base:2023.07 10 | 11 | LABEL maintainer="Community & Partner Engineering Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \ 26 | 27 | # Setup Salt 28 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 29 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/${ARCH}/latest/salt-archive-keyring.gpg && \ 30 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=${ARCH}] https://repo.saltproject.io/py3/ubuntu/20.04/${ARCH}/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 31 | 32 | # Setup Kubectl 33 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 34 | sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg && \ 35 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 36 | 37 | # Setup nFPM 38 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 39 | 40 | # Install Helm 41 | HELM_VER=3.12.3 && \ 42 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-${ARCH}.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-${ARCH}/helm && \ 43 | helm version && \ 44 | 45 | # Install tools from added Apt repos 46 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 47 | kubectl \ 48 | nfpm \ 49 | packer \ 50 | salt-master \ 51 | terraform \ 52 | && \ 53 | sudo rm -rf /var/lib/apt/lists/* 54 | -------------------------------------------------------------------------------- /2023.09/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2023.09.1 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 | -------------------------------------------------------------------------------- /2023.12/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 | FROM cimg/base:2023.10 10 | 11 | LABEL maintainer="CircleCI Execution Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \ 26 | 27 | # Setup Salt 28 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 29 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/${ARCH}/latest/salt-archive-keyring.gpg && \ 30 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=${ARCH}] https://repo.saltproject.io/py3/ubuntu/20.04/${ARCH}/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 31 | 32 | # Setup Kubectl 33 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 34 | sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg && \ 35 | echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 36 | 37 | # Setup nFPM 38 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 39 | 40 | # Install Helm 41 | HELM_VER=3.13.3 && \ 42 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-${ARCH}.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-${ARCH}/helm && \ 43 | helm version && \ 44 | 45 | # Install tools from added Apt repos 46 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 47 | kubectl \ 48 | nfpm \ 49 | packer \ 50 | salt-master \ 51 | terraform \ 52 | && \ 53 | sudo rm -rf /var/lib/apt/lists/* 54 | -------------------------------------------------------------------------------- /2023.12/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2023.12.1 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 | -------------------------------------------------------------------------------- /2024.03/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 | FROM cimg/base:2024.02 10 | 11 | LABEL maintainer="CircleCI Execution Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \ 26 | 27 | # Setup Salt 28 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 29 | sudo curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/ubuntu/20.04/${ARCH}/latest/salt-archive-keyring.gpg && \ 30 | echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=${ARCH}] https://repo.saltproject.io/py3/ubuntu/20.04/${ARCH}/latest focal main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 31 | 32 | # Setup Kubectl 33 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 34 | sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-apt-keyring.gpg && \ 35 | echo 'deb [signed-by=/usr/share/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 36 | 37 | # Setup nFPM 38 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 39 | 40 | # Install Helm 41 | HELM_VER=3.14.2 && \ 42 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-${ARCH}.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-${ARCH}/helm && \ 43 | helm version && \ 44 | 45 | # Install tools from added Apt repos 46 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 47 | kubectl \ 48 | nfpm \ 49 | packer \ 50 | salt-master \ 51 | terraform \ 52 | && \ 53 | sudo rm -rf /var/lib/apt/lists/* 54 | -------------------------------------------------------------------------------- /2024.03/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2024.03.1 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 | -------------------------------------------------------------------------------- /2024.08/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 | FROM cimg/base:2024.07 10 | 11 | LABEL maintainer="CircleCI Execution Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \ 26 | 27 | # Setup Salt 28 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 29 | sudo curl -fsSL -o /etc/apt/keyrings/salt-archive-keyring-2023.gpg https://repo.saltproject.io/salt/py3/ubuntu/22.04/${ARCH}/SALT-PROJECT-GPG-PUBKEY-2023.gpg && \ 30 | echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg arch=${ARCH}] https://repo.saltproject.io/salt/py3/ubuntu/22.04/${ARCH}/latest jammy main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 31 | 32 | # Setup Kubectl 33 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 34 | sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-apt-keyring.gpg && \ 35 | echo 'deb [signed-by=/usr/share/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 36 | 37 | # Setup nFPM 38 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 39 | 40 | # Install Helm 41 | HELM_VER=3.15.4 && \ 42 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-${ARCH}.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-${ARCH}/helm && \ 43 | helm version && \ 44 | 45 | # Install tools from added Apt repos 46 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 47 | kubectl \ 48 | nfpm \ 49 | packer \ 50 | salt-master \ 51 | terraform \ 52 | && \ 53 | sudo rm -rf /var/lib/apt/lists/* 54 | -------------------------------------------------------------------------------- /2024.08/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2024.08.1 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 | -------------------------------------------------------------------------------- /2024.11/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 | FROM cimg/base:2024.07 10 | 11 | LABEL maintainer="CircleCI Execution Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | \ 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | \ 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \ 26 | \ 27 | # Setup Salt 28 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 29 | curl -fsSL https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public | sudo tee /etc/apt/keyrings/salt-archive-keyring-2023.pgp && \ 30 | echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.pgp arch=${ARCH}] https://packages.broadcom.com/artifactory/saltproject-deb/ stable main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 31 | \ 32 | # Setup Kubectl 33 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 34 | sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-apt-keyring.gpg && \ 35 | echo 'deb [signed-by=/usr/share/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 36 | \ 37 | # Setup nFPM 38 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 39 | \ 40 | # Install Helm 41 | HELM_VER=3.16.2 && \ 42 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-${ARCH}.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-${ARCH}/helm && \ 43 | helm version && \ 44 | \ 45 | # Install tools from added Apt repos 46 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 47 | kubectl \ 48 | nfpm \ 49 | packer \ 50 | salt-master \ 51 | terraform \ 52 | && \ 53 | sudo rm -rf /var/lib/apt/lists/* 54 | -------------------------------------------------------------------------------- /2024.11/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2024.11.1 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 | -------------------------------------------------------------------------------- /2025.01/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 | FROM cimg/base:2025.01 10 | 11 | LABEL maintainer="CircleCI Execution Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | \ 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | \ 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \ 26 | \ 27 | # Setup Salt 28 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 29 | curl -fsSL https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public | sudo tee /etc/apt/keyrings/salt-archive-keyring-2023.pgp && \ 30 | echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.pgp arch=${ARCH}] https://packages.broadcom.com/artifactory/saltproject-deb/ stable main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 31 | \ 32 | # Setup Kubectl 33 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 34 | sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-apt-keyring.gpg && \ 35 | echo 'deb [signed-by=/usr/share/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 36 | \ 37 | # Setup nFPM 38 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 39 | \ 40 | # Install Helm 41 | HELM_VER=3.17.0 && \ 42 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-${ARCH}.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-${ARCH}/helm && \ 43 | helm version && \ 44 | \ 45 | # Install tools from added Apt repos 46 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 47 | kubectl \ 48 | nfpm \ 49 | packer \ 50 | salt-master \ 51 | terraform \ 52 | && \ 53 | sudo rm -rf /var/lib/apt/lists/* 54 | -------------------------------------------------------------------------------- /2025.01/node/Dockerfile: -------------------------------------------------------------------------------- 1 | # vim:set ft=dockerfile: 2 | 3 | FROM cimg/deploy:2025.01.1 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 | 9 | FROM cimg/%%PARENT%%:2025.01 10 | 11 | LABEL maintainer="CircleCI Execution Team " 12 | 13 | RUN sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 14 | python3-pip \ 15 | rsync \ 16 | && \ 17 | sudo rm -rf /var/lib/apt/lists/* && \ 18 | \ 19 | # Setup Ansible 20 | pip install ansible && \ 21 | pip cache purge && \ 22 | \ 23 | # Setup Packer & Terraform 24 | curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && \ 25 | echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list && \ 26 | \ 27 | # Setup Salt 28 | [[ $(uname -m) == "x86_64" ]] && ARCH="amd64" || ARCH="arm64" && \ 29 | curl -fsSL https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public | sudo tee /etc/apt/keyrings/salt-archive-keyring-2023.pgp && \ 30 | echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.pgp arch=${ARCH}] https://packages.broadcom.com/artifactory/saltproject-deb/ stable main" | sudo tee /etc/apt/sources.list.d/salt.list && \ 31 | \ 32 | # Setup Kubectl 33 | # You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.23 client can communicate with v1.22, v1.23, and v1.24 control planes. 34 | sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-apt-keyring.gpg && \ 35 | echo 'deb [signed-by=/usr/share/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ 36 | \ 37 | # Setup nFPM 38 | echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list && \ 39 | \ 40 | # Install Helm 41 | HELM_VER=3.17.0 && \ 42 | curl -sSL "https://get.helm.sh/helm-v${HELM_VER}-linux-${ARCH}.tar.gz" | sudo tar -xz --strip-components=1 -C /usr/local/bin linux-${ARCH}/helm && \ 43 | helm version && \ 44 | \ 45 | # Install tools from added Apt repos 46 | sudo apt-get update && sudo apt-get install --yes --no-install-recommends \ 47 | kubectl \ 48 | nfpm \ 49 | packer \ 50 | salt-master \ 51 | terraform \ 52 | && \ 53 | sudo rm -rf /var/lib/apt/lists/* 54 | -------------------------------------------------------------------------------- /GEN-CHECK: -------------------------------------------------------------------------------- 1 | GEN_CHECK=(2025.01.1) 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright ©2022 CircleCI 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 |

6 |

CircleCI Convenience Images => Deploy

7 |

A Continuous Delivery & Deployment focused Docker image built to run on CircleCI

8 |
9 | 10 | [![CircleCI Build Status](https://circleci.com/gh/CircleCI-Public/cimg-deploy.svg?style=shield)](https://circleci.com/gh/CircleCI-Public/cimg-deploy) [![Software License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/CircleCI-Public/cimg-deploy/main/LICENSE) [![Docker Pulls](https://img.shields.io/docker/pulls/cimg/deploy)](https://hub.docker.com/r/cimg/deploy) [![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-deploy) 11 | 12 | `cimg/deploy` is a Docker image created by CircleCI with continuous delivery and deployment pipelines in mind. 13 | Each tag is a date-based snapshot of many deployment related tools such as `kubectl`, `terraform`, and much more. 14 | 15 | If you find this image useful, but also want tools specific to your cloud provider, please see: 16 | - [cimg/aws](https://github.com/CircleCI-Public/cimg-aws) 17 | - [cimg/gcp](https://github.com/CircleCI-Public/cimg-gcp) 18 | - [cimg/azure](https://github.com/CircleCI-Public/cimg-azure) 19 | 20 | ## Support Policy 21 | 22 | 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. 23 | 24 | ## Table of Contents 25 | 26 | - [Getting Started](#getting-started) 27 | - [How This Image Works](#how-this-image-works) 28 | - [Development](#development) 29 | - [Contributing](#contributing) 30 | - [Additional Resources](#additional-resources) 31 | - [License](#license) 32 | 33 | 34 | ## Getting Started 35 | 36 | This image can be used with the CircleCI `docker` executor. 37 | For example: 38 | 39 | ```yaml 40 | jobs: 41 | build: 42 | docker: 43 | - image: cimg/deploy:2022.06.1 44 | steps: 45 | - checkout 46 | - run: echo "Do things" 47 | ``` 48 | 49 | In the above example, the CircleCI Deploy Docker image is used for the primary container. 50 | More specifically, the tag `2022.06.1` is used meaning this is the 1st April 2022 snapshot. 51 | You can now use all of the tools pre-installed in this image in this job. 52 | 53 | 54 | ## How This Image Works 55 | 56 | This image is published on a monthly basis. 57 | Each month, we'll update the main tools to newer versions as they are available. 58 | 59 | ### Variants 60 | 61 | Variant images typically contain the same base software, but with a few additional modifications. 62 | 63 | #### Node.js 64 | 65 | The Node.js variant is the same Deploy image but with Node.js also installed. 66 | The Node.js variant will be used by appending `-node` to the end of an existing `cimg/deploy` tag. 67 | 68 | ```yaml 69 | jobs: 70 | build: 71 | docker: 72 | - image: cimg/deploy:2022.06.1-node 73 | steps: 74 | - checkout 75 | - run: node --version 76 | ``` 77 | 78 | ### Tagging Scheme 79 | 80 | This image has the following tagging scheme: 81 | 82 | ``` 83 | cimg/deploy:YYYY.MM.I[-variant] 84 | ``` 85 | 86 | The tag will be `YYYY.MM.I` where YYYY is the 4 digit year, MM is the 2 digit month, and I is the nth release of that month. 87 | The last piece there typically will only change when we need to patch an image for that month. 88 | 89 | `[-variant]` - Variant tags, if available, can optionally be used. 90 | For example the Node.js variant is available, it can be used like this: `cimg/deploy:2022.06.1-node`. 91 | 92 | ## Development 93 | 94 | Images can be built and run locally with this repository. 95 | This has the following requirements: 96 | 97 | - local machine of Linux (Ubuntu tested) or macOS 98 | - modern version of Bash (v4+) 99 | - modern version of Docker Engine (v20.10+) 100 | 101 | ### Cloning For Community Users (no write access to this repository) 102 | 103 | Fork this repository on GitHub. 104 | 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. 105 | It would look something like this: 106 | 107 | ```bash 108 | git clone --recurse-submodules 109 | ``` 110 | 111 | If you missed this step and already cloned, you can just run `git submodule update --init` to populate the submodule. 112 | Then you can optionally add this repo as an upstream to your own: 113 | 114 | ```bash 115 | git remote add upstream https://github.com/CircleCI-Public/cimg-deploy.git 116 | ``` 117 | 118 | ### Cloning For Maintainers ( you have write access to this repository) 119 | 120 | Clone the project with the following command so that you populate the submodule: 121 | 122 | ```bash 123 | git clone --recurse-submodules git@github.com:CircleCI-Public/cimg-deploy.git 124 | ``` 125 | 126 | ### Generating Dockerfiles 127 | 128 | Dockerfiles can be generated by using the `gen-dockerfiles.sh` script. 129 | For example, you would run the following from the root of the repo: 130 | 131 | ```bash 132 | ./shared/gen-dockerfiles.sh 2022.06.1 133 | ``` 134 | 135 | The generated Dockerfile will be located at `./2022.06/Dockefile`. 136 | To build this image locally and try it out, you can run the following: 137 | 138 | ```bash 139 | cd 2022.06 140 | docker build -t test/deploy:2022.06.1 . 141 | docker run -it test/deploy:2022.06.1 bash 142 | ``` 143 | 144 | ### Building the Dockerfiles 145 | 146 | To build the Docker images locally as this repository does, you'll want to run the `build-images.sh` script: 147 | 148 | ```bash 149 | ./build-images.sh 150 | ``` 151 | 152 | This would need to be run after generating the Dockerfiles first. 153 | When releasing proper images for CircleCI, this script is run from a CircleCI pipeline and not locally. 154 | 155 | ### Publishing Official Images (for Maintainers only) 156 | 157 | 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. 158 | A release script is included to make this process easier. 159 | To make a proper release for this image, let's use the fake date April 1991, you would run the following from the repo root: 160 | 161 | ```bash 162 | ./shared/release.sh 1991.04.2 163 | ``` 164 | 165 | This will automatically create a new Git branch, generate the Dockerfile(s), stage the changes, commit them, and push them to GitHub. 166 | The commit message will end with the string `[release]`. 167 | This string is used by CircleCI to know when to push images to Docker Hub. 168 | All that would need to be done after that is: 169 | 170 | - wait for build to pass on CircleCI 171 | - review the PR 172 | - merge the PR 173 | 174 | The main branch build will then publish a release. 175 | 176 | ### Incorporating Changes 177 | 178 | How changes are incorporated into this image depends on where they come from. 179 | 180 | **build scripts** - Changes within the `./shared` submodule happen in its [own repository](https://github.com/CircleCI-Public/cimg-shared). 181 | For those changes to affect this image, the submodule needs to be updated. 182 | Typically like this: 183 | 184 | ```bash 185 | cd shared 186 | git pull 187 | cd .. 188 | git add shared 189 | git commit -m "Updating submodule for foo." 190 | ``` 191 | 192 | **parent image** - By design, when changes happen to a parent image, they don't appear in existing Deploy images. 193 | This is to aid in "determinism" and prevent breaking customer builds. 194 | New Deploy images will automatically pick up the changes. 195 | 196 | If you _really_ want to publish changes from a parent image into the Deploy image, you have to build a specific image version as if it was a new image. 197 | This will create a new Dockerfile and once published, a new image. 198 | 199 | **Deploy image specific changes** - Editing the `Dockerfile.template` file in this repo will modify the Deploy image specifically. 200 | Don't forget that to see any of these changes locally, the `gen-dockerfiles.sh` script will need to be run again (see above). 201 | 202 | ## Contributing 203 | 204 | We encourage [issues](https://github.com/CircleCI-Public/cimg-deploy/issues) and [pull requests](https://github.com/CircleCI-Public/cimg-deploy/pulls) against this repository. 205 | 206 | 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. 207 | 208 | ## Additional Resources 209 | 210 | [CircleCI Docs](https://circleci.com/docs/) - The official CircleCI Documentation website. 211 | [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. 212 | It will list all of the keys and values supported in `.circleci/config.yml`. 213 | [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. 214 | 215 | ## License 216 | 217 | This repository is licensed under the MIT license. 218 | The license can be found [here](./LICENSE). 219 | -------------------------------------------------------------------------------- /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 2025.01/Dockerfile -t cimg/deploy:2025.01.1 -t cimg/deploy:2025.01 --push . 8 | docker buildx build --platform=linux/amd64,linux/arm64 --file 2025.01/node/Dockerfile -t cimg/deploy:2025.01.1-node -t cimg/deploy:2025.01-node --push . 9 | -------------------------------------------------------------------------------- /deployFeed.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [ -f shared/automated-updates.sh ]; then 4 | source shared/automated-updates.sh 5 | else 6 | echo "Check if submodule was loaded; automated-updates.sh is missing" 7 | exit 1 8 | fi 9 | 10 | templateFile="Dockerfile.template" 11 | HELM_URL="https://api.github.com/repos/helm/helm/releases" 12 | VERSION=$( date +%Y.%m ) 13 | 14 | function getHelm() { 15 | local url=$1 16 | local expression=$2 17 | version=$(curl -s "$url" | jq -r ".[] | select(.tag_name | test(\"$expression\")) | .tag_name" | head -1) 18 | 19 | generateVersions "$(cut -d "v" -f2 <<< "${version}")" 20 | generateSearchTerms "HELM_VER=" "$templateFile" '&\\ ' 21 | replaceVersions "HELM_VER=" "$SEARCH_TERM" "true" 22 | } 23 | 24 | function deployFeed() { 25 | replaceDatedTags "$templateFile" "" 26 | getHelm "$HELM_URL" "^v[0-9]+(.[0-9]+)*$" 27 | ./shared/release.sh "$VERSION.1" 28 | } 29 | 30 | deployFeed "$templateFile" 31 | -------------------------------------------------------------------------------- /img/circle-circleci.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 24 | 49 | 51 | 52 | 54 | image/svg+xml 55 | 57 | 58 | 59 | 60 | 61 | 66 | 72 | 78 | 84 | 90 | 96 | 102 | 108 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /img/circle-docker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 23 | 25 | 28 | 35 | 39 | 40 | 41 | 44 | 45 | 70 | 72 | 73 | 75 | image/svg+xml 76 | 78 | 79 | 80 | 81 | 82 | 87 | 93 | 99 | 105 | 111 | 117 | 123 | 129 | 132 | 134 | 138 | 139 | 140 | 141 | 143 | 152 | 153 | 154 | 155 | 163 | 164 | 165 | 166 | 176 | 177 | -------------------------------------------------------------------------------- /manifest: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | repository=deploy 4 | parent=base 5 | variants=(node) 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 | --------------------------------------------------------------------------------