Reference · built on requestOperator by FibricIT & reliability

Change Freeze

Reads pending releases against the change calendar and public holidays. Proposes a hold or exception ticket for a release inside a freeze.

About

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.

    With GitHub, Holidays & FX Reference, Slack

  • Turn a hold into an exception change

    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.

    With ServiceNow, GitHub

  • Keep the calendar and the pipeline in agreement

    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.

    With ServiceNow, Microsoft Teams

Requirements

  • 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.

Request Change Freeze ↗

Questions and answers

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.

For project-specific requirements, contact Fibric.