A freeze is written in a calendar and broken in a pipeline. Change Freeze reads the deployments waiting on a protected environment in GitHub, the change requests scheduled in ServiceNow, the freeze windows you declare, and the public holidays for the countries where your teams and customers are.
When a release overlaps a freeze, it proposes one of two things: hold the deployment until the window closes, or open an exception change request for a change manager to approve. The decision goes to the release channel in Slack. Once someone decides, the hold or the exception is applied to that one deployment, and both the deployment and the change request carry a comment saying which window, who decided, and when.
This is a reference listing. It documents what Fibric would read from Change Freeze and what it could propose, based on the vendor's published interfaces. Fibric builds it under a managed deployment when you request it; selecting it here installs nothing.
Inputs
Deployments waiting on a protected environment, as deployment_protection_rule events from GitHub, each with a deployment_callback_url
Deployments per repository through GET /repos/{owner}/{repo}/deployments, filtered by environment and ref, with production_environment
Pending environment approvals for a run through GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments
Change requests through GET /api/sn_chg_rest/change in ServiceNow: state, start_date, end_date, risk, approval, and conflict_status
Public holidays per country from Nager.Date at /api/v3/PublicHolidays/{year}/{countryCode}, with types, the global flag, and counties
Freeze windows you declare by environment and country, and the release channel's replies in Slack
Proposed actions
Target capability: propose holding a deployment by answering its deployment_callback_url with state rejected and a comment naming the freeze window
Target capability: propose releasing a held deployment with state approved, once an exception is granted, with the change number in the comment
Target capability: propose an exception change request through POST /api/sn_chg_rest/change, with start_date, end_date, and the release in the description
Target capability: propose a conflict check on that change through POST /api/sn_chg_rest/change/{sys_id}/conflict before the change manager decides
Target capability: propose a message to the release channel in Slack listing each held release, its window, and why the window exists
Proposed actions are target capabilities. Every action runs propose-first and needs a validated deployment and the appropriate permissions.
What you can build
Hold a production deploy over a holiday weekend
Nager.Date lists a Public holiday on Monday for the country where support sits. A Friday deployment to the production environment is held with a comment. The release lead confirms the hold, or asks for an exception, from Slack.
A team needs to ship inside the freeze. The operator proposes a change request in ServiceNow with the window, starts the conflict check, and, once the change manager approves, answers the deployment with state approved.
A change scheduled in ServiceNow has no matching deployment, or a deployment has no change. The operator lists both to the release channel in Microsoft Teams so someone reconciles them before the window opens.
A GitHub App installed on the repositories, with Actions read and Deployments read and write, subscribed to the deployment_protection_rule event
Environments in GitHub with the app enabled as a custom deployment protection rule, since a hold lands only there
A ServiceNow user with the itil or change_manager role, so change requests can be read and created
The country codes for your teams and customers, so the right public holidays count
A Slack channel for release decisions
Authentication
Runs as a GitHub App you install, a ServiceNow user you create, and a Slack app you approve. Nager.Date needs no key. The operator holds no credentials of its own.
Limits
GitHub lists custom deployment protection rules as a public preview feature. Only the app that owns a rule can answer for it
A deploy that bypasses a protected environment is read after the fact from the deployments list. It cannot be held
Nager.Date carries public holidays by country and region. A company holiday or a retail peak is a window you declare yourself
conflict_status in ServiceNow defaults to Not Run. A check must be started before a conflict shows
Access and pricing
Reference listing. Fibric builds the operator under a managed deployment when you request it. Your quote covers the build, capabilities, usage, and support.
What does a person approve when a release is inside a freeze?
One decision per deployment: hold it until the window closes, or grant an exception. The proposal shows the deployment, the environment, the window, and where the window came from: your calendar, a scheduled change, or a public holiday. Nothing is answered on the callback until someone chooses.
What record is left on a held or released deployment?
The comment on the protection rule answer, which GitHub shows on the run: the window, the decision, who made it, and when. When an exception was granted, the ServiceNow change number is in that comment, and the change carries the run in return.
Does it ever reject or approve a deployment by itself?
No. It proposes. Until a person decides, the deployment stays pending on the environment and the wait is visible on the run. The operator never creates a change request or answers a callback without a decision in Slack.
Ask about Change Freeze
Ask about the capabilities and requirements in this listing.
This operator is developed, published, and supported by Fibric. Third-party names and logos identify the systems an integration connects to; they are the property of their respective owners, who are not affiliated with Fibric and do not sponsor or endorse this listing. Trademark policy