|
| 1 | += Resource class lifecycle process |
| 2 | + |
| 3 | +CircleCI periodically introduces new compute as "resource classes," consisting of new underlying compute infrastructure. As older compute infrastructure ages, CircleCI deprecates and retires it from the fleet. |
| 4 | + |
| 5 | +CircleCI announces resource class deprecations via the link:https://circleci.com/changelog/[changelog] and email. Announcements include the list of affected resource classes, scheduled brownout dates and durations, and end-of-life (EOL) date. |
| 6 | + |
| 7 | +Scheduled brownout dates are also listed on the link:https://status.circleci.com/[CircleCI status page]. |
| 8 | + |
| 9 | +== Resource class brownouts |
| 10 | + |
| 11 | +A CircleCI resource class brownout is a temporary, planned period during which deprecated resource classes are intentionally made unavailable on the CircleCI platform. |
| 12 | + |
| 13 | +During a brownout, CI/CD jobs that attempt to use deprecated resource classes fail, giving users advance notice of upcoming permanent removals. |
| 14 | + |
| 15 | +Resource class brownouts serve several critical functions: |
| 16 | + |
| 17 | +*Warning Mechanism*:: They act as a highly visible alert that certain resource classes are approaching end-of-life. |
| 18 | + |
| 19 | +*Dependency Discovery*:: They assist teams in identifying hidden dependencies on deprecated resource classes, especially through orbs or inherited configurations. |
| 20 | + |
| 21 | +*Preventing Major Service Disruption*:: A short, planned brownout allows teams to update configurations before permanent removal causes extended workflow failures. |
| 22 | + |
| 23 | +During a brownout, jobs that use deprecated resource classes fail with the message: "This job was rejected because the resource class is unavailable". |
| 24 | + |
| 25 | +== Responding to a brownout |
| 26 | + |
| 27 | +When a brownout occurs, you have two options: |
| 28 | + |
| 29 | +=== Option 1: Update your configuration (recommended) |
| 30 | + |
| 31 | +Update your link:/guides/execution-managed/resource-class-overview/[CircleCI config file] to use supported resource classes: |
| 32 | + |
| 33 | +*For Docker executor:* |
| 34 | + |
| 35 | +[source,yaml] |
| 36 | +---- |
| 37 | +# Change this: |
| 38 | +docker: |
| 39 | + - image: cimg/node:lts |
| 40 | + resource_class: old.medium # Deprecated resource class |
| 41 | +
|
| 42 | +# To this: |
| 43 | +docker: |
| 44 | + - image: cimg/node:lts |
| 45 | + resource_class: new.medium # Supported resource class |
| 46 | +---- |
| 47 | + |
| 48 | +*For machine executor:* |
| 49 | + |
| 50 | +[source,yaml] |
| 51 | +---- |
| 52 | +# Change this: |
| 53 | +machine: |
| 54 | + image: ubuntu-2204:current |
| 55 | + resource_class: old.medium # Deprecated resource class |
| 56 | +
|
| 57 | +# To this: |
| 58 | +machine: |
| 59 | + image: ubuntu-2204:current |
| 60 | + resource_class: new.medium # Supported resource class |
| 61 | +---- |
| 62 | + |
| 63 | +=== Option 2: Temporarily disable brownouts |
| 64 | + |
| 65 | +If you need immediate relief to restore workflows during an active brownout, you can temporarily disable brownouts. |
| 66 | + |
| 67 | +Navigate to *Organization Settings > Advanced > Enable resource class brownouts* and toggle the setting off. |
| 68 | + |
| 69 | +[IMPORTANT] |
| 70 | +==== |
| 71 | +Disabling brownouts is only a temporary solution. Access to deprecated resource classes ends by the final EOL date regardless of brownout settings. |
| 72 | +
|
| 73 | +You must update your configurations before the EOL date. |
| 74 | +==== |
| 75 | + |
| 76 | +== Tips to minimize brownout impact |
| 77 | + |
| 78 | +*Review resource class usage*:: Audit your resource class specifications to ensure you use actively supported options. Consider whether your workloads might benefit from link:/guides/execution-managed/resource-class-overview/[newer, more efficient resource classes]. |
| 79 | + |
| 80 | +*Update orbs*:: If you use CircleCI orbs, ensure you update them to current versions. Outdated orbs may specify deprecated resource classes internally. |
| 81 | + |
| 82 | +*Check hidden dependencies*:: Inspect all workflows, including those triggered by external events or scheduled runs, to identify all resource class usage. |
| 83 | + |
| 84 | +*Subscribe to deprecation notices*:: Follow the CircleCI changelog for deprecation announcements. |
| 85 | + |
| 86 | +*Test before EOL*:: Create a test branch with updated resource classes to validate performance and compatibility before the brownout period. |
| 87 | + |
| 88 | +== FAQ |
| 89 | + |
| 90 | +*Q: How long do brownouts typically last?*:: |
| 91 | +A: Most brownouts last from 10 minutes to 24 hours, depending on the resource class and its usage across the platform. |
| 92 | + |
| 93 | +*Q: Does CircleCI notify me before a resource class brownout occurs?*:: |
| 94 | +A: Yes, CircleCI sends email notifications to organizations whose projects use deprecated resource classes and posts announcements on the changelog. |
| 95 | + |
| 96 | +*Q: What happens if I don't update my configuration before the EOL date?*:: |
| 97 | +A: After the EOL date, deprecated resource classes are permanently removed. Any jobs attempting to use them fail until you update configurations. |
| 98 | + |
| 99 | +*Q: How can I test my workflows with new resource classes before a brownout?*:: |
| 100 | +A: Create a branch with updated configuration files, then push and test this branch before merging changes to your main branch. |
| 101 | + |
| 102 | +*Q: Are there any costs associated with updating to different resource classes?*:: |
| 103 | +A: Different resource classes have different pricing, so switching resource classes may affect your compute costs. Review the link:https://circleci.com/pricing/price-list/[pricing documentation] and test thoroughly to understand the impact on both cost and performance. |
| 104 | + |
| 105 | +*Q: How do I know which resource class to migrate to?*:: |
| 106 | +A: Deprecation announcements include recommended migration paths. |
| 107 | ++ |
| 108 | +Generally, you should choose a resource class that matches or exceeds the compute capacity of your deprecated class. |
0 commit comments