Skip to content

Commit da430d9

Browse files
authored
[OPTMZT-75]: Setup image brownout docs (#151)
1 parent f2bbb1f commit da430d9

File tree

4 files changed

+133
-1
lines changed

4 files changed

+133
-1
lines changed

docs/guides/modules/ROOT/nav.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
*** xref:execution-managed:remote-docker-images-support-policy.adoc[Remote Docker images support policy]
102102
*** xref:execution-managed:windows-images-support-policy.adoc[Windows images support policy]
103103
*** xref:execution-managed:xcode-policy.adoc[Xcode image policy]
104+
*** xref:execution-managed:machine-convenience-image-lifecycle.adoc[CircleCI image lifecycle: A complete guide]
104105
105106
* xref:execution-runner:index.adoc[Execute jobs on self-hosted runners]
106107
** xref:execution-runner:runner-overview.adoc[Self-hosted runner overview]
@@ -302,6 +303,7 @@
302303
** Config tools
303304
*** xref:toolkit:circleci-config-sdk.adoc[Config SDK]
304305
*** xref:orbs:author:orb-development-kit.adoc[Orb development kit]
306+
*** xref:toolkit:circleci-image-updater.adoc[Image Updater]
305307
** Example projects and configs
306308
*** xref:toolkit:examples-and-guides-overview.adoc[Examples and guides overview]
307309
*** xref:toolkit:sample-config.adoc[Sample config.yml files]
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
= CircleCI machine/convenience image lifecycle: A complete guide
2+
:page-platform: Cloud
3+
:page-description: CircleCI Machine/Convenience Image Lifecycle
4+
:experimental:
5+
6+
CircleCI prioritizes support for the most recent stable releases of the following image families:
7+
8+
* Linux VM
9+
* Android
10+
* Windows
11+
* Remote Docker
12+
* MacOS
13+
* CUDA
14+
15+
When a new major version of an image is available, CircleCI will begin the deprecation process of the oldest version supported.
16+
17+
[#image-deprecation-process]
18+
== Image deprecation process
19+
20+
CircleCI machine image deprecations are announced via link:https://circleci.com/changelog/[changelog], email, and link:https://discuss.circleci.com/c/announcements/39[Discuss] post. Announcements include the list of affected images, scheduled brownout dates and durations, and end of life date. Scheduled brownout dates will also be listed on the CircleCI link:https://status.circleci.com/[status page].
21+
22+
[#image-brownouts]
23+
== Image brownouts
24+
25+
A CircleCI machine image brownout is a temporary, planned period during which deprecated virtual machine images are intentionally made unavailable on the CircleCI platform. During a brownout, CI/CD jobs that attempt to use deprecated images will fail, giving users advance notice of upcoming permanent image removals.
26+
27+
Machine image brownouts serve several critical functions in CircleCI's image lifecycle management:
28+
29+
* **Warning Mechanism**: They act as a highly visible alert that certain images are approaching end-of-life (EOL).
30+
* **Dependency Discovery**: They help teams identify hidden dependencies on deprecated images, particularly through orbs or inherited configurations.
31+
* **Preventing Major Service Disruption**: A short, planned brownout allows teams to update configurations before permanent image removal would cause extended workflow failures.
32+
33+
During a brownout, jobs that use deprecated images will fail with the message "This job was rejected because the resource class is unavailable".
34+
35+
If you need to get your workflows running during an active brownout, update your CircleCI config file to use a supported image:
36+
37+
[,yaml]
38+
----
39+
# Change this:
40+
machine:
41+
image: ubuntu-2004:202201-01 # Deprecated image
42+
43+
# To this:
44+
machine:
45+
image: ubuntu-2004:current # or "default" for the latest supported version
46+
----
47+
48+
**For Remote Docker**: Update the version parameter:
49+
50+
[,yaml]
51+
----
52+
- setup_remote_docker:
53+
version: docker24 # Use a supported version
54+
----
55+
56+
=== Tips to minimize brownout impact
57+
58+
1. **Use dynamic image references**: Instead of pinning to specific dated versions, use the following tags:
59+
** `default`: Always points to the recommended stable version
60+
** `current`: Points to the latest stable version
61+
** `edge`: Points to the newest release (may include experimental features)
62+
2. **Regularly update orbs**: If you use CircleCI orbs, ensure they are updated to current versions. Outdated orbs may specify deprecated images internally.
63+
3. **Check hidden dependencies**: Inspect all workflows, including those triggered by external events or scheduled runs.
64+
4. **Subscribe to deprecation notices**: Follow the CircleCI Discuss forum's link:https://discuss.circleci.com/c/announcements/39[Announcements] category for announcements.
65+
5. **Use the image updater tool**: CircleCI provides link:https://github.com/CircleCI-Public/image-updater[a tool] to help identify and update deprecated images.
66+
67+
[#brownout-faq]
68+
== FAQ About CircleCI Brownouts
69+
**Q: How long do brownouts typically last?**
70+
71+
A: Most brownouts last from 10 minutes to 24 hours, depending on the image type and its usage across the platform.
72+
73+
**Q: Will CircleCI notify me before a brownout occurs?**
74+
75+
A: Yes, CircleCI sends email notifications to organizations whose projects use deprecated images and posts announcements on their Discuss forum.
76+
77+
**Q: What happens if I don't update my images before the EOL date?**
78+
79+
A: After the EOL date, deprecated images will be permanently removed, and any jobs attempting to use them will fail until configurations are updated.
80+
81+
**Q: How can I test my workflows with new images before a brownout?**
82+
83+
A: Create a branch with updated configuration files, then push and test this branch before merging changes to your main branch.
84+
85+
**Q: Are there any costs associated with updating to newer images?**
86+
87+
A: There's no additional cost for using newer CircleCI images, though you should test thoroughly as newer images may have updated software versions that could affect your workflows.
88+
89+
[#additional-resources]
90+
== Additional resources
91+
92+
- xref:guides:execution-managed:linux-vm-support-policy.adoc[CircleCI Linux VM Support Policy]
93+
- xref:guides:execution-managed:linux-cuda-images-support-policy.adoc[CircleCI CUDA Support Policy]
94+
- xref:guides:execution-managed:convenience-images-support-policy.adoc[CircleCI Convenience Image Support Policy]
95+
- xref:guides:execution-managed:android-images-support-policy.adoc[CircleCI Android Image Support Policy]
96+
- xref:guides:execution-managed:remote-docker-images-support-policy.adoc[CircleCI Remote Docker Image Support Policy]
97+
- xref:guides:execution-managed:windows-images-support-policy.adoc[CircleCI Windows Image Support Policy]
98+
- xref:guides:execution-managed:xcode-policy.adoc[CircleCI XCode Support Policy]
99+
- link:https://github.com/CircleCI-Public/image-updater[CircleCI Image Updater Tool]
100+
- link:https://discuss.circleci.com/c/announcements/notices/113[CircleCI Discuss Forum - Notices Category]
101+
- link:https://support.circleci.com/hc/en-us[CircleCI Support Center]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
= CircleCI Image Updater
2+
:page-platform: Cloud
3+
:page-description: The CircleCI tool to help customers update images in config.
4+
:experimental:
5+
6+
[#notice]
7+
== Notice
8+
9+
This is currently in ALPHA, and we are looking into improving experience for customers.
10+
11+
[#overview]
12+
== Overview
13+
14+
A link:https://github.com/CircleCI-Public/image-updater[script] to determine which deprecated machine images need to be changed within repositories across an entire organization.
15+
16+
Limitations:
17+
18+
* Only supports GitHub lookups
19+
* Will not find orb specific changes without being pointed at that specific orb config
20+
21+
[#contribute]
22+
== Contribute
23+
24+
The CircleCI Image Updater is open source, and contributions are welcome.

scripts/xref-mapping.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,11 @@
569569
"module": "execution-managed",
570570
"filename": "remote-docker-images-support-policy.adoc"
571571
},
572+
"machine-convenience-image-lifecycle": {
573+
"component": "guides",
574+
"module": "execution-managed",
575+
"filename": "machine-convenience-image-lifecycle.adoc"
576+
},
572577
"runner-faqs": {
573578
"component": "guides",
574579
"module": "execution-runner",
@@ -1524,4 +1529,4 @@
15241529
"module": "permissions-authentication",
15251530
"filename": "set-up-sso.adoc"
15261531
}
1527-
}
1532+
}

0 commit comments

Comments
 (0)