From 47f64f8cdb53a9760cc0aaeb614fa2f31654b9d7 Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Thu, 22 Aug 2024 10:43:05 +0100 Subject: [PATCH 01/15] creating a new pr and adding the config files --- .github/workflows/pr-reviewer.yaml | 97 +++++++++ .github/workflows/pr-summary.yaml | 101 +++++++++ .github/workflows/update-repos.yaml | 33 ++- components/data.tf | 12 +- components/locals.tf | 43 +--- components/main.tf | 1 - components/outputs.tf | 22 +- components/provider.tf | 19 +- components/variables.tf | 2 +- .../set_org_custom_properties.py | 197 ++++++++++++++++++ scripts/update-readme.py | 115 ++++++++++ 11 files changed, 547 insertions(+), 95 deletions(-) create mode 100644 .github/workflows/pr-reviewer.yaml create mode 100644 .github/workflows/pr-summary.yaml create mode 100644 custom-properties/set_org_custom_properties.py create mode 100644 scripts/update-readme.py diff --git a/.github/workflows/pr-reviewer.yaml b/.github/workflows/pr-reviewer.yaml new file mode 100644 index 000000000..81502d7e2 --- /dev/null +++ b/.github/workflows/pr-reviewer.yaml @@ -0,0 +1,97 @@ +name: CI PR Reviewer Pipeline +on: + pull_request: + branches: + - main + workflow_dispatch: + +jobs: + review: + runs-on: ubuntu-latest + env: + X_API_KEY: ${{ secrets.SYSTEM_API_KEY }} + X_API_CONSUMER: ${{ secrets.SYSTEM_CONSUMER_UUID }} + API_HOST: "https://app-gippi-api-s-latest-uksouth.azurewebsites.net/" + WORKING_DIRECTORY: ${{ github.workspace }}/ + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Create a diff file + run: | + git diff origin/main...remotes/origin/${{ github.head_ref }} > ${{ env.working_directory }}diff.txt && cat ${{ env.working_directory }}diff.txt + + - name: Generate a response + run: | + API_HOST=$(printenv API_HOST) + WORKING_DIRECTORY=$(printenv WORKING_DIRECTORY) + X_API_CONSUMER=$(printenv X_API_CONSUMER) + X_API_KEY=$(printenv X_API_KEY) + DIFF_FILE="diff.txt" + RESPONSE_MD_FILE="response.md" + + if [ ! -f "${WORKING_DIRECTORY}${DIFF_FILE}" ]; then + echo "File ${WORKING_DIRECTORY}${DIFF_FILE} not found." + exit 1 + fi + + file_contents=$(cat "${WORKING_DIRECTORY}${DIFF_FILE}") + json_body=$(jq -n --arg pt "pullrequest-review" --arg p "$file_contents" '{prompt_type: $pt, prompt: $p}') + + response=$(curl -s -i -X POST "${API_HOST}/predefined" \ + -H "Content-Type: application/json" \ + -H "X-API-CONSUMER: ${X_API_CONSUMER}" \ + -H "X-API-KEY: ${X_API_KEY}" \ + -d "$json_body") + + echo "Response: $response" + + response_code=$(echo "$response" | awk -F' ' '/HTTP\/1.1/{print $2}' | head -n 1) + + if [ "$response_code" -eq 200 ]; then + echo "File contents sent successfully." + # Remove headers + response_body=$(echo "$response" | tail -n +2) + # Remove more headers + response_body=$(echo "$response_body" | sed '/^date: /Id' | sed '/^server: /Id' | sed '/^content-length: /Id' | sed '/^content-type: /Id') + # remove trailing and leading quotes + response_body=$(echo "$response_body" | sed 's/^"\(.*\)"$/\1/') + # remove the initial markdown code block ident if it exists + response_body=$(echo "$response_body" | sed 's/```markdown//') + # remove the last code block ident + response_body=$(echo "$response_body" | sed 's/```//') + + # Write to file + echo -e "$response_body" > "${WORKING_DIRECTORY}${RESPONSE_MD_FILE}" + else + echo "Error sending file contents: $response_code" + echo -e "Request to AEP failed to process" > "${WORKING_DIRECTORY}${RESPONSE_MD_FILE}" + fi + + if [ $? -eq 0 ]; then + echo "Response saved as response.md" + else + echo "Error writing to file in ${WORKING_DIRECTORY}." + exit 1 + fi + + - name: Get the response as a variable + id: get_response + run: | + { + echo 'response<> "$GITHUB_ENV" + + - uses: actions/github-script@v6 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: process.env.response + }) \ No newline at end of file diff --git a/.github/workflows/pr-summary.yaml b/.github/workflows/pr-summary.yaml new file mode 100644 index 000000000..c6898b36e --- /dev/null +++ b/.github/workflows/pr-summary.yaml @@ -0,0 +1,101 @@ +name: CI PR Summary Pipeline +on: + pull_request: + branches: + - main + workflow_dispatch: + +jobs: + review: + runs-on: ubuntu-latest + env: + X_API_KEY: ${{ secrets.SYSTEM_API_KEY }} + X_API_CONSUMER: ${{ secrets.SYSTEM_CONSUMER_UUID }} + API_HOST: "https://app-gippi-api-s-latest-uksouth.azurewebsites.net/" + WORKING_DIRECTORY: ${{ github.workspace }}/ + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Create a diff file + run: | + git diff origin/main...remotes/origin/${{ github.head_ref }} > ${{ env.working_directory }}diff.txt && cat ${{ env.working_directory }}diff.txt + + - name: Generate a response + run: | + API_HOST=$(printenv API_HOST) + WORKING_DIRECTORY=$(printenv WORKING_DIRECTORY) + X_API_CONSUMER=$(printenv X_API_CONSUMER) + X_API_KEY=$(printenv X_API_KEY) + DIFF_FILE="diff.txt" + RESPONSE_MD_FILE="response.md" + + if [ ! -f "${WORKING_DIRECTORY}${DIFF_FILE}" ]; then + echo "File ${WORKING_DIRECTORY}${DIFF_FILE} not found." + exit 1 + fi + + file_contents=$(cat "${WORKING_DIRECTORY}${DIFF_FILE}") + json_body=$(jq -n --arg pt "pullrequest-summary-perfile" --arg p "$file_contents" '{prompt_type: $pt, prompt: $p}') + + response=$(curl -s -i -X POST "${API_HOST}/predefined" \ + -H "Content-Type: application/json" \ + -H "X-API-CONSUMER: ${X_API_CONSUMER}" \ + -H "X-API-KEY: ${X_API_KEY}" \ + -d "$json_body") + + echo "Response: $response" + + response_code=$(echo "$response" | awk -F' ' '/HTTP\/1.1/{print $2}' | head -n 1) + + if [ "$response_code" -eq 200 ]; then + echo "File contents sent successfully." + # Remove headers + response_body=$(echo "$response" | tail -n +2) + # Remove more headers + response_body=$(echo "$response_body" | sed '/^date: /Id' | sed '/^server: /Id' | sed '/^content-length: /Id' | sed '/^content-type: /Id') + # remove trailing and leading quotes + response_body=$(echo "$response_body" | sed 's/^"\(.*\)"$/\1/') + # remove the initial markdown code block ident if it exists + response_body=$(echo "$response_body" | sed 's/```markdown//') + # remove the last code block ident + response_body=$(echo "$response_body" | sed 's/```//') + + # Write to file + echo -e "$response_body" > "${WORKING_DIRECTORY}${RESPONSE_MD_FILE}" + else + echo "Error sending file contents: $response_code" + echo -e "Request to AEP failed to process" > "${WORKING_DIRECTORY}${RESPONSE_MD_FILE}" + fi + + if [ $? -eq 0 ]; then + echo "Response saved as response.md" + else + echo "Error writing to file in ${WORKING_DIRECTORY}." + exit 1 + fi + + - name: Get the response as a variable + id: get_response + run: | + { + echo 'response<> "$GITHUB_ENV" + + - uses: actions/github-script@v6 + with: + script: | + const prBody = context.payload.pull_request.body || ''; + const updatedBody = prBody.includes('## 🤖AEP PR SUMMARY🤖') + ? prBody.replace(/## 🤖AEP PR SUMMARY🤖[\s\S]*/, '') + '\n\n## 🤖AEP PR SUMMARY🤖\n\n' + process.env.response + : prBody + '\n\n## 🤖AEP PR SUMMARY🤖\n\n' + process.env.response; + github.rest.pulls.update({ + pull_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: updatedBody + }) \ No newline at end of file diff --git a/.github/workflows/update-repos.yaml b/.github/workflows/update-repos.yaml index d625ffa71..12fc74b4d 100644 --- a/.github/workflows/update-repos.yaml +++ b/.github/workflows/update-repos.yaml @@ -6,7 +6,7 @@ on: workflow_dispatch: jobs: - update-file: + update-files: runs-on: ubuntu-latest steps: @@ -23,15 +23,38 @@ jobs: python -m pip install --upgrade pip pip install pyyaml requests - - name: Run update script + - name: Run set_org_custom_properties script + env: + OAUTH_TOKEN: ${{ secrets.OAUTH_TOKEN }} + run: python custom-properties/set_org_custom_properties.py + + - name: Run update-repo-list script run: python scripts/update-repo-list.py + - name: Run update-readme script + run: python scripts/update-readme.py + + - name: Install jq + run: sudo apt-get install jq -y + + - name: List Repositories + run: | + echo "Listing Repositories" + for repo in $(jq -r '.[]' < ./production-repos.json); do + echo "Listing repository: $repo" + curl -H "Authorization: token ${{ secrets.OAUTH_TOKEN }}" \ + -H "Accept: application/vnd.github.v3+json" \ + https://api.github.com/repos/hmcts/$repo + done + shell: bash + continue-on-error: true + - name: Commit and push changes run: | git config --global user.name 'hmcts-platform-operations' git config --global user.email 'github-platform-operations@HMCTS.NET' - git add production-repos.json - git commit -m 'Update repository list' + git add production-repos.json readme.md + git commit -m 'Update repository list and readme' git push env: - GITHUB_TOKEN: ${{ secrets.OAUTH_TOKEN }} + GITHUB_TOKEN: ${{ secrets.OAUTH_TOKEN }} \ No newline at end of file diff --git a/components/data.tf b/components/data.tf index 68ce78b82..d5ac41c69 100644 --- a/components/data.tf +++ b/components/data.tf @@ -1,15 +1,7 @@ data "github_team" "admin" { - slug = "test" + slug = "platform-operations" # Add more teams here if you want to exlcude them from the rulesets } data "local_file" "repos_json" { filename = "${path.module}./production-repos.json" -} - -data "github_branch" "existing_branches" { - for_each = { - for combo in local.repo_branch_combinations : "${combo.repo}:${combo.branch}" => combo - } - repository = each.value.repo - branch = each.value.branch -} +} \ No newline at end of file diff --git a/components/locals.tf b/components/locals.tf index 6a19ab37a..757ba06c7 100644 --- a/components/locals.tf +++ b/components/locals.tf @@ -1,8 +1,6 @@ locals { # List of repositories to exclude from the production-repos.json file - excluded_repositories = [ - "test-repo-uteppyig", - ] + excluded_repositories = [] # Add any repositories here you would like to exclude # Read repositories from JSON file all_repositories = jsondecode(data.local_file.repos_json.content) @@ -12,41 +10,8 @@ locals { for repo in local.all_repositories : repo if !contains(local.excluded_repositories, repo) ] - - branches_to_check = ["main", "master"] - batch_size = 10 - - # Split repositories into batches of 10 to help handle the API Rate limits - repo_batches = chunklist(local.included_repositories, local.batch_size) - - repo_branch_combinations = flatten([ - for batch in local.repo_batches : [ - for repo in batch : [ - for branch in local.branches_to_check : { - repo = repo - branch = branch - } - ] - ] - ]) - - # Create a map of existing branches - existing_branches = { - for key, branch in data.github_branch.existing_branches : - key => branch - } - - # Checks if a main/master branch exists on the repositories - branch_summary = { - for repo in local.included_repositories : - repo => { - main = contains(keys(local.existing_branches), "${repo}:main") - master = contains(keys(local.existing_branches), "${repo}:master") - } - } } - locals { env_display_names = { sbox = "Sandbox" @@ -64,8 +29,4 @@ locals { "costCentre" = "" } enforced_tags = module.tags.common_tags -} - - - - +} \ No newline at end of file diff --git a/components/main.tf b/components/main.tf index bf0adbe7b..8bc0249ae 100644 --- a/components/main.tf +++ b/components/main.tf @@ -73,4 +73,3 @@ resource "github_organization_ruleset" "default_ruleset" { bypass_mode = "always" } } - diff --git a/components/outputs.tf b/components/outputs.tf index 5e34a937a..62c76cb79 100644 --- a/components/outputs.tf +++ b/components/outputs.tf @@ -4,24 +4,4 @@ output "common_tags" { Product = var.product BuiltFrom = var.builtFrom } -} - - -# This outout below will summarise how many repos have a master, main or both branches on the repos -output "branch_count" { - value = { - total_repos = length(local.included_repositories) - repos_with_main = sum([for repo, branches in local.branch_summary : branches.main ? 1 : 0]) - repos_with_master = sum([for repo, branches in local.branch_summary : branches.master ? 1 : 0]) - repos_with_both = sum([for repo, branches in local.branch_summary : (branches.main && branches.master) ? 1 : 0]) - } - description = "Summary of branch counts" -} - -# output "existing_branches" { -# value = keys(local.existing_branches) -# } - -# output "branch_summary" { -# value = local.branch_summary -# } +} \ No newline at end of file diff --git a/components/provider.tf b/components/provider.tf index 31bdaae7a..20ed28710 100644 --- a/components/provider.tf +++ b/components/provider.tf @@ -3,7 +3,7 @@ provider "azurerm" { } provider "github" { - owner = "hmcts-test" + owner = "hmcts" token = var.oauth_token } @@ -24,20 +24,7 @@ terraform { required_providers { github = { source = "integrations/github" - version = "~> 5.0" + version = "~> 6.0" } } -} - -# required_providers { -# github = { -# source = "integrations/github" -# version = "6.2.1" -# } -# azurerm = { -# source = "hashicorp/azurerm" -# version = "3.109.0" -# } -# } -# } - +} \ No newline at end of file diff --git a/components/variables.tf b/components/variables.tf index 6d4a4f24a..be25fcd05 100644 --- a/components/variables.tf +++ b/components/variables.tf @@ -44,4 +44,4 @@ variable "builtFrom" { description = "Information about the build source or version" type = string default = "https://github.com/hmcts/github-repository-rules" -} +} \ No newline at end of file diff --git a/custom-properties/set_org_custom_properties.py b/custom-properties/set_org_custom_properties.py new file mode 100644 index 000000000..4c1b9c028 --- /dev/null +++ b/custom-properties/set_org_custom_properties.py @@ -0,0 +1,197 @@ +import os +import requests +import json +import logging + +# Set up logging +logging.basicConfig(level=logging.INFO) + +# GitHub API base URL +API_BASE = "https://api.github.com" + +# Get OAuth token from environment variable +TOKEN = os.environ.get('OAUTH_TOKEN') +if not TOKEN: + raise ValueError("OAUTH_TOKEN environment variable is not set") + +# Your organisation name +ORG_NAME = "hmcts" + +# Headers for API requests +headers = { + "Authorization": f"Bearer {TOKEN}", + "Accept": "application/vnd.github+json" +} + +def define_custom_property(org_name): + """ + Define a custom property for the organisation. + + 1. Creates a custom property called "is_production" at the organisation level, which is then passed down to the individual repository level. + 2. Sends a PUT request to GitHub's API to create the property. + 3. Defines the property as a boolean (true/false) value. + 4. The JSON file is where all the production repositories are stored, these will then be used to assign custom properties to. + + Error Handling: + + 1. Checks if the API response status code is not 200. + 2. Logs an error message with the specific reason from the API, or a generic HTTP status code error if no specific message is provided. + 3. Raises an HTTP error if the request was unsuccessful. + + Args: + org_name (str): The name of the GitHub organisation. + + Returns: + int: The status code of the API response (200 if successful). + + Raises: + requests.RequestException: If the API request to GitHub fails. + + """ + + url = f"{API_BASE}/orgs/{org_name}/properties/schema/is_production" + data = { + "value_type": "true_false", + "required": False, + "default_value": "", + "description": "Indicates if the repository is in production", + "allowed_values": None, # Set to None as required by API + "values_editable_by": "org_and_repo_actors" + } + response = requests.put(url, headers=headers, json=data) + if response.status_code != 200: + error_message = response.json().get('message', f"HTTP {response.status_code} error") + logging.error(f"Failed to define custom property for {org_name}: {error_message}") + response.raise_for_status() + return response.status_code + + +def set_custom_properties(repo_full_name, properties): + """ + 1. Sets custom properties for the repositories listed from the JSON file. + 2. Sends a PATCH request to GitHub's API to update the repository's properties. + + Sets the custom properties for a repository. + + Error Handling: + 1. Checks if the API response status code is not 204. + 2. Logs an error message with the specific reason from the API, or a generic HTTP status code error if no specific message can be provided. + 3. Raises an HTTP error if the request was unsuccessful. + + Sets the custom properties for a repository. + + Args: + repo_full_name (str): The full name of the repository (org/repo). + properties (dict): The custom properties to set. + + Returns: + int: The status code of the API response. + + Raises: + requests.RequestException: If the API request fails. + + """ + + owner, repo = repo_full_name.split('/') + url = f"{API_BASE}/repos/{owner}/{repo}/properties/values" + data = { + "properties": [ + {"property_name": key, "value": value} + for key, value in properties.items() + ] + } + response = requests.patch(url, headers=headers, json=data) + if response.status_code != 204: + error_message = response.json().get('message', f"HTTP {response.status_code} error") + logging.error(f"Failed to set properties for {repo_full_name}: {error_message}") + response.raise_for_status() + return response.status_code + +def get_custom_properties(repo_full_name): + """ + Get custom properties for a repository. + + 1. Retrieves the current custom properties of the repositories. + 2. Sends a GET request to GitHub's API for the specific repository. + 3. Returns the custom properties as a JSON object. + + Args: + repo_full_name (str): The full name of the repository (org/repo). + + Returns: + dict: The custom properties of the repository. + + Raises: + requests.RequestException: If the API request fails. + + """ + + owner, repo = repo_full_name.split('/') + url = f"{API_BASE}/repos/{owner}/{repo}/properties/values" + response = requests.get(url, headers=headers) + response.raise_for_status() + return response.json() + +def load_production_repos(): + """ + 1. Loads a list of production repositories from a JSON file. + 2. Reads from the production-repos.json. + 3. Parses the JSON content and returns it as a list. + + + Error Handling: + 1. Handles FileNotFoundError by logging an error if the JSON file is not found, including the expected file path and current directory contents. + 2. Handles JSONDecodeError by logging an error if the JSON file cannot be parsed correctly, including the specific error encountered. + + """ + + script_dir = os.path.dirname(__file__) + json_file_path = os.path.join(script_dir, '../production-repos.json') + + try: + with open(json_file_path, 'r') as f: + repos = json.load(f) + return repos + except FileNotFoundError: + logging.error(f"Error: 'production-repos.json' not found at {os.path.abspath(json_file_path)}") + logging.error("Contents of the current directory: %s", os.listdir('.')) + raise + except json.JSONDecodeError as e: + logging.error(f"Error decoding JSON from {json_file_path}: {e}") + raise + + +# Define the custom property at the organisation level +try: + status = define_custom_property(ORG_NAME) + logging.info(f"Defined custom property for {ORG_NAME}: Status {status}") +except requests.RequestException as e: + logging.error(f"Failed to define custom property for {ORG_NAME}: {str(e)}") + +# Load production repositories +production_repos = load_production_repos() + +logging.info(f"Repositories found in production-repos.json:") +for repo in production_repos: + logging.info(f"- {repo}") + +# Apply custom properties to each repository and verify +for repo_name in production_repos: + repo_full_name = f"{ORG_NAME}/{repo_name}" + custom_properties = { + "is_production": "true" + } + + logging.info(f"\nSetting custom property for: {repo_name}") + try: + status = set_custom_properties(repo_full_name, custom_properties) + logging.info(f"Set properties for {repo_full_name}: Status {status}") + + # Verify the properties were set correctly + retrieved_properties = get_custom_properties(repo_full_name) + logging.info(f"Custom properties for {repo_full_name}: {retrieved_properties}") + + except requests.RequestException as e: + logging.error(f"Failed to set properties for {repo_full_name}: {str(e)}") + +logging.info("\nScript execution completed.") \ No newline at end of file diff --git a/scripts/update-readme.py b/scripts/update-readme.py new file mode 100644 index 000000000..1604280cb --- /dev/null +++ b/scripts/update-readme.py @@ -0,0 +1,115 @@ +import os +import json +import logging + +# Setup logging +logging.basicConfig(level=logging.INFO) + +# File paths +script_dir = os.path.dirname(__file__) +JSON_FILE_PATH = os.path.join(script_dir, '../production-repos.json') +README_FILE_PATH = os.path.join(script_dir, '../ReadMe.md') + +def load_repos(file_path): + """ + Load repositories from the given JSON file. + + 1. Opens and reads the JSON file from the path above. + 2. Parses the JSON content and ensures it is a list. + 3. Returns the list of repositories. + + Error Handling: + + 1. Logs an error if the file is not found at the path specified above. + + Args: + file_path: The path to the JSON file containing the repositories. + + Returns: + list: A list of repositories parsed from the JSON file. + + Raises: + FileNotFoundError: If the JSON file path is not found. + ValueError: If the JSON content is not a list. + json.JSONDecodeError: If the JSON file contains invalid JSON. + + """ + try: + with open(file_path, 'r') as f: + repos = json.load(f) + if not isinstance(repos, list): + raise ValueError("JSON content is not a list") + return repos + except FileNotFoundError: + logging.error(f"Error: '{file_path}' not found.") + raise + +def update_readme(prod_count, dev_count, prod_link): + """ + Update the README file with a count displayed of the number of production repositories as custom properties can't be searched by in GitHub. + + 1. Reads the existing README file content. + 2. Updates the section between markers with new repository counts. + 3. Writes the updated content back to the README file. + + Error Handling: + + 1. Prints "Failed to update README file" if the README file cannot be found at the path we defined above. + + Args: + 1. prod_count: This integer is the number of production repositories. + 2. dev_count: The number of development repositories. + 3. prod_link: The file path to the production repositories JSON file. + + """ + try: + with open(README_FILE_PATH, 'r') as file: + readme_content = file.readlines() + + table_content = f""" +| **Repository Type** | **Count** | +|---------------------------|-----------| +| Production Repositories | [{prod_count}]({prod_link}) | +| Development Repositories | {dev_count} | +""" + start_marker = "" + end_marker = "" + start_index = None + end_index = None + + for i, line in enumerate(readme_content): + if start_marker in line: + start_index = i + if end_marker in line: + end_index = i + + if start_index is not None and end_index is not None: + readme_content = ( + readme_content[:start_index + 1] + + [table_content] + + readme_content[end_index:] + ) + else: + readme_content.append(f"\n{start_marker}\n{table_content}\n{end_marker}\n") + + with open(README_FILE_PATH, 'w') as file: + file.writelines(readme_content) + except Exception as e: + logging.error(f"Failed to update README file: {str(e)}") + raise + +# Load production repositories +try: + production_repos = load_repos(JSON_FILE_PATH) + production_count = len(production_repos) + logging.info(f"Number of production repositories: {production_count}") + + # Placeholder value for dev repo count, can be updated similarly + development_count = 0 # Update this to load actual data if available + + # Local link to the production-repos.json file + prod_link = "../production-repos.json" + + update_readme(production_count, development_count, prod_link) +except Exception as e: + logging.error(f"Failed to load or update repositories: {str(e)}") \ No newline at end of file From 0807e75e9fecee59612103025837b7fb30c88141 Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Thu, 22 Aug 2024 13:21:20 +0100 Subject: [PATCH 02/15] testing functionality switching to hmcts-test and updating the readme file --- ReadMe.md | 97 ++++-- components/provider.tf | 2 +- .../set_org_custom_properties.py | 2 +- production-repos.json | 320 +----------------- 4 files changed, 80 insertions(+), 341 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 16f296261..4644ebd76 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -2,63 +2,100 @@ This repository contains code to manage GitHub repository branch protection rules for HMCTS. -## Overview +# Overview -This Terraform configuration automates the process of setting up branch protection rules across multiple GitHub repositories. It implements a batching system to handle a large number of repositories efficiently while respecting GitHub API rate limits. +This Terraform configuration automates the process of setting up rule sets at the organisation level. - [Rate Limits Page](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28) + + +| **Repository Type** | **Count** | +|---------------------------|-----------| +| Production Repositories | [309](../production-repos.json) | +| Development Repositories | 0 | + + ## Getting Started ### Prerequisites - [Terraform](https://www.terraform.io/downloads.html) (version 1.5.7 or later) -- GitHub Personal Access Token with appropriate permissions. - -### Configuration +- Oauth or PAT Token with appropriate permissions. -1. Clone this repository: -git clone https://github.com/hmcts/github-repository-rules.git -2. Create a `terraform.tfvars` file with your GitHub token: -3. The python file runs as a cron job via GitHub Actions pipeline at midnight and updates the JSON file with new repositories. ## What This Does -- Reads a list of repositories from `prod-repos.json` -- Checks for the existence of 'main' and 'master' branches in each repository. -- Applies branch protection rules to existing branches. -- Processes repositories in batches to manage API rate limits. +- Reads a list of repositories from `production-repos.json` +- Creates a ruleset at the organisation level, this applies standardisation across all repositories. +- Creates custom properties for repositories, such as marking repositories as "is_production." + ## Maintenance To add or remove repositories follow the below: 1. Open a fresh PR from the master branch ensuring you have pulled down recent changes to the master branch. -2. Update the `prod-repos.json` file with any repository you want. Ensure that its in the format of just the repo name eg: "github-repository-rules" +2. Applies standardised rule sets to repositories listed in the `production-repos.json` file, ensuring consistent management and configuration across all repositories. 3. Create a PR and allow the GH Actions pipeline to run a Terraform Plan to confirm changes are accepted. -4. Once this first pipeline checks out, the second pipeline will apply your changes and update the branch protection rules. +4. Once the plan is good, you can merge your PR into main branch and the pipeline will trigger an apply. 5. Once applied delete your branch. -## Recent Changes +## Troubleshooting -We recently addressed issues with scaling to a larger number of repositories. Here's a summary of the changes: +- Check your Terraform version and ensure there are no underlying bugs with the provider versions. +- Ensure you have formatted your repository name correctly as it may not pick it up properly. -1. Implemented a batching system that splits repositories into smaller groups of 20. -2. Processes each batch sequentially with built-in delays between batches. -3. Only applies branch protection rules after all batches have been processed. +## Terraform documentation -These changes allow us to handle a significantly larger number of repositories without overwhelming the GitHub API or causing Terraform to crash. The system is now more scalable for future growth. +## Requirements -## Project Structure +| Name | Version | +|------|---------| +| [terraform](#requirement\_terraform) | >= 1.5.7 | +| [github](#requirement\_github) | ~> 6.0 | -- `main.tf`: Contains the main Terraform configuration for branch protection rules. -- `data.tf`: Defines data sources for GitHub repositories and branches. -- `locals.tf`: Contains local variables for processing repository data. -- `outputs.tf`: Defines outputs for branch summaries and counts. -- `prod-repos.json`: List of repositories to manage. +## Providers -## Troubleshooting +| Name | Version | +|------|---------| +| [azurerm](#provider\_azurerm) | n/a | +| [github](#provider\_github) | ~> 6.0 | +| [local](#provider\_local) | n/a | -- Check your Terraform version and ensure there are no underlying bugs with the provider versions. -- Ensure you have formatted your repository name correctly as it may not pick it up properly. +## Modules + +| Name | Source | Version | +|------|--------|---------| +| [tags](#module\_tags) | git::https://github.com/hmcts/terraform-module-common-tags.git | master | + +## Resources + +| Name | Type | +|------|------| +| [azurerm_resource_group.rg](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group) | resource | +| [azurerm_storage_account.sa](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_account) | resource | +| [azurerm_storage_container.tfstate](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_container) | resource | +| [github_organization_ruleset.default_ruleset](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/organization_ruleset) | resource | +| [github_team.admin](https://registry.terraform.io/providers/integrations/github/latest/docs/data-sources/team) | data source | +| [local_file.repos_json](https://registry.terraform.io/providers/hashicorp/local/latest/docs/data-sources/file) | data source | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [builtFrom](#input\_builtFrom) | Information about the build source or version | `string` | `"https://github.com/hmcts/github-repository-rules"` | no | +| [env](#input\_env) | The environment for the deployment (e.g., dev, staging, prod) | `string` | `"dev"` | no | +| [location](#input\_location) | The location for the resources | `string` | `"UK South"` | no | +| [oauth\_token](#input\_oauth\_token) | OAUTH token to use for authentication. | `string` | n/a | yes | +| [override\_action](#input\_override\_action) | The action to override | `string` | `"plan"` | no | +| [product](#input\_product) | The product name or identifier | `string` | `"sds-platform"` | no | +| [resource\_group\_name](#input\_resource\_group\_name) | The name of the resource group | `string` | `"rule-set-rg"` | no | +| [storage\_account\_name](#input\_storage\_account\_name) | The name of the storage account | `string` | `"rulesetsa"` | no | + +## Outputs + +| Name | Description | +|------|-------------| +| [common\_tags](#output\_common\_tags) | n/a | \ No newline at end of file diff --git a/components/provider.tf b/components/provider.tf index 20ed28710..b13060a44 100644 --- a/components/provider.tf +++ b/components/provider.tf @@ -3,7 +3,7 @@ provider "azurerm" { } provider "github" { - owner = "hmcts" + owner = "hmcts-test" token = var.oauth_token } diff --git a/custom-properties/set_org_custom_properties.py b/custom-properties/set_org_custom_properties.py index 4c1b9c028..5e7eba671 100644 --- a/custom-properties/set_org_custom_properties.py +++ b/custom-properties/set_org_custom_properties.py @@ -15,7 +15,7 @@ raise ValueError("OAUTH_TOKEN environment variable is not set") # Your organisation name -ORG_NAME = "hmcts" +ORG_NAME = "hmcts-test" # Headers for API requests headers = { diff --git a/production-repos.json b/production-repos.json index 3e8bf1355..3dd4446e9 100644 --- a/production-repos.json +++ b/production-repos.json @@ -1,311 +1,13 @@ [ - "cnp-module-storage", - "sds-keda-infrastructure", - "c100-shared-infrastructure", - "sptribs-frontend", - "lau-idam-backend", - "civil-citizen-ui", - "ccpay-payment-api-gateway", - "ccpay-notifications-service", - "cnp-module-key-vault", - "div-decree-nisi-frontend", - "probate-caveats-frontend", - "pcq-backend", - "am-org-role-mapping-service", - "cnp-idam-vault", - "ccd-case-disposer", - "nfdiv-frontend", - "family-api-gateway", - "pip-publication-services", - "disposer-shared-infrastructure", - "wa-workflow-api", - "prd-pui-registration", - "ctsc-shared-infrastructure", - "prl-citizen-frontend", - "am-judicial-booking-service", - "bulk-scan-shared-infrastructure", - "juror-shared-infrastructure", - "rd-profile-sync", - "ccd-admin-web-api", - "adoption-web", - "fpl-ccd-configuration", - "ia-home-office-integration-api", - "ccd-case-management-web", - "cnp-core-infrastructure", - "ccpay-paymentoutcome-web", - "finrem-shared-infrastructure", - "rd-user-profile-api", - "ia-bail-case-api", - "sscs-case-loader", - "bulk-scan-orchestrator", - "civil-service", - "lau-frontend", - "ccd-data-store-api", - "rpx-xui-webapp", - "rpx-xui-manage-organisations", - "em-native-pdf-annotator-app", - "pip-shared-infrastructure-bootstap", - "ccd-definition-store-api", - "cmc-claim-store", - "pre-network", - "terraform-module-common-tags", - "sptribs-case-api", - "ccd-definition-designer-api", - "docmosis-infrastructure", - "et-sya-api", - "sscs-shared-infrastructure", - "wa-standalone-task-bpmn", - "cnp-module-trafficmanager-endpoint", - "juror-scheduler-api", - "ia-aip-frontend", - "fpl-ccd-data-migration-tool", - "sscs-task-configuration", - "hmi-shared-infrastructures", - "ccfr-fees-register-app", - "rd-location-ref-api", - "camunda-bpm", - "pre-portal", - "darts-automation", - "sscs-track-your-appeal-notifications", - "cnp-module-application-insights", - "hmi-apim-infrastructures", - "terraform-module-log-analytics-workspace-id", - "ccd-case-activity-api", - "sptribs-shared-infrastructure", - "ia-shared-infrastructure", - "div-health-monitor", - "prl-cos-api", - "ethos-repl-docmosis-service", - "probatemandb", - "disposer-idam-user", - "ia-case-notifications-api", - "em-ccd-orchestrator", - "fpl-wa-task-configuration", - "tax-tribunals-datacapture", - "pre-api", - "dm-shared-infrastructure", - "rpa-em-ccd-orchestrator", - "ccpay-payment-app", - "ccd-admin-web", - "help-with-fees-shared-infrastructure", - "sds-toffee-frontend", - "em-hrs-ingestor", - "pip-shared-infrastructures", - "c100-application", - "dtsse-shared-infrastructure", - "ccpay-bubble", - "sscs-track-your-appeal-frontend", - "ts-translation-service", - "blob-router-service", - "ccd-api-gateway", - "civil-camunda-bpmn-definition", - "ccfr-fees-register-admin-web", - "em-hrs-api", - "fact-api", - "terraform-module-sdp-db-user", - "cnp-module-api-mgmt-subscription", - "terraform-module-postgresql-flexible", - "juror-public", - "cnp-pipelinemetrics-database", - "am-shared-infrastructure", - "terraform-module-dynatrace-oneagent", - "ccd-case-print-service", - "rpa-coh-continuous-online-resolution", - "pre-functions", - "div-decree-absolute-frontend", - "draft-store", - "ccd-shared-infrastructure", - "cnp-rhubarb-shared-infrastructure", - "ecm-consumer", - "probate-shared-infrastructure", - "wa-task-configuration-api", - "cmc-ccd-domain", - "cnp-module-automation-runbook-start-stop-vm", - "rpa-jui-webapp", - "darts-proxy", - "hmc-cft-hearing-service", - "civil-orchestrator-service", - "ccd-user-profile-api", - "cnp-owaspdependencycheck-database", - "rd-shared-infrastructure", - "cnp-module-api-mgmt", - "rd-location-ref-data-load", - "cnp-module-redis", - "sds-toffee-recipes-service", - "ccd-logstash", - "fact-frontend", - "prl-shared-infrastructure", - "probate-orchestrator-service", - "camunda-shared-infrastructure", - "probate-health-monitor", - "fis-shared-infrastructure", - "div-document-generator-client", - "am-role-assignment-batch-service", - "cnp-keda-shared-infrastucture", - "cnp-module-api-mgmt-api-operation", - "lau-case-backend", - "idam-user-dashboard", - "idam-api", - "service-auth-provider-app", - "cnp-rhubarb-frontend", - "div-shared-infrastructure", - "cnp-module-metric-alert", - "pcq-frontend", - "idam-web-public", - "cnp-module-vnet", - "et-pet-shared-infrastructure", - "cmc-legal-rep-frontend", - "document-management-store-app", - "juror-api", - "pdda-shared-infrastructure", - "probate-submit-service", - "pcq-loader", - "cnp-rhubarb-recipes-service", - "wa-shared-infrastructure", - "cnp-module-app-service-plan", - "rpx-xui-terms-and-conditions", - "cet-shared-infrastructure", - "et-message-handler", - "pip-data-management", - "tax-tribunals-shared-infrastructure", - "adoption-shared-infrastructure", - "juror-scheduler-execution", - "ia-task-configuration", - "nfdiv-shared-infrastructure", - "sscs-cor-frontend", - "sscs-tribunals-case-api", - "cmc-citizen-frontend", - "rd-caseworker-ref-api", - "cnp-module-api-mgmt-api", - "fact-admin", - "cnp-plum-shared-infrastructure", - "sds-toffee-shared-infrastructure", - "libragob-shared-infrastructure", - "div-fees-and-payments-service", - "div-respondent-frontend", - "cnp-module-webapp", - "finrem-case-orchestration-service", - "ia-case-payments-api", - "probate-persistence-service", - "ia-case-access-api", - "reform-scan-notification-service", - "reform-scan-shared-infra", - "cnp-module-palo-alto", - "employment-tribunals-shared-infrastructure", - "rd-judicial-data-load", - "rd-judicial-api", - "juror-bureau", - "div-case-maintenance-service", - "rd-professional-api", - "wa-task-monitor", - "cnp-module-action-group", - "wa-task-management-api", - "sscs-hearings-api", - "pip-subscription-management", - "cnp-module-trafficmanager", - "ctsc-work-allocation", - "em-icp-api", - "rd-commondata-dataload", - "prl-dgs-api", - "snl-shared-infrastructure", - "ia-case-api", - "rpe-shared-infrastructure", - "cnp-module-waf", - "cmc-claim-submit-api", - "sscs-evidence-share", - "hmc-shared-infrastructure", - "cnp-module-shutterpage", - "sscs-bulk-scan", - "terraform-module-servicebus-topic", - "ia-case-documents-api", - "darts-gateway", - "terraform-module-application-insights", - "aac-manage-case-assignment", - "juror-pnc", - "wa-case-event-handler", - "cnp-plum-recipes-service", - "et-ccd-callbacks", - "fact-shared-infrastructure", - "terraform-module-servicebus-namespace", - "ecm-shared-infrastructure", - "feature-toggle-api", - "sscs-cor-backend", - "cnp-module-storage-account", - "div-case-orchestration-service", - "civil-ccd-definition", - "ccpay-service-request-cpo-update-service", - "hmc-hmi-inbound-adapter", - "ccd-case-document-am-api", - "et-sya-frontend", - "pre-shared-infrastructure", - "cmc-shared-infrastructure", - "civil-general-applications", - "hmi-rota-dtu", - "hmi-shared-infrastructures-bootstrap", - "rpa-professional-api", - "ia-timed-event-service", - "darts-portal", - "bar-web", - "bar-shared-infrastructure", - "sptribs-dss-update-case-web", - "am-role-assignment-refresh-batch", - "cui-ra", - "makeaplea-shared-infrastructure", - "et-shared-infrastructure", - "sscs-ccd-callback-orchestrator", - "bulk-scan-processor", - "rpx-shared-infrastructure", - "am-role-assignment-service", - "adoption-cos-api", - "div-validation-service", - "lau-shared-infrastructure", - "em-shared-infrastructure", - "terraform-module-servicebus-subscription", - "civil-sdt", - "nfdiv-case-api", - "rpe-pdf-service", - "div-petitioner-frontend", - "cnp-module-postgres", - "dg-docassembly-api", - "pdm-shared-infrastructure", - "em-annotation-api", - "idam-shared-infrastructure", - "civil-general-apps-ccd-definition", - "bulk-scan-payment-processor", - "prl-wa-task-configuration", - "cnp-idam-storage", - "div-evidence-management-client-api", - "rd-commondata-api", - "div-case-data-formatter", - "cnp-core-compute", - "cnp-idam-compute", - "fis-hmc-api", - "bar-api", - "em-stitching-api", - "prl-ccd-definitions", - "cnp-module-api-mgmt-api-policy", - "probate-business-service", - "darts-shared-infrastructure", - "probate-back-office", - "probate-ccd-data-migration-tool", - "cnp-module-api-mgmt-product", - "cnp-idam-master", - "terraform-module-servicebus-queue", - "pre-vault", - "pip-account-management", - "cpo-case-payment-orders-api", - "ccpay-functions-node", - "ccpayfr-shared-infrastructure", - "pcq-consolidation-service", - "rpx-xui-approve-org", - "civil-sdt-gateway", - "ccpay-refunds-app", - "pcq-shared-infrastructure", - "send-letter-service", - "darts-api", - "probate-frontend", - "ccpay-bulkscanning-app", - "ccd-elastic-search", - "sscs-submit-your-appeal", - "ia-hearings-api" + "test-repo-1", + "test-repo-1ew34nh9", + "test-repo-uteppyig", + "test-repo-zp4blhyb", + "test-repo-cqky6jdb", + "test-repo-1tqvfwp9", + "test-repo-c2urwskw", + "test-repo-kjgn0hak", + "test-repo-0oobilw3", + "test-repo-q477vy5y", + "test-repo-5gg40sia" ] \ No newline at end of file From 270d81ba53881162848649c66a6bb6d741f9115a Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Thu, 22 Aug 2024 13:23:02 +0100 Subject: [PATCH 03/15] removing platform operations team --- components/data.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/data.tf b/components/data.tf index d5ac41c69..71e5f11b1 100644 --- a/components/data.tf +++ b/components/data.tf @@ -1,5 +1,5 @@ data "github_team" "admin" { - slug = "platform-operations" # Add more teams here if you want to exlcude them from the rulesets + slug = "" # Add more teams here if you want to exlcude them from the rulesets } data "local_file" "repos_json" { From aac9039cbdf41fb4a51167b79abcea9ceb0c48ed Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Thu, 22 Aug 2024 13:24:42 +0100 Subject: [PATCH 04/15] adding test team from hmcts-test --- components/data.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/data.tf b/components/data.tf index 71e5f11b1..a63147cd2 100644 --- a/components/data.tf +++ b/components/data.tf @@ -1,5 +1,5 @@ data "github_team" "admin" { - slug = "" # Add more teams here if you want to exlcude them from the rulesets + slug = "test" # Add more teams here if you want to exlcude them from the rulesets } data "local_file" "repos_json" { From 3639d9a39515a878b4cd1decaaf6f9f4d6a0ae57 Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Thu, 22 Aug 2024 13:29:53 +0100 Subject: [PATCH 05/15] applying thr rulesets and custom properties to ensure code works as expected --- .github/workflows/terraform.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/terraform.yaml b/.github/workflows/terraform.yaml index 34b648cd4..e1cdb5323 100644 --- a/.github/workflows/terraform.yaml +++ b/.github/workflows/terraform.yaml @@ -55,7 +55,6 @@ jobs: run: terraform plan -var="oauth_token=${{ secrets.OAUTH_TOKEN }}" - name: Terraform Apply - if: github.event_name == 'push' && github.ref == 'refs/heads/main' working-directory: components env: ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} From 8a143bac6c069b061e3cbf695ddb3aa62283c21b Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Fri, 23 Aug 2024 10:17:04 +0100 Subject: [PATCH 06/15] testing pipeline works fine for rulesets --- .github/workflows/terraform.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/terraform.yaml b/.github/workflows/terraform.yaml index e1cdb5323..e03e28d6c 100644 --- a/.github/workflows/terraform.yaml +++ b/.github/workflows/terraform.yaml @@ -63,4 +63,5 @@ jobs: ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} OAUTH_TOKEN: ${{ secrets.OAUTH_TOKEN }} run: terraform apply -var="oauth_token=${{ secrets.OAUTH_TOKEN }}" -auto-approve + From 93a167ecb15f4b2faa2febdbcfadc2f246dd17a3 Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Tue, 27 Aug 2024 10:24:47 +0100 Subject: [PATCH 07/15] testing workflow precheck --- .github/workflows/terraform.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/terraform.yaml b/.github/workflows/terraform.yaml index e03e28d6c..cdbae1a65 100644 --- a/.github/workflows/terraform.yaml +++ b/.github/workflows/terraform.yaml @@ -64,4 +64,5 @@ jobs: OAUTH_TOKEN: ${{ secrets.OAUTH_TOKEN }} run: terraform apply -var="oauth_token=${{ secrets.OAUTH_TOKEN }}" -auto-approve + From 2429443d744e5a804c110cddfd549b1a5d08cd6d Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Tue, 27 Aug 2024 11:23:17 +0100 Subject: [PATCH 08/15] fixing readme spelling --- .github/workflows/update-repos.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-repos.yaml b/.github/workflows/update-repos.yaml index 12fc74b4d..6a3d1f2f0 100644 --- a/.github/workflows/update-repos.yaml +++ b/.github/workflows/update-repos.yaml @@ -53,7 +53,7 @@ jobs: run: | git config --global user.name 'hmcts-platform-operations' git config --global user.email 'github-platform-operations@HMCTS.NET' - git add production-repos.json readme.md + git add production-repos.json ReadMe.md git commit -m 'Update repository list and readme' git push env: From 78f1d8d864d405f40956daabc8ff5f50ac7d47d5 Mon Sep 17 00:00:00 2001 From: hmcts-platform-operations Date: Tue, 27 Aug 2024 10:25:12 +0000 Subject: [PATCH 09/15] Update repository list and readme --- ReadMe.md | 2 +- production-repos.json | 321 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 311 insertions(+), 12 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 4644ebd76..06ee6660a 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -12,7 +12,7 @@ This Terraform configuration automates the process of setting up rule sets at th | **Repository Type** | **Count** | |---------------------------|-----------| -| Production Repositories | [309](../production-repos.json) | +| Production Repositories | [310](../production-repos.json) | | Development Repositories | 0 | diff --git a/production-repos.json b/production-repos.json index 3dd4446e9..25b9bd9b1 100644 --- a/production-repos.json +++ b/production-repos.json @@ -1,13 +1,312 @@ [ - "test-repo-1", - "test-repo-1ew34nh9", - "test-repo-uteppyig", - "test-repo-zp4blhyb", - "test-repo-cqky6jdb", - "test-repo-1tqvfwp9", - "test-repo-c2urwskw", - "test-repo-kjgn0hak", - "test-repo-0oobilw3", - "test-repo-q477vy5y", - "test-repo-5gg40sia" + "hmc-shared-infrastructure", + "cmc-citizen-frontend", + "wa-case-event-handler", + "civil-service", + "juror-shared-infrastructure", + "pdm-shared-infrastructure", + "juror-bureau", + "idam-shared-infrastructure", + "ccfr-fees-register-app", + "rd-commondata-api", + "sscs-cor-frontend", + "pip-data-management", + "ctsc-shared-infrastructure", + "camunda-bpm", + "adoption-web", + "rpa-coh-continuous-online-resolution", + "bar-shared-infrastructure", + "rpx-shared-infrastructure", + "div-fees-and-payments-service", + "cnp-module-app-service-plan", + "div-decree-absolute-frontend", + "rpe-shared-infrastructure", + "rpx-xui-approve-org", + "fis-shared-infrastructure", + "div-document-generator-client", + "am-org-role-mapping-service", + "idam-web-public", + "ia-task-configuration", + "et-syr-frontend", + "ia-home-office-integration-api", + "am-role-assignment-service", + "docmosis-infrastructure", + "cnp-idam-vault", + "probate-caveats-frontend", + "cnp-module-palo-alto", + "juror-scheduler-execution", + "sscs-case-loader", + "rd-profile-sync", + "wa-shared-infrastructure", + "cnp-module-api-mgmt-subscription", + "probate-back-office", + "probate-frontend", + "em-shared-infrastructure", + "sptribs-case-api", + "cnp-module-postgres", + "wa-workflow-api", + "sds-keda-infrastructure", + "camunda-shared-infrastructure", + "div-respondent-frontend", + "hmc-hmi-inbound-adapter", + "div-decree-nisi-frontend", + "rpa-em-ccd-orchestrator", + "cnp-rhubarb-shared-infrastructure", + "ccd-data-store-api", + "ccpay-notifications-service", + "ccd-user-profile-api", + "rd-commondata-dataload", + "ccpay-paymentoutcome-web", + "bar-api", + "probate-submit-service", + "cnp-module-storage", + "ia-case-payments-api", + "pip-publication-services", + "div-shared-infrastructure", + "bulk-scan-payment-processor", + "cnp-module-waf", + "sscs-track-your-appeal-frontend", + "c100-application", + "employment-tribunals-shared-infrastructure", + "ia-timed-event-service", + "nfdiv-frontend", + "darts-proxy", + "hmi-apim-infrastructures", + "prl-dgs-api", + "civil-sdt", + "terraform-module-log-analytics-workspace-id", + "prl-wa-task-configuration", + "cnp-module-redis", + "civil-general-apps-ccd-definition", + "fis-hmc-api", + "sds-toffee-shared-infrastructure", + "et-message-handler", + "nfdiv-shared-infrastructure", + "terraform-module-common-tags", + "cnp-owaspdependencycheck-database", + "cnp-module-api-mgmt", + "fpl-wa-task-configuration", + "draft-store", + "cnp-module-key-vault", + "ia-case-documents-api", + "sds-toffee-frontend", + "cnp-rhubarb-recipes-service", + "cnp-module-storage-account", + "rpe-pdf-service", + "finrem-shared-infrastructure", + "em-hrs-ingestor", + "div-case-orchestration-service", + "document-management-store-app", + "cnp-module-action-group", + "terraform-module-application-insights", + "pcq-frontend", + "pdda-shared-infrastructure", + "cnp-module-api-mgmt-api-policy", + "cmc-shared-infrastructure", + "ctsc-work-allocation", + "rd-judicial-data-load", + "reform-scan-shared-infra", + "cnp-idam-compute", + "fact-shared-infrastructure", + "ia-aip-frontend", + "wa-task-configuration-api", + "ccpay-bubble", + "cnp-plum-recipes-service", + "darts-api", + "aac-manage-case-assignment", + "wa-task-management-api", + "prl-ccd-definitions", + "ia-bail-case-api", + "pcq-backend", + "cnp-core-infrastructure", + "snl-shared-infrastructure", + "probatemandb", + "wa-standalone-task-bpmn", + "div-case-maintenance-service", + "sscs-ccd-callback-orchestrator", + "em-icp-api", + "cnp-module-trafficmanager-endpoint", + "prl-citizen-frontend", + "libragob-shared-infrastructure", + "cmc-legal-rep-frontend", + "ccd-definition-store-api", + "cnp-core-compute", + "terraform-module-postgresql-flexible", + "probate-persistence-service", + "disposer-shared-infrastructure", + "ccd-case-management-web", + "ccpay-refunds-app", + "terraform-module-sdp-db-user", + "cnp-keda-shared-infrastucture", + "div-health-monitor", + "ccd-elastic-search", + "cmc-claim-store", + "terraform-module-dynatrace-oneagent", + "ccd-shared-infrastructure", + "juror-public", + "hmi-shared-infrastructures-bootstrap", + "et-shared-infrastructure", + "sptribs-shared-infrastructure", + "juror-scheduler-api", + "cmc-claim-submit-api", + "em-hrs-api", + "rpa-professional-api", + "terraform-module-servicebus-namespace", + "juror-api", + "idam-api", + "help-with-fees-shared-infrastructure", + "civil-sdt-gateway", + "civil-general-applications", + "cnp-module-trafficmanager", + "ccpay-functions-node", + "div-petitioner-frontend", + "em-ccd-orchestrator", + "ccpay-service-request-cpo-update-service", + "ia-shared-infrastructure", + "prl-shared-infrastructure", + "ecm-shared-infrastructure", + "civil-ccd-definition", + "cnp-plum-shared-infrastructure", + "cet-shared-infrastructure", + "sscs-track-your-appeal-notifications", + "pre-vault", + "lau-frontend", + "sscs-cor-backend", + "pre-functions", + "am-judicial-booking-service", + "tax-tribunals-datacapture", + "sscs-shared-infrastructure", + "bulk-scan-orchestrator", + "em-stitching-api", + "idam-user-dashboard", + "cnp-module-vnet", + "et-sya-api", + "rd-shared-infrastructure", + "ia-case-access-api", + "pre-api", + "ccd-case-activity-api", + "family-api-gateway", + "fpl-ccd-configuration", + "sscs-tribunals-case-api", + "fpl-ccd-data-migration-tool", + "pip-subscription-management", + "nfdiv-case-api", + "adoption-cos-api", + "ia-case-api", + "reform-scan-notification-service", + "rd-professional-api", + "em-annotation-api", + "sptribs-dss-update-case-web", + "ccd-case-document-am-api", + "probate-ccd-data-migration-tool", + "cmc-ccd-domain", + "ts-translation-service", + "lau-case-backend", + "probate-orchestrator-service", + "cnp-module-api-mgmt-product", + "dm-shared-infrastructure", + "ccfr-fees-register-admin-web", + "finrem-case-orchestration-service", + "fact-api", + "wa-task-monitor", + "sscs-evidence-share", + "rpa-jui-webapp", + "service-auth-provider-app", + "am-shared-infrastructure", + "terraform-module-servicebus-subscription", + "disposer-idam-user", + "probate-health-monitor", + "adoption-shared-infrastructure", + "pre-network", + "et-pet-shared-infrastructure", + "pip-shared-infrastructure-bootstap", + "civil-orchestrator-service", + "darts-shared-infrastructure", + "tax-tribunals-shared-infrastructure", + "bulk-scan-shared-infrastructure", + "ecm-consumer", + "juror-pnc", + "pcq-loader", + "terraform-module-servicebus-queue", + "cnp-module-api-mgmt-api-operation", + "et-ccd-callbacks", + "cnp-module-metric-alert", + "pip-shared-infrastructures", + "lau-shared-infrastructure", + "rd-user-profile-api", + "cnp-module-application-insights", + "ccd-logstash", + "cnp-module-shutterpage", + "rpx-xui-webapp", + "pcq-shared-infrastructure", + "sds-toffee-recipes-service", + "send-letter-service", + "makeaplea-shared-infrastructure", + "am-role-assignment-refresh-batch", + "cnp-idam-storage", + "ia-hearings-api", + "sscs-hearings-api", + "pcq-consolidation-service", + "prl-cos-api", + "ia-case-notifications-api", + "sscs-submit-your-appeal", + "cnp-module-api-mgmt-api", + "darts-automation", + "probate-business-service", + "lau-idam-backend", + "civil-citizen-ui", + "bar-web", + "ccpay-payment-api-gateway", + "cnp-idam-master", + "cnp-pipelinemetrics-database", + "rd-caseworker-ref-api", + "hmi-shared-infrastructures", + "em-native-pdf-annotator-app", + "ccpay-bulkscanning-app", + "probate-shared-infrastructure", + "ccd-admin-web", + "pip-account-management", + "cnp-module-webapp", + "pre-shared-infrastructure", + "dtsse-shared-infrastructure", + "feature-toggle-api", + "et-sya-frontend", + "civil-camunda-bpmn-definition", + "rd-judicial-api", + "sscs-bulk-scan", + "ethos-repl-docmosis-service", + "hmi-rota-dtu", + "c100-shared-infrastructure", + "blob-router-service", + "ccd-case-print-service", + "rd-location-ref-data-load", + "terraform-module-servicebus-topic", + "rd-location-ref-api", + "cpo-case-payment-orders-api", + "rpx-xui-manage-organisations", + "hmc-cft-hearing-service", + "sscs-task-configuration", + "dg-docassembly-api", + "am-role-assignment-batch-service", + "ccpayfr-shared-infrastructure", + "bulk-scan-processor", + "ccd-api-gateway", + "prd-pui-registration", + "cui-ra", + "ccd-case-disposer", + "rpx-xui-terms-and-conditions", + "ccpay-payment-app", + "fact-frontend", + "fact-admin", + "ccd-definition-designer-api", + "div-validation-service", + "sptribs-frontend", + "darts-gateway", + "div-case-data-formatter", + "cnp-module-automation-runbook-start-stop-vm", + "cnp-rhubarb-frontend", + "darts-portal", + "pre-portal", + "div-evidence-management-client-api", + "ccd-admin-web-api" ] \ No newline at end of file From db9e4442b7fb95779f36aa197f69c9ec83c848b1 Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Tue, 27 Aug 2024 12:57:56 +0100 Subject: [PATCH 10/15] updating repos back to test --- production-repos.json | 321 ++---------------------------------------- 1 file changed, 11 insertions(+), 310 deletions(-) diff --git a/production-repos.json b/production-repos.json index 25b9bd9b1..3dd4446e9 100644 --- a/production-repos.json +++ b/production-repos.json @@ -1,312 +1,13 @@ [ - "hmc-shared-infrastructure", - "cmc-citizen-frontend", - "wa-case-event-handler", - "civil-service", - "juror-shared-infrastructure", - "pdm-shared-infrastructure", - "juror-bureau", - "idam-shared-infrastructure", - "ccfr-fees-register-app", - "rd-commondata-api", - "sscs-cor-frontend", - "pip-data-management", - "ctsc-shared-infrastructure", - "camunda-bpm", - "adoption-web", - "rpa-coh-continuous-online-resolution", - "bar-shared-infrastructure", - "rpx-shared-infrastructure", - "div-fees-and-payments-service", - "cnp-module-app-service-plan", - "div-decree-absolute-frontend", - "rpe-shared-infrastructure", - "rpx-xui-approve-org", - "fis-shared-infrastructure", - "div-document-generator-client", - "am-org-role-mapping-service", - "idam-web-public", - "ia-task-configuration", - "et-syr-frontend", - "ia-home-office-integration-api", - "am-role-assignment-service", - "docmosis-infrastructure", - "cnp-idam-vault", - "probate-caveats-frontend", - "cnp-module-palo-alto", - "juror-scheduler-execution", - "sscs-case-loader", - "rd-profile-sync", - "wa-shared-infrastructure", - "cnp-module-api-mgmt-subscription", - "probate-back-office", - "probate-frontend", - "em-shared-infrastructure", - "sptribs-case-api", - "cnp-module-postgres", - "wa-workflow-api", - "sds-keda-infrastructure", - "camunda-shared-infrastructure", - "div-respondent-frontend", - "hmc-hmi-inbound-adapter", - "div-decree-nisi-frontend", - "rpa-em-ccd-orchestrator", - "cnp-rhubarb-shared-infrastructure", - "ccd-data-store-api", - "ccpay-notifications-service", - "ccd-user-profile-api", - "rd-commondata-dataload", - "ccpay-paymentoutcome-web", - "bar-api", - "probate-submit-service", - "cnp-module-storage", - "ia-case-payments-api", - "pip-publication-services", - "div-shared-infrastructure", - "bulk-scan-payment-processor", - "cnp-module-waf", - "sscs-track-your-appeal-frontend", - "c100-application", - "employment-tribunals-shared-infrastructure", - "ia-timed-event-service", - "nfdiv-frontend", - "darts-proxy", - "hmi-apim-infrastructures", - "prl-dgs-api", - "civil-sdt", - "terraform-module-log-analytics-workspace-id", - "prl-wa-task-configuration", - "cnp-module-redis", - "civil-general-apps-ccd-definition", - "fis-hmc-api", - "sds-toffee-shared-infrastructure", - "et-message-handler", - "nfdiv-shared-infrastructure", - "terraform-module-common-tags", - "cnp-owaspdependencycheck-database", - "cnp-module-api-mgmt", - "fpl-wa-task-configuration", - "draft-store", - "cnp-module-key-vault", - "ia-case-documents-api", - "sds-toffee-frontend", - "cnp-rhubarb-recipes-service", - "cnp-module-storage-account", - "rpe-pdf-service", - "finrem-shared-infrastructure", - "em-hrs-ingestor", - "div-case-orchestration-service", - "document-management-store-app", - "cnp-module-action-group", - "terraform-module-application-insights", - "pcq-frontend", - "pdda-shared-infrastructure", - "cnp-module-api-mgmt-api-policy", - "cmc-shared-infrastructure", - "ctsc-work-allocation", - "rd-judicial-data-load", - "reform-scan-shared-infra", - "cnp-idam-compute", - "fact-shared-infrastructure", - "ia-aip-frontend", - "wa-task-configuration-api", - "ccpay-bubble", - "cnp-plum-recipes-service", - "darts-api", - "aac-manage-case-assignment", - "wa-task-management-api", - "prl-ccd-definitions", - "ia-bail-case-api", - "pcq-backend", - "cnp-core-infrastructure", - "snl-shared-infrastructure", - "probatemandb", - "wa-standalone-task-bpmn", - "div-case-maintenance-service", - "sscs-ccd-callback-orchestrator", - "em-icp-api", - "cnp-module-trafficmanager-endpoint", - "prl-citizen-frontend", - "libragob-shared-infrastructure", - "cmc-legal-rep-frontend", - "ccd-definition-store-api", - "cnp-core-compute", - "terraform-module-postgresql-flexible", - "probate-persistence-service", - "disposer-shared-infrastructure", - "ccd-case-management-web", - "ccpay-refunds-app", - "terraform-module-sdp-db-user", - "cnp-keda-shared-infrastucture", - "div-health-monitor", - "ccd-elastic-search", - "cmc-claim-store", - "terraform-module-dynatrace-oneagent", - "ccd-shared-infrastructure", - "juror-public", - "hmi-shared-infrastructures-bootstrap", - "et-shared-infrastructure", - "sptribs-shared-infrastructure", - "juror-scheduler-api", - "cmc-claim-submit-api", - "em-hrs-api", - "rpa-professional-api", - "terraform-module-servicebus-namespace", - "juror-api", - "idam-api", - "help-with-fees-shared-infrastructure", - "civil-sdt-gateway", - "civil-general-applications", - "cnp-module-trafficmanager", - "ccpay-functions-node", - "div-petitioner-frontend", - "em-ccd-orchestrator", - "ccpay-service-request-cpo-update-service", - "ia-shared-infrastructure", - "prl-shared-infrastructure", - "ecm-shared-infrastructure", - "civil-ccd-definition", - "cnp-plum-shared-infrastructure", - "cet-shared-infrastructure", - "sscs-track-your-appeal-notifications", - "pre-vault", - "lau-frontend", - "sscs-cor-backend", - "pre-functions", - "am-judicial-booking-service", - "tax-tribunals-datacapture", - "sscs-shared-infrastructure", - "bulk-scan-orchestrator", - "em-stitching-api", - "idam-user-dashboard", - "cnp-module-vnet", - "et-sya-api", - "rd-shared-infrastructure", - "ia-case-access-api", - "pre-api", - "ccd-case-activity-api", - "family-api-gateway", - "fpl-ccd-configuration", - "sscs-tribunals-case-api", - "fpl-ccd-data-migration-tool", - "pip-subscription-management", - "nfdiv-case-api", - "adoption-cos-api", - "ia-case-api", - "reform-scan-notification-service", - "rd-professional-api", - "em-annotation-api", - "sptribs-dss-update-case-web", - "ccd-case-document-am-api", - "probate-ccd-data-migration-tool", - "cmc-ccd-domain", - "ts-translation-service", - "lau-case-backend", - "probate-orchestrator-service", - "cnp-module-api-mgmt-product", - "dm-shared-infrastructure", - "ccfr-fees-register-admin-web", - "finrem-case-orchestration-service", - "fact-api", - "wa-task-monitor", - "sscs-evidence-share", - "rpa-jui-webapp", - "service-auth-provider-app", - "am-shared-infrastructure", - "terraform-module-servicebus-subscription", - "disposer-idam-user", - "probate-health-monitor", - "adoption-shared-infrastructure", - "pre-network", - "et-pet-shared-infrastructure", - "pip-shared-infrastructure-bootstap", - "civil-orchestrator-service", - "darts-shared-infrastructure", - "tax-tribunals-shared-infrastructure", - "bulk-scan-shared-infrastructure", - "ecm-consumer", - "juror-pnc", - "pcq-loader", - "terraform-module-servicebus-queue", - "cnp-module-api-mgmt-api-operation", - "et-ccd-callbacks", - "cnp-module-metric-alert", - "pip-shared-infrastructures", - "lau-shared-infrastructure", - "rd-user-profile-api", - "cnp-module-application-insights", - "ccd-logstash", - "cnp-module-shutterpage", - "rpx-xui-webapp", - "pcq-shared-infrastructure", - "sds-toffee-recipes-service", - "send-letter-service", - "makeaplea-shared-infrastructure", - "am-role-assignment-refresh-batch", - "cnp-idam-storage", - "ia-hearings-api", - "sscs-hearings-api", - "pcq-consolidation-service", - "prl-cos-api", - "ia-case-notifications-api", - "sscs-submit-your-appeal", - "cnp-module-api-mgmt-api", - "darts-automation", - "probate-business-service", - "lau-idam-backend", - "civil-citizen-ui", - "bar-web", - "ccpay-payment-api-gateway", - "cnp-idam-master", - "cnp-pipelinemetrics-database", - "rd-caseworker-ref-api", - "hmi-shared-infrastructures", - "em-native-pdf-annotator-app", - "ccpay-bulkscanning-app", - "probate-shared-infrastructure", - "ccd-admin-web", - "pip-account-management", - "cnp-module-webapp", - "pre-shared-infrastructure", - "dtsse-shared-infrastructure", - "feature-toggle-api", - "et-sya-frontend", - "civil-camunda-bpmn-definition", - "rd-judicial-api", - "sscs-bulk-scan", - "ethos-repl-docmosis-service", - "hmi-rota-dtu", - "c100-shared-infrastructure", - "blob-router-service", - "ccd-case-print-service", - "rd-location-ref-data-load", - "terraform-module-servicebus-topic", - "rd-location-ref-api", - "cpo-case-payment-orders-api", - "rpx-xui-manage-organisations", - "hmc-cft-hearing-service", - "sscs-task-configuration", - "dg-docassembly-api", - "am-role-assignment-batch-service", - "ccpayfr-shared-infrastructure", - "bulk-scan-processor", - "ccd-api-gateway", - "prd-pui-registration", - "cui-ra", - "ccd-case-disposer", - "rpx-xui-terms-and-conditions", - "ccpay-payment-app", - "fact-frontend", - "fact-admin", - "ccd-definition-designer-api", - "div-validation-service", - "sptribs-frontend", - "darts-gateway", - "div-case-data-formatter", - "cnp-module-automation-runbook-start-stop-vm", - "cnp-rhubarb-frontend", - "darts-portal", - "pre-portal", - "div-evidence-management-client-api", - "ccd-admin-web-api" + "test-repo-1", + "test-repo-1ew34nh9", + "test-repo-uteppyig", + "test-repo-zp4blhyb", + "test-repo-cqky6jdb", + "test-repo-1tqvfwp9", + "test-repo-c2urwskw", + "test-repo-kjgn0hak", + "test-repo-0oobilw3", + "test-repo-q477vy5y", + "test-repo-5gg40sia" ] \ No newline at end of file From 62d8f53f4d7f9a062b53db371f213be850e1794a Mon Sep 17 00:00:00 2001 From: hmcts-platform-operations Date: Tue, 27 Aug 2024 12:03:18 +0000 Subject: [PATCH 11/15] Update repository list and readme --- production-repos.json | 321 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 310 insertions(+), 11 deletions(-) diff --git a/production-repos.json b/production-repos.json index 3dd4446e9..92ebb9694 100644 --- a/production-repos.json +++ b/production-repos.json @@ -1,13 +1,312 @@ [ - "test-repo-1", - "test-repo-1ew34nh9", - "test-repo-uteppyig", - "test-repo-zp4blhyb", - "test-repo-cqky6jdb", - "test-repo-1tqvfwp9", - "test-repo-c2urwskw", - "test-repo-kjgn0hak", - "test-repo-0oobilw3", - "test-repo-q477vy5y", - "test-repo-5gg40sia" + "send-letter-service", + "lau-frontend", + "cnp-rhubarb-frontend", + "div-shared-infrastructure", + "div-case-maintenance-service", + "ia-bail-case-api", + "sptribs-dss-update-case-web", + "ccd-shared-infrastructure", + "fis-hmc-api", + "sscs-task-configuration", + "ia-case-access-api", + "pip-subscription-management", + "cnp-idam-vault", + "cnp-keda-shared-infrastucture", + "finrem-case-orchestration-service", + "idam-api", + "cnp-module-postgres", + "ecm-consumer", + "hmi-rota-dtu", + "draft-store", + "cnp-module-storage", + "rpx-xui-approve-org", + "darts-proxy", + "ccd-admin-web-api", + "ctsc-shared-infrastructure", + "pre-portal", + "ccpay-refunds-app", + "cnp-idam-master", + "c100-shared-infrastructure", + "sscs-evidence-share", + "em-hrs-api", + "ccpay-paymentoutcome-web", + "ccd-api-gateway", + "sscs-ccd-callback-orchestrator", + "sptribs-case-api", + "civil-ccd-definition", + "employment-tribunals-shared-infrastructure", + "pip-publication-services", + "cnp-module-redis", + "am-org-role-mapping-service", + "pre-api", + "probate-frontend", + "am-judicial-booking-service", + "probate-health-monitor", + "cnp-module-vnet", + "cnp-module-key-vault", + "rpe-pdf-service", + "ia-task-configuration", + "em-shared-infrastructure", + "cnp-module-api-mgmt-api-policy", + "wa-task-configuration-api", + "cnp-core-infrastructure", + "idam-shared-infrastructure", + "rpx-xui-terms-and-conditions", + "rd-professional-api", + "pcq-backend", + "rpa-jui-webapp", + "terraform-module-sdp-db-user", + "cnp-module-app-service-plan", + "fact-api", + "rd-shared-infrastructure", + "et-ccd-callbacks", + "div-petitioner-frontend", + "fact-shared-infrastructure", + "em-stitching-api", + "div-case-data-formatter", + "bar-shared-infrastructure", + "sscs-hearings-api", + "ccfr-fees-register-admin-web", + "docmosis-infrastructure", + "civil-general-apps-ccd-definition", + "civil-service", + "em-hrs-ingestor", + "pdm-shared-infrastructure", + "hmi-shared-infrastructures-bootstrap", + "cnp-module-trafficmanager-endpoint", + "ccpay-functions-node", + "dg-docassembly-api", + "cnp-module-api-mgmt-api-operation", + "em-ccd-orchestrator", + "hmc-cft-hearing-service", + "lau-shared-infrastructure", + "rpx-shared-infrastructure", + "reform-scan-shared-infra", + "civil-sdt", + "sscs-track-your-appeal-notifications", + "cnp-module-application-insights", + "hmi-shared-infrastructures", + "terraform-module-dynatrace-oneagent", + "rpe-shared-infrastructure", + "rd-judicial-api", + "ccpay-service-request-cpo-update-service", + "prl-cos-api", + "help-with-fees-shared-infrastructure", + "juror-api", + "ccpay-payment-app", + "bar-web", + "probate-persistence-service", + "ccpay-bubble", + "rd-user-profile-api", + "rpa-em-ccd-orchestrator", + "cnp-module-waf", + "wa-task-management-api", + "cmc-claim-store", + "darts-gateway", + "cmc-citizen-frontend", + "ccd-case-disposer", + "probate-submit-service", + "wa-case-event-handler", + "cnp-module-automation-runbook-start-stop-vm", + "civil-sdt-gateway", + "snl-shared-infrastructure", + "terraform-module-postgresql-flexible", + "wa-task-monitor", + "et-shared-infrastructure", + "juror-bureau", + "juror-public", + "probate-ccd-data-migration-tool", + "hmi-apim-infrastructures", + "am-role-assignment-service", + "makeaplea-shared-infrastructure", + "cnp-module-webapp", + "bar-api", + "lau-case-backend", + "probate-shared-infrastructure", + "ia-case-payments-api", + "reform-scan-notification-service", + "prl-ccd-definitions", + "cet-shared-infrastructure", + "libragob-shared-infrastructure", + "fpl-ccd-data-migration-tool", + "pip-account-management", + "ccd-data-store-api", + "ccd-definition-store-api", + "ccd-case-management-web", + "et-message-handler", + "dtsse-shared-infrastructure", + "cnp-idam-compute", + "sscs-tribunals-case-api", + "ccd-logstash", + "cnp-plum-recipes-service", + "cnp-module-api-mgmt-product", + "c100-application", + "cmc-shared-infrastructure", + "cmc-legal-rep-frontend", + "ia-case-api", + "juror-scheduler-api", + "sds-toffee-shared-infrastructure", + "am-role-assignment-batch-service", + "probate-back-office", + "ccd-definition-designer-api", + "fact-frontend", + "adoption-web", + "civil-general-applications", + "lau-idam-backend", + "bulk-scan-orchestrator", + "div-health-monitor", + "cnp-rhubarb-shared-infrastructure", + "cmc-claim-submit-api", + "cnp-module-storage-account", + "ecm-shared-infrastructure", + "hmc-hmi-inbound-adapter", + "adoption-shared-infrastructure", + "rpa-professional-api", + "terraform-module-application-insights", + "cnp-module-api-mgmt-api", + "sptribs-frontend", + "em-icp-api", + "em-native-pdf-annotator-app", + "dm-shared-infrastructure", + "et-sya-frontend", + "rpa-coh-continuous-online-resolution", + "cnp-owaspdependencycheck-database", + "nfdiv-case-api", + "sds-toffee-recipes-service", + "camunda-shared-infrastructure", + "darts-shared-infrastructure", + "bulk-scan-shared-infrastructure", + "prl-citizen-frontend", + "bulk-scan-processor", + "ethos-repl-docmosis-service", + "et-pet-shared-infrastructure", + "cnp-module-shutterpage", + "pdda-shared-infrastructure", + "pcq-loader", + "sptribs-shared-infrastructure", + "fis-shared-infrastructure", + "prl-wa-task-configuration", + "darts-api", + "cnp-module-palo-alto", + "ccd-case-activity-api", + "sscs-cor-frontend", + "ccd-case-document-am-api", + "civil-orchestrator-service", + "juror-pnc", + "probate-caveats-frontend", + "ccfr-fees-register-app", + "cnp-plum-shared-infrastructure", + "rd-location-ref-api", + "darts-portal", + "fpl-ccd-configuration", + "div-validation-service", + "pcq-shared-infrastructure", + "terraform-module-common-tags", + "fact-admin", + "ccpayfr-shared-infrastructure", + "et-syr-frontend", + "pcq-consolidation-service", + "sds-keda-infrastructure", + "rd-location-ref-data-load", + "cnp-rhubarb-recipes-service", + "pip-shared-infrastructures", + "sscs-cor-backend", + "cmc-ccd-domain", + "idam-web-public", + "am-role-assignment-refresh-batch", + "cpo-case-payment-orders-api", + "ia-case-notifications-api", + "wa-shared-infrastructure", + "sscs-case-loader", + "sds-toffee-frontend", + "ccd-admin-web", + "rpx-xui-webapp", + "div-decree-nisi-frontend", + "cnp-module-api-mgmt", + "aac-manage-case-assignment", + "cnp-idam-storage", + "terraform-module-servicebus-topic", + "ia-hearings-api", + "camunda-bpm", + "div-respondent-frontend", + "ccpay-payment-api-gateway", + "juror-shared-infrastructure", + "pip-data-management", + "rd-profile-sync", + "cnp-module-api-mgmt-subscription", + "cnp-pipelinemetrics-database", + "rd-judicial-data-load", + "civil-camunda-bpmn-definition", + "rpx-xui-manage-organisations", + "probate-orchestrator-service", + "service-auth-provider-app", + "sscs-shared-infrastructure", + "adoption-cos-api", + "pre-network", + "rd-commondata-dataload", + "ia-aip-frontend", + "bulk-scan-payment-processor", + "pre-vault", + "tax-tribunals-shared-infrastructure", + "ccd-case-print-service", + "pcq-frontend", + "tax-tribunals-datacapture", + "terraform-module-servicebus-queue", + "ia-timed-event-service", + "hmc-shared-infrastructure", + "ia-home-office-integration-api", + "cnp-core-compute", + "cui-ra", + "am-shared-infrastructure", + "darts-automation", + "fpl-wa-task-configuration", + "em-annotation-api", + "civil-citizen-ui", + "cnp-module-action-group", + "et-sya-api", + "rd-commondata-api", + "terraform-module-servicebus-namespace", + "rd-caseworker-ref-api", + "ia-shared-infrastructure", + "ccd-elastic-search", + "finrem-shared-infrastructure", + "ccd-user-profile-api", + "probatemandb", + "prl-dgs-api", + "prd-pui-registration", + "document-management-store-app", + "terraform-module-servicebus-subscription", + "ccpay-bulkscanning-app", + "div-evidence-management-client-api", + "idam-user-dashboard", + "ts-translation-service", + "disposer-shared-infrastructure", + "cnp-module-metric-alert", + "pre-shared-infrastructure", + "family-api-gateway", + "wa-workflow-api", + "div-decree-absolute-frontend", + "ctsc-work-allocation", + "probate-business-service", + "div-document-generator-client", + "prl-shared-infrastructure", + "terraform-module-log-analytics-workspace-id", + "nfdiv-frontend", + "blob-router-service", + "disposer-idam-user", + "ccpay-notifications-service", + "juror-scheduler-execution", + "sscs-submit-your-appeal", + "sscs-bulk-scan", + "sscs-track-your-appeal-frontend", + "pip-shared-infrastructure-bootstap", + "feature-toggle-api", + "div-fees-and-payments-service", + "pre-functions", + "nfdiv-shared-infrastructure", + "div-case-orchestration-service", + "ia-case-documents-api", + "cnp-module-trafficmanager", + "wa-standalone-task-bpmn" ] \ No newline at end of file From 42f4977aa311dffe2dbde1358dd0ed3f6f652531 Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Tue, 27 Aug 2024 13:53:28 +0100 Subject: [PATCH 12/15] updating repos back to test --- production-repos.json | 321 ++---------------------------------------- 1 file changed, 11 insertions(+), 310 deletions(-) diff --git a/production-repos.json b/production-repos.json index 92ebb9694..3dd4446e9 100644 --- a/production-repos.json +++ b/production-repos.json @@ -1,312 +1,13 @@ [ - "send-letter-service", - "lau-frontend", - "cnp-rhubarb-frontend", - "div-shared-infrastructure", - "div-case-maintenance-service", - "ia-bail-case-api", - "sptribs-dss-update-case-web", - "ccd-shared-infrastructure", - "fis-hmc-api", - "sscs-task-configuration", - "ia-case-access-api", - "pip-subscription-management", - "cnp-idam-vault", - "cnp-keda-shared-infrastucture", - "finrem-case-orchestration-service", - "idam-api", - "cnp-module-postgres", - "ecm-consumer", - "hmi-rota-dtu", - "draft-store", - "cnp-module-storage", - "rpx-xui-approve-org", - "darts-proxy", - "ccd-admin-web-api", - "ctsc-shared-infrastructure", - "pre-portal", - "ccpay-refunds-app", - "cnp-idam-master", - "c100-shared-infrastructure", - "sscs-evidence-share", - "em-hrs-api", - "ccpay-paymentoutcome-web", - "ccd-api-gateway", - "sscs-ccd-callback-orchestrator", - "sptribs-case-api", - "civil-ccd-definition", - "employment-tribunals-shared-infrastructure", - "pip-publication-services", - "cnp-module-redis", - "am-org-role-mapping-service", - "pre-api", - "probate-frontend", - "am-judicial-booking-service", - "probate-health-monitor", - "cnp-module-vnet", - "cnp-module-key-vault", - "rpe-pdf-service", - "ia-task-configuration", - "em-shared-infrastructure", - "cnp-module-api-mgmt-api-policy", - "wa-task-configuration-api", - "cnp-core-infrastructure", - "idam-shared-infrastructure", - "rpx-xui-terms-and-conditions", - "rd-professional-api", - "pcq-backend", - "rpa-jui-webapp", - "terraform-module-sdp-db-user", - "cnp-module-app-service-plan", - "fact-api", - "rd-shared-infrastructure", - "et-ccd-callbacks", - "div-petitioner-frontend", - "fact-shared-infrastructure", - "em-stitching-api", - "div-case-data-formatter", - "bar-shared-infrastructure", - "sscs-hearings-api", - "ccfr-fees-register-admin-web", - "docmosis-infrastructure", - "civil-general-apps-ccd-definition", - "civil-service", - "em-hrs-ingestor", - "pdm-shared-infrastructure", - "hmi-shared-infrastructures-bootstrap", - "cnp-module-trafficmanager-endpoint", - "ccpay-functions-node", - "dg-docassembly-api", - "cnp-module-api-mgmt-api-operation", - "em-ccd-orchestrator", - "hmc-cft-hearing-service", - "lau-shared-infrastructure", - "rpx-shared-infrastructure", - "reform-scan-shared-infra", - "civil-sdt", - "sscs-track-your-appeal-notifications", - "cnp-module-application-insights", - "hmi-shared-infrastructures", - "terraform-module-dynatrace-oneagent", - "rpe-shared-infrastructure", - "rd-judicial-api", - "ccpay-service-request-cpo-update-service", - "prl-cos-api", - "help-with-fees-shared-infrastructure", - "juror-api", - "ccpay-payment-app", - "bar-web", - "probate-persistence-service", - "ccpay-bubble", - "rd-user-profile-api", - "rpa-em-ccd-orchestrator", - "cnp-module-waf", - "wa-task-management-api", - "cmc-claim-store", - "darts-gateway", - "cmc-citizen-frontend", - "ccd-case-disposer", - "probate-submit-service", - "wa-case-event-handler", - "cnp-module-automation-runbook-start-stop-vm", - "civil-sdt-gateway", - "snl-shared-infrastructure", - "terraform-module-postgresql-flexible", - "wa-task-monitor", - "et-shared-infrastructure", - "juror-bureau", - "juror-public", - "probate-ccd-data-migration-tool", - "hmi-apim-infrastructures", - "am-role-assignment-service", - "makeaplea-shared-infrastructure", - "cnp-module-webapp", - "bar-api", - "lau-case-backend", - "probate-shared-infrastructure", - "ia-case-payments-api", - "reform-scan-notification-service", - "prl-ccd-definitions", - "cet-shared-infrastructure", - "libragob-shared-infrastructure", - "fpl-ccd-data-migration-tool", - "pip-account-management", - "ccd-data-store-api", - "ccd-definition-store-api", - "ccd-case-management-web", - "et-message-handler", - "dtsse-shared-infrastructure", - "cnp-idam-compute", - "sscs-tribunals-case-api", - "ccd-logstash", - "cnp-plum-recipes-service", - "cnp-module-api-mgmt-product", - "c100-application", - "cmc-shared-infrastructure", - "cmc-legal-rep-frontend", - "ia-case-api", - "juror-scheduler-api", - "sds-toffee-shared-infrastructure", - "am-role-assignment-batch-service", - "probate-back-office", - "ccd-definition-designer-api", - "fact-frontend", - "adoption-web", - "civil-general-applications", - "lau-idam-backend", - "bulk-scan-orchestrator", - "div-health-monitor", - "cnp-rhubarb-shared-infrastructure", - "cmc-claim-submit-api", - "cnp-module-storage-account", - "ecm-shared-infrastructure", - "hmc-hmi-inbound-adapter", - "adoption-shared-infrastructure", - "rpa-professional-api", - "terraform-module-application-insights", - "cnp-module-api-mgmt-api", - "sptribs-frontend", - "em-icp-api", - "em-native-pdf-annotator-app", - "dm-shared-infrastructure", - "et-sya-frontend", - "rpa-coh-continuous-online-resolution", - "cnp-owaspdependencycheck-database", - "nfdiv-case-api", - "sds-toffee-recipes-service", - "camunda-shared-infrastructure", - "darts-shared-infrastructure", - "bulk-scan-shared-infrastructure", - "prl-citizen-frontend", - "bulk-scan-processor", - "ethos-repl-docmosis-service", - "et-pet-shared-infrastructure", - "cnp-module-shutterpage", - "pdda-shared-infrastructure", - "pcq-loader", - "sptribs-shared-infrastructure", - "fis-shared-infrastructure", - "prl-wa-task-configuration", - "darts-api", - "cnp-module-palo-alto", - "ccd-case-activity-api", - "sscs-cor-frontend", - "ccd-case-document-am-api", - "civil-orchestrator-service", - "juror-pnc", - "probate-caveats-frontend", - "ccfr-fees-register-app", - "cnp-plum-shared-infrastructure", - "rd-location-ref-api", - "darts-portal", - "fpl-ccd-configuration", - "div-validation-service", - "pcq-shared-infrastructure", - "terraform-module-common-tags", - "fact-admin", - "ccpayfr-shared-infrastructure", - "et-syr-frontend", - "pcq-consolidation-service", - "sds-keda-infrastructure", - "rd-location-ref-data-load", - "cnp-rhubarb-recipes-service", - "pip-shared-infrastructures", - "sscs-cor-backend", - "cmc-ccd-domain", - "idam-web-public", - "am-role-assignment-refresh-batch", - "cpo-case-payment-orders-api", - "ia-case-notifications-api", - "wa-shared-infrastructure", - "sscs-case-loader", - "sds-toffee-frontend", - "ccd-admin-web", - "rpx-xui-webapp", - "div-decree-nisi-frontend", - "cnp-module-api-mgmt", - "aac-manage-case-assignment", - "cnp-idam-storage", - "terraform-module-servicebus-topic", - "ia-hearings-api", - "camunda-bpm", - "div-respondent-frontend", - "ccpay-payment-api-gateway", - "juror-shared-infrastructure", - "pip-data-management", - "rd-profile-sync", - "cnp-module-api-mgmt-subscription", - "cnp-pipelinemetrics-database", - "rd-judicial-data-load", - "civil-camunda-bpmn-definition", - "rpx-xui-manage-organisations", - "probate-orchestrator-service", - "service-auth-provider-app", - "sscs-shared-infrastructure", - "adoption-cos-api", - "pre-network", - "rd-commondata-dataload", - "ia-aip-frontend", - "bulk-scan-payment-processor", - "pre-vault", - "tax-tribunals-shared-infrastructure", - "ccd-case-print-service", - "pcq-frontend", - "tax-tribunals-datacapture", - "terraform-module-servicebus-queue", - "ia-timed-event-service", - "hmc-shared-infrastructure", - "ia-home-office-integration-api", - "cnp-core-compute", - "cui-ra", - "am-shared-infrastructure", - "darts-automation", - "fpl-wa-task-configuration", - "em-annotation-api", - "civil-citizen-ui", - "cnp-module-action-group", - "et-sya-api", - "rd-commondata-api", - "terraform-module-servicebus-namespace", - "rd-caseworker-ref-api", - "ia-shared-infrastructure", - "ccd-elastic-search", - "finrem-shared-infrastructure", - "ccd-user-profile-api", - "probatemandb", - "prl-dgs-api", - "prd-pui-registration", - "document-management-store-app", - "terraform-module-servicebus-subscription", - "ccpay-bulkscanning-app", - "div-evidence-management-client-api", - "idam-user-dashboard", - "ts-translation-service", - "disposer-shared-infrastructure", - "cnp-module-metric-alert", - "pre-shared-infrastructure", - "family-api-gateway", - "wa-workflow-api", - "div-decree-absolute-frontend", - "ctsc-work-allocation", - "probate-business-service", - "div-document-generator-client", - "prl-shared-infrastructure", - "terraform-module-log-analytics-workspace-id", - "nfdiv-frontend", - "blob-router-service", - "disposer-idam-user", - "ccpay-notifications-service", - "juror-scheduler-execution", - "sscs-submit-your-appeal", - "sscs-bulk-scan", - "sscs-track-your-appeal-frontend", - "pip-shared-infrastructure-bootstap", - "feature-toggle-api", - "div-fees-and-payments-service", - "pre-functions", - "nfdiv-shared-infrastructure", - "div-case-orchestration-service", - "ia-case-documents-api", - "cnp-module-trafficmanager", - "wa-standalone-task-bpmn" + "test-repo-1", + "test-repo-1ew34nh9", + "test-repo-uteppyig", + "test-repo-zp4blhyb", + "test-repo-cqky6jdb", + "test-repo-1tqvfwp9", + "test-repo-c2urwskw", + "test-repo-kjgn0hak", + "test-repo-0oobilw3", + "test-repo-q477vy5y", + "test-repo-5gg40sia" ] \ No newline at end of file From c319f406a6b16a2d32e13da1df08489cf14e62b2 Mon Sep 17 00:00:00 2001 From: hmcts-platform-operations Date: Tue, 27 Aug 2024 13:10:10 +0000 Subject: [PATCH 13/15] Update repository list and readme --- production-repos.json | 321 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 310 insertions(+), 11 deletions(-) diff --git a/production-repos.json b/production-repos.json index 3dd4446e9..5f2c77d84 100644 --- a/production-repos.json +++ b/production-repos.json @@ -1,13 +1,312 @@ [ - "test-repo-1", - "test-repo-1ew34nh9", - "test-repo-uteppyig", - "test-repo-zp4blhyb", - "test-repo-cqky6jdb", - "test-repo-1tqvfwp9", - "test-repo-c2urwskw", - "test-repo-kjgn0hak", - "test-repo-0oobilw3", - "test-repo-q477vy5y", - "test-repo-5gg40sia" + "cnp-rhubarb-shared-infrastructure", + "sscs-track-your-appeal-frontend", + "div-document-generator-client", + "prl-ccd-definitions", + "send-letter-service", + "ia-case-notifications-api", + "rpa-professional-api", + "terraform-module-postgresql-flexible", + "cnp-module-automation-runbook-start-stop-vm", + "pcq-backend", + "nfdiv-case-api", + "bulk-scan-payment-processor", + "rpx-xui-approve-org", + "probate-health-monitor", + "ccpay-bulkscanning-app", + "terraform-module-log-analytics-workspace-id", + "cmc-legal-rep-frontend", + "ia-hearings-api", + "am-judicial-booking-service", + "rd-judicial-api", + "cnp-idam-compute", + "rpx-xui-terms-and-conditions", + "et-syr-frontend", + "employment-tribunals-shared-infrastructure", + "et-sya-api", + "ccpayfr-shared-infrastructure", + "ccd-user-profile-api", + "juror-scheduler-api", + "ccd-definition-designer-api", + "cnp-module-postgres", + "cmc-claim-submit-api", + "reform-scan-notification-service", + "pip-shared-infrastructure-bootstap", + "cmc-citizen-frontend", + "sptribs-frontend", + "cnp-module-waf", + "reform-scan-shared-infra", + "probatemandb", + "terraform-module-servicebus-namespace", + "sscs-bulk-scan", + "div-respondent-frontend", + "ts-translation-service", + "civil-camunda-bpmn-definition", + "cnp-module-api-mgmt-api-operation", + "blob-router-service", + "cmc-shared-infrastructure", + "civil-general-applications", + "prl-dgs-api", + "help-with-fees-shared-infrastructure", + "pre-shared-infrastructure", + "ia-shared-infrastructure", + "cnp-module-palo-alto", + "idam-shared-infrastructure", + "c100-application", + "pdda-shared-infrastructure", + "rd-profile-sync", + "ccd-api-gateway", + "cpo-case-payment-orders-api", + "darts-api", + "rd-caseworker-ref-api", + "adoption-cos-api", + "cnp-pipelinemetrics-database", + "prl-cos-api", + "rpa-jui-webapp", + "ctsc-work-allocation", + "civil-ccd-definition", + "civil-general-apps-ccd-definition", + "cnp-idam-storage", + "ethos-repl-docmosis-service", + "pcq-frontend", + "et-sya-frontend", + "snl-shared-infrastructure", + "ccd-case-activity-api", + "cnp-module-trafficmanager-endpoint", + "cnp-module-api-mgmt-product", + "ia-case-documents-api", + "juror-api", + "ccpay-service-request-cpo-update-service", + "wa-task-configuration-api", + "cnp-module-api-mgmt-subscription", + "wa-workflow-api", + "cnp-module-api-mgmt-api-policy", + "cet-shared-infrastructure", + "juror-scheduler-execution", + "ia-bail-case-api", + "juror-pnc", + "sptribs-dss-update-case-web", + "rpa-em-ccd-orchestrator", + "pip-subscription-management", + "bulk-scan-processor", + "rd-user-profile-api", + "sds-toffee-frontend", + "idam-api", + "ccpay-refunds-app", + "sds-keda-infrastructure", + "rd-shared-infrastructure", + "am-role-assignment-service", + "probate-business-service", + "sscs-tribunals-case-api", + "camunda-shared-infrastructure", + "pdm-shared-infrastructure", + "div-case-maintenance-service", + "fpl-ccd-configuration", + "cnp-idam-master", + "rd-professional-api", + "lau-idam-backend", + "cnp-module-redis", + "rpe-shared-infrastructure", + "probate-caveats-frontend", + "ccfr-fees-register-app", + "terraform-module-common-tags", + "pre-vault", + "wa-task-management-api", + "nfdiv-frontend", + "em-stitching-api", + "pip-shared-infrastructures", + "finrem-shared-infrastructure", + "tax-tribunals-datacapture", + "pcq-consolidation-service", + "bulk-scan-orchestrator", + "ccd-elastic-search", + "ccpay-paymentoutcome-web", + "ccd-data-store-api", + "hmc-shared-infrastructure", + "terraform-module-servicebus-subscription", + "pre-api", + "cnp-core-compute", + "idam-user-dashboard", + "ia-task-configuration", + "hmi-shared-infrastructures-bootstrap", + "cnp-owaspdependencycheck-database", + "div-case-data-formatter", + "rd-commondata-api", + "ccd-definition-store-api", + "prl-wa-task-configuration", + "sscs-cor-backend", + "sscs-shared-infrastructure", + "ccd-shared-infrastructure", + "draft-store", + "ctsc-shared-infrastructure", + "sscs-task-configuration", + "dtsse-shared-infrastructure", + "et-message-handler", + "family-api-gateway", + "cmc-ccd-domain", + "cnp-module-shutterpage", + "cnp-module-trafficmanager", + "makeaplea-shared-infrastructure", + "cui-ra", + "sscs-submit-your-appeal", + "hmi-shared-infrastructures", + "div-fees-and-payments-service", + "document-management-store-app", + "ecm-shared-infrastructure", + "terraform-module-servicebus-topic", + "am-shared-infrastructure", + "div-decree-nisi-frontend", + "am-role-assignment-refresh-batch", + "nfdiv-shared-infrastructure", + "fact-api", + "rpx-xui-manage-organisations", + "darts-automation", + "em-ccd-orchestrator", + "ccfr-fees-register-admin-web", + "em-native-pdf-annotator-app", + "em-shared-infrastructure", + "am-org-role-mapping-service", + "probate-persistence-service", + "lau-frontend", + "sscs-ccd-callback-orchestrator", + "cnp-module-api-mgmt", + "darts-shared-infrastructure", + "pip-data-management", + "fact-admin", + "juror-shared-infrastructure", + "juror-bureau", + "sscs-track-your-appeal-notifications", + "sptribs-shared-infrastructure", + "probate-back-office", + "probate-ccd-data-migration-tool", + "civil-orchestrator-service", + "docmosis-infrastructure", + "camunda-bpm", + "div-case-orchestration-service", + "adoption-web", + "fis-shared-infrastructure", + "c100-shared-infrastructure", + "bar-shared-infrastructure", + "pre-portal", + "em-hrs-ingestor", + "ccpay-payment-api-gateway", + "ccd-admin-web-api", + "cnp-module-storage-account", + "cnp-module-storage", + "wa-task-monitor", + "bar-api", + "bulk-scan-shared-infrastructure", + "cnp-module-application-insights", + "ia-case-payments-api", + "cnp-rhubarb-recipes-service", + "fact-frontend", + "rd-location-ref-api", + "ccpay-payment-app", + "libragob-shared-infrastructure", + "cnp-idam-vault", + "wa-standalone-task-bpmn", + "et-pet-shared-infrastructure", + "pip-publication-services", + "ccd-case-disposer", + "div-shared-infrastructure", + "sscs-evidence-share", + "ia-timed-event-service", + "cmc-claim-store", + "feature-toggle-api", + "rpx-shared-infrastructure", + "wa-shared-infrastructure", + "ia-case-api", + "bar-web", + "sscs-case-loader", + "dg-docassembly-api", + "pre-functions", + "terraform-module-servicebus-queue", + "finrem-case-orchestration-service", + "cnp-keda-shared-infrastucture", + "ccd-case-management-web", + "darts-gateway", + "cnp-plum-recipes-service", + "aac-manage-case-assignment", + "civil-sdt", + "hmc-cft-hearing-service", + "rpx-xui-webapp", + "cnp-rhubarb-frontend", + "cnp-core-infrastructure", + "sscs-cor-frontend", + "rd-judicial-data-load", + "ccd-case-document-am-api", + "div-validation-service", + "cnp-module-action-group", + "probate-submit-service", + "pcq-loader", + "prl-shared-infrastructure", + "dm-shared-infrastructure", + "et-ccd-callbacks", + "adoption-shared-infrastructure", + "probate-orchestrator-service", + "ccd-logstash", + "cnp-module-api-mgmt-api", + "rd-commondata-dataload", + "lau-shared-infrastructure", + "civil-citizen-ui", + "sds-toffee-shared-infrastructure", + "div-evidence-management-client-api", + "fpl-ccd-data-migration-tool", + "cnp-module-vnet", + "cnp-module-metric-alert", + "sscs-hearings-api", + "em-icp-api", + "disposer-idam-user", + "service-auth-provider-app", + "div-health-monitor", + "civil-sdt-gateway", + "cnp-plum-shared-infrastructure", + "civil-service", + "fact-shared-infrastructure", + "am-role-assignment-batch-service", + "hmi-rota-dtu", + "prl-citizen-frontend", + "hmc-hmi-inbound-adapter", + "juror-public", + "em-hrs-api", + "div-decree-absolute-frontend", + "rpe-pdf-service", + "ccd-case-print-service", + "pip-account-management", + "sds-toffee-recipes-service", + "ecm-consumer", + "pre-network", + "terraform-module-application-insights", + "ia-aip-frontend", + "fis-hmc-api", + "ccpay-notifications-service", + "sptribs-case-api", + "ia-case-access-api", + "darts-proxy", + "wa-case-event-handler", + "ccpay-bubble", + "darts-portal", + "ccpay-functions-node", + "lau-case-backend", + "probate-shared-infrastructure", + "rpa-coh-continuous-online-resolution", + "em-annotation-api", + "fpl-wa-task-configuration", + "hmi-apim-infrastructures", + "terraform-module-dynatrace-oneagent", + "div-petitioner-frontend", + "cnp-module-app-service-plan", + "cnp-module-key-vault", + "tax-tribunals-shared-infrastructure", + "terraform-module-sdp-db-user", + "rd-location-ref-data-load", + "cnp-module-webapp", + "et-shared-infrastructure", + "ia-home-office-integration-api", + "disposer-shared-infrastructure", + "pcq-shared-infrastructure", + "probate-frontend", + "idam-web-public", + "prd-pui-registration", + "ccd-admin-web" ] \ No newline at end of file From ff8f4c8e68629974cf72764aeab0cdab47c75e26 Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Tue, 27 Aug 2024 15:27:08 +0100 Subject: [PATCH 14/15] updating repos back to test and changing rule set name as it was misleading --- components/main.tf | 2 +- production-repos.json | 321 ++---------------------------------------- 2 files changed, 12 insertions(+), 311 deletions(-) diff --git a/components/main.tf b/components/main.tf index 8bc0249ae..bf4f554e6 100644 --- a/components/main.tf +++ b/components/main.tf @@ -27,7 +27,7 @@ resource "azurerm_storage_container" "tfstate" { } resource "github_organization_ruleset" "default_ruleset" { - name = "Default Branch Protection" + name = "Rule Set" target = "branch" enforcement = "active" diff --git a/production-repos.json b/production-repos.json index 5f2c77d84..3dd4446e9 100644 --- a/production-repos.json +++ b/production-repos.json @@ -1,312 +1,13 @@ [ - "cnp-rhubarb-shared-infrastructure", - "sscs-track-your-appeal-frontend", - "div-document-generator-client", - "prl-ccd-definitions", - "send-letter-service", - "ia-case-notifications-api", - "rpa-professional-api", - "terraform-module-postgresql-flexible", - "cnp-module-automation-runbook-start-stop-vm", - "pcq-backend", - "nfdiv-case-api", - "bulk-scan-payment-processor", - "rpx-xui-approve-org", - "probate-health-monitor", - "ccpay-bulkscanning-app", - "terraform-module-log-analytics-workspace-id", - "cmc-legal-rep-frontend", - "ia-hearings-api", - "am-judicial-booking-service", - "rd-judicial-api", - "cnp-idam-compute", - "rpx-xui-terms-and-conditions", - "et-syr-frontend", - "employment-tribunals-shared-infrastructure", - "et-sya-api", - "ccpayfr-shared-infrastructure", - "ccd-user-profile-api", - "juror-scheduler-api", - "ccd-definition-designer-api", - "cnp-module-postgres", - "cmc-claim-submit-api", - "reform-scan-notification-service", - "pip-shared-infrastructure-bootstap", - "cmc-citizen-frontend", - "sptribs-frontend", - "cnp-module-waf", - "reform-scan-shared-infra", - "probatemandb", - "terraform-module-servicebus-namespace", - "sscs-bulk-scan", - "div-respondent-frontend", - "ts-translation-service", - "civil-camunda-bpmn-definition", - "cnp-module-api-mgmt-api-operation", - "blob-router-service", - "cmc-shared-infrastructure", - "civil-general-applications", - "prl-dgs-api", - "help-with-fees-shared-infrastructure", - "pre-shared-infrastructure", - "ia-shared-infrastructure", - "cnp-module-palo-alto", - "idam-shared-infrastructure", - "c100-application", - "pdda-shared-infrastructure", - "rd-profile-sync", - "ccd-api-gateway", - "cpo-case-payment-orders-api", - "darts-api", - "rd-caseworker-ref-api", - "adoption-cos-api", - "cnp-pipelinemetrics-database", - "prl-cos-api", - "rpa-jui-webapp", - "ctsc-work-allocation", - "civil-ccd-definition", - "civil-general-apps-ccd-definition", - "cnp-idam-storage", - "ethos-repl-docmosis-service", - "pcq-frontend", - "et-sya-frontend", - "snl-shared-infrastructure", - "ccd-case-activity-api", - "cnp-module-trafficmanager-endpoint", - "cnp-module-api-mgmt-product", - "ia-case-documents-api", - "juror-api", - "ccpay-service-request-cpo-update-service", - "wa-task-configuration-api", - "cnp-module-api-mgmt-subscription", - "wa-workflow-api", - "cnp-module-api-mgmt-api-policy", - "cet-shared-infrastructure", - "juror-scheduler-execution", - "ia-bail-case-api", - "juror-pnc", - "sptribs-dss-update-case-web", - "rpa-em-ccd-orchestrator", - "pip-subscription-management", - "bulk-scan-processor", - "rd-user-profile-api", - "sds-toffee-frontend", - "idam-api", - "ccpay-refunds-app", - "sds-keda-infrastructure", - "rd-shared-infrastructure", - "am-role-assignment-service", - "probate-business-service", - "sscs-tribunals-case-api", - "camunda-shared-infrastructure", - "pdm-shared-infrastructure", - "div-case-maintenance-service", - "fpl-ccd-configuration", - "cnp-idam-master", - "rd-professional-api", - "lau-idam-backend", - "cnp-module-redis", - "rpe-shared-infrastructure", - "probate-caveats-frontend", - "ccfr-fees-register-app", - "terraform-module-common-tags", - "pre-vault", - "wa-task-management-api", - "nfdiv-frontend", - "em-stitching-api", - "pip-shared-infrastructures", - "finrem-shared-infrastructure", - "tax-tribunals-datacapture", - "pcq-consolidation-service", - "bulk-scan-orchestrator", - "ccd-elastic-search", - "ccpay-paymentoutcome-web", - "ccd-data-store-api", - "hmc-shared-infrastructure", - "terraform-module-servicebus-subscription", - "pre-api", - "cnp-core-compute", - "idam-user-dashboard", - "ia-task-configuration", - "hmi-shared-infrastructures-bootstrap", - "cnp-owaspdependencycheck-database", - "div-case-data-formatter", - "rd-commondata-api", - "ccd-definition-store-api", - "prl-wa-task-configuration", - "sscs-cor-backend", - "sscs-shared-infrastructure", - "ccd-shared-infrastructure", - "draft-store", - "ctsc-shared-infrastructure", - "sscs-task-configuration", - "dtsse-shared-infrastructure", - "et-message-handler", - "family-api-gateway", - "cmc-ccd-domain", - "cnp-module-shutterpage", - "cnp-module-trafficmanager", - "makeaplea-shared-infrastructure", - "cui-ra", - "sscs-submit-your-appeal", - "hmi-shared-infrastructures", - "div-fees-and-payments-service", - "document-management-store-app", - "ecm-shared-infrastructure", - "terraform-module-servicebus-topic", - "am-shared-infrastructure", - "div-decree-nisi-frontend", - "am-role-assignment-refresh-batch", - "nfdiv-shared-infrastructure", - "fact-api", - "rpx-xui-manage-organisations", - "darts-automation", - "em-ccd-orchestrator", - "ccfr-fees-register-admin-web", - "em-native-pdf-annotator-app", - "em-shared-infrastructure", - "am-org-role-mapping-service", - "probate-persistence-service", - "lau-frontend", - "sscs-ccd-callback-orchestrator", - "cnp-module-api-mgmt", - "darts-shared-infrastructure", - "pip-data-management", - "fact-admin", - "juror-shared-infrastructure", - "juror-bureau", - "sscs-track-your-appeal-notifications", - "sptribs-shared-infrastructure", - "probate-back-office", - "probate-ccd-data-migration-tool", - "civil-orchestrator-service", - "docmosis-infrastructure", - "camunda-bpm", - "div-case-orchestration-service", - "adoption-web", - "fis-shared-infrastructure", - "c100-shared-infrastructure", - "bar-shared-infrastructure", - "pre-portal", - "em-hrs-ingestor", - "ccpay-payment-api-gateway", - "ccd-admin-web-api", - "cnp-module-storage-account", - "cnp-module-storage", - "wa-task-monitor", - "bar-api", - "bulk-scan-shared-infrastructure", - "cnp-module-application-insights", - "ia-case-payments-api", - "cnp-rhubarb-recipes-service", - "fact-frontend", - "rd-location-ref-api", - "ccpay-payment-app", - "libragob-shared-infrastructure", - "cnp-idam-vault", - "wa-standalone-task-bpmn", - "et-pet-shared-infrastructure", - "pip-publication-services", - "ccd-case-disposer", - "div-shared-infrastructure", - "sscs-evidence-share", - "ia-timed-event-service", - "cmc-claim-store", - "feature-toggle-api", - "rpx-shared-infrastructure", - "wa-shared-infrastructure", - "ia-case-api", - "bar-web", - "sscs-case-loader", - "dg-docassembly-api", - "pre-functions", - "terraform-module-servicebus-queue", - "finrem-case-orchestration-service", - "cnp-keda-shared-infrastucture", - "ccd-case-management-web", - "darts-gateway", - "cnp-plum-recipes-service", - "aac-manage-case-assignment", - "civil-sdt", - "hmc-cft-hearing-service", - "rpx-xui-webapp", - "cnp-rhubarb-frontend", - "cnp-core-infrastructure", - "sscs-cor-frontend", - "rd-judicial-data-load", - "ccd-case-document-am-api", - "div-validation-service", - "cnp-module-action-group", - "probate-submit-service", - "pcq-loader", - "prl-shared-infrastructure", - "dm-shared-infrastructure", - "et-ccd-callbacks", - "adoption-shared-infrastructure", - "probate-orchestrator-service", - "ccd-logstash", - "cnp-module-api-mgmt-api", - "rd-commondata-dataload", - "lau-shared-infrastructure", - "civil-citizen-ui", - "sds-toffee-shared-infrastructure", - "div-evidence-management-client-api", - "fpl-ccd-data-migration-tool", - "cnp-module-vnet", - "cnp-module-metric-alert", - "sscs-hearings-api", - "em-icp-api", - "disposer-idam-user", - "service-auth-provider-app", - "div-health-monitor", - "civil-sdt-gateway", - "cnp-plum-shared-infrastructure", - "civil-service", - "fact-shared-infrastructure", - "am-role-assignment-batch-service", - "hmi-rota-dtu", - "prl-citizen-frontend", - "hmc-hmi-inbound-adapter", - "juror-public", - "em-hrs-api", - "div-decree-absolute-frontend", - "rpe-pdf-service", - "ccd-case-print-service", - "pip-account-management", - "sds-toffee-recipes-service", - "ecm-consumer", - "pre-network", - "terraform-module-application-insights", - "ia-aip-frontend", - "fis-hmc-api", - "ccpay-notifications-service", - "sptribs-case-api", - "ia-case-access-api", - "darts-proxy", - "wa-case-event-handler", - "ccpay-bubble", - "darts-portal", - "ccpay-functions-node", - "lau-case-backend", - "probate-shared-infrastructure", - "rpa-coh-continuous-online-resolution", - "em-annotation-api", - "fpl-wa-task-configuration", - "hmi-apim-infrastructures", - "terraform-module-dynatrace-oneagent", - "div-petitioner-frontend", - "cnp-module-app-service-plan", - "cnp-module-key-vault", - "tax-tribunals-shared-infrastructure", - "terraform-module-sdp-db-user", - "rd-location-ref-data-load", - "cnp-module-webapp", - "et-shared-infrastructure", - "ia-home-office-integration-api", - "disposer-shared-infrastructure", - "pcq-shared-infrastructure", - "probate-frontend", - "idam-web-public", - "prd-pui-registration", - "ccd-admin-web" + "test-repo-1", + "test-repo-1ew34nh9", + "test-repo-uteppyig", + "test-repo-zp4blhyb", + "test-repo-cqky6jdb", + "test-repo-1tqvfwp9", + "test-repo-c2urwskw", + "test-repo-kjgn0hak", + "test-repo-0oobilw3", + "test-repo-q477vy5y", + "test-repo-5gg40sia" ] \ No newline at end of file From a0d724fb74366d3361fc27cf22d6879013f2fff3 Mon Sep 17 00:00:00 2001 From: Connor O'Kane Date: Fri, 30 Aug 2024 10:20:02 +0100 Subject: [PATCH 15/15] adding back hmcts org from > hmcts test org --- .github/workflows/terraform.yaml | 1 + components/data.tf | 2 +- components/main.tf | 2 +- components/provider.tf | 2 +- .../set_org_custom_properties.py | 24 +- production-repos.json | 321 +++++++++++++++++- 6 files changed, 316 insertions(+), 36 deletions(-) diff --git a/.github/workflows/terraform.yaml b/.github/workflows/terraform.yaml index cdbae1a65..128cf6c86 100644 --- a/.github/workflows/terraform.yaml +++ b/.github/workflows/terraform.yaml @@ -56,6 +56,7 @@ jobs: - name: Terraform Apply working-directory: components + if: github.event_name == 'push' && github.ref == 'refs/heads/main' env: ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} ARM_SUBSCRIPTION_ID: ${{ secrets.DCD_CFT_SANDBOX_SUBSCRIPTION }} diff --git a/components/data.tf b/components/data.tf index a63147cd2..d5ac41c69 100644 --- a/components/data.tf +++ b/components/data.tf @@ -1,5 +1,5 @@ data "github_team" "admin" { - slug = "test" # Add more teams here if you want to exlcude them from the rulesets + slug = "platform-operations" # Add more teams here if you want to exlcude them from the rulesets } data "local_file" "repos_json" { diff --git a/components/main.tf b/components/main.tf index bf4f554e6..5863f19e4 100644 --- a/components/main.tf +++ b/components/main.tf @@ -27,7 +27,7 @@ resource "azurerm_storage_container" "tfstate" { } resource "github_organization_ruleset" "default_ruleset" { - name = "Rule Set" + name = "Rule Set Production Repositories" target = "branch" enforcement = "active" diff --git a/components/provider.tf b/components/provider.tf index b13060a44..20ed28710 100644 --- a/components/provider.tf +++ b/components/provider.tf @@ -3,7 +3,7 @@ provider "azurerm" { } provider "github" { - owner = "hmcts-test" + owner = "hmcts" token = var.oauth_token } diff --git a/custom-properties/set_org_custom_properties.py b/custom-properties/set_org_custom_properties.py index 5e7eba671..88e811b74 100644 --- a/custom-properties/set_org_custom_properties.py +++ b/custom-properties/set_org_custom_properties.py @@ -15,7 +15,7 @@ raise ValueError("OAUTH_TOKEN environment variable is not set") # Your organisation name -ORG_NAME = "hmcts-test" +ORG_NAME = "hmcts" # Headers for API requests headers = { @@ -26,24 +26,18 @@ def define_custom_property(org_name): """ Define a custom property for the organisation. - 1. Creates a custom property called "is_production" at the organisation level, which is then passed down to the individual repository level. 2. Sends a PUT request to GitHub's API to create the property. 3. Defines the property as a boolean (true/false) value. 4. The JSON file is where all the production repositories are stored, these will then be used to assign custom properties to. - Error Handling: - 1. Checks if the API response status code is not 200. 2. Logs an error message with the specific reason from the API, or a generic HTTP status code error if no specific message is provided. 3. Raises an HTTP error if the request was unsuccessful. - Args: org_name (str): The name of the GitHub organisation. - Returns: int: The status code of the API response (200 if successful). - Raises: requests.RequestException: If the API request to GitHub fails. @@ -70,26 +64,19 @@ def set_custom_properties(repo_full_name, properties): """ 1. Sets custom properties for the repositories listed from the JSON file. 2. Sends a PATCH request to GitHub's API to update the repository's properties. - Sets the custom properties for a repository. - Error Handling: 1. Checks if the API response status code is not 204. 2. Logs an error message with the specific reason from the API, or a generic HTTP status code error if no specific message can be provided. 3. Raises an HTTP error if the request was unsuccessful. - Sets the custom properties for a repository. - Args: repo_full_name (str): The full name of the repository (org/repo). properties (dict): The custom properties to set. - Returns: int: The status code of the API response. - Raises: requests.RequestException: If the API request fails. - """ owner, repo = repo_full_name.split('/') @@ -110,20 +97,15 @@ def set_custom_properties(repo_full_name, properties): def get_custom_properties(repo_full_name): """ Get custom properties for a repository. - 1. Retrieves the current custom properties of the repositories. 2. Sends a GET request to GitHub's API for the specific repository. 3. Returns the custom properties as a JSON object. - Args: repo_full_name (str): The full name of the repository (org/repo). - Returns: dict: The custom properties of the repository. - Raises: requests.RequestException: If the API request fails. - """ owner, repo = repo_full_name.split('/') @@ -137,8 +119,6 @@ def load_production_repos(): 1. Loads a list of production repositories from a JSON file. 2. Reads from the production-repos.json. 3. Parses the JSON content and returns it as a list. - - Error Handling: 1. Handles FileNotFoundError by logging an error if the JSON file is not found, including the expected file path and current directory contents. 2. Handles JSONDecodeError by logging an error if the JSON file cannot be parsed correctly, including the specific error encountered. @@ -147,7 +127,7 @@ def load_production_repos(): script_dir = os.path.dirname(__file__) json_file_path = os.path.join(script_dir, '../production-repos.json') - + try: with open(json_file_path, 'r') as f: repos = json.load(f) diff --git a/production-repos.json b/production-repos.json index 3dd4446e9..14556ec08 100644 --- a/production-repos.json +++ b/production-repos.json @@ -1,13 +1,312 @@ [ - "test-repo-1", - "test-repo-1ew34nh9", - "test-repo-uteppyig", - "test-repo-zp4blhyb", - "test-repo-cqky6jdb", - "test-repo-1tqvfwp9", - "test-repo-c2urwskw", - "test-repo-kjgn0hak", - "test-repo-0oobilw3", - "test-repo-q477vy5y", - "test-repo-5gg40sia" + "pre-shared-infrastructure", + "ecm-shared-infrastructure", + "ctsc-shared-infrastructure", + "fact-admin", + "darts-portal", + "ccd-admin-web-api", + "ccd-data-store-api", + "pdda-shared-infrastructure", + "ccd-case-document-am-api", + "idam-shared-infrastructure", + "help-with-fees-shared-infrastructure", + "sptribs-dss-update-case-web", + "ccpay-bulkscanning-app", + "dm-shared-infrastructure", + "wa-task-configuration-api", + "cmc-claim-store", + "sscs-case-loader", + "prd-pui-registration", + "rpe-shared-infrastructure", + "cnp-rhubarb-frontend", + "cui-ra", + "sscs-cor-frontend", + "bar-api", + "cnp-module-action-group", + "ia-task-configuration", + "cnp-module-redis", + "pip-shared-infrastructure-bootstap", + "et-shared-infrastructure", + "cnp-module-automation-runbook-start-stop-vm", + "cnp-pipelinemetrics-database", + "docmosis-infrastructure", + "rd-location-ref-api", + "hmi-shared-infrastructures", + "ecm-consumer", + "rd-commondata-api", + "sptribs-case-api", + "ccpay-refunds-app", + "ia-home-office-integration-api", + "div-case-data-formatter", + "tax-tribunals-shared-infrastructure", + "prl-wa-task-configuration", + "cnp-module-storage", + "bar-web", + "ccd-elastic-search", + "probate-caveats-frontend", + "terraform-module-dynatrace-oneagent", + "pre-api", + "idam-web-public", + "cnp-module-webapp", + "bar-shared-infrastructure", + "am-judicial-booking-service", + "rpa-professional-api", + "camunda-bpm", + "rpe-pdf-service", + "reform-scan-shared-infra", + "rd-shared-infrastructure", + "rpx-xui-terms-and-conditions", + "em-hrs-ingestor", + "lau-idam-backend", + "civil-orchestrator-service", + "service-auth-provider-app", + "rd-location-ref-data-load", + "civil-service", + "cnp-module-app-service-plan", + "div-case-orchestration-service", + "cnp-module-vnet", + "div-evidence-management-client-api", + "hmc-hmi-inbound-adapter", + "ia-bail-case-api", + "terraform-module-servicebus-topic", + "sscs-ccd-callback-orchestrator", + "bulk-scan-payment-processor", + "prl-cos-api", + "fis-shared-infrastructure", + "nfdiv-shared-infrastructure", + "disposer-shared-infrastructure", + "hmc-shared-infrastructure", + "juror-pnc", + "ccd-case-management-web", + "sscs-submit-your-appeal", + "pip-publication-services", + "ia-aip-frontend", + "civil-sdt-gateway", + "pip-shared-infrastructures", + "fact-api", + "probate-shared-infrastructure", + "cnp-core-infrastructure", + "ccfr-fees-register-app", + "ccd-definition-designer-api", + "terraform-module-sdp-db-user", + "juror-api", + "nfdiv-frontend", + "tax-tribunals-datacapture", + "cet-shared-infrastructure", + "terraform-module-common-tags", + "darts-gateway", + "cnp-module-trafficmanager", + "cmc-claim-submit-api", + "div-respondent-frontend", + "pdm-shared-infrastructure", + "draft-store", + "prl-citizen-frontend", + "rd-user-profile-api", + "rpx-xui-approve-org", + "cnp-idam-vault", + "pcq-loader", + "ia-case-notifications-api", + "lau-case-backend", + "pip-data-management", + "fact-shared-infrastructure", + "civil-citizen-ui", + "am-role-assignment-batch-service", + "ctsc-work-allocation", + "cnp-rhubarb-shared-infrastructure", + "pre-vault", + "ia-case-access-api", + "adoption-cos-api", + "ccd-logstash", + "cnp-module-api-mgmt-api", + "em-native-pdf-annotator-app", + "camunda-shared-infrastructure", + "ccpay-notifications-service", + "div-decree-absolute-frontend", + "et-ccd-callbacks", + "em-shared-infrastructure", + "adoption-web", + "civil-camunda-bpmn-definition", + "ccpay-payment-api-gateway", + "cmc-ccd-domain", + "pcq-consolidation-service", + "ccpay-paymentoutcome-web", + "civil-general-apps-ccd-definition", + "cpo-case-payment-orders-api", + "cmc-shared-infrastructure", + "pre-network", + "terraform-module-postgresql-flexible", + "sscs-shared-infrastructure", + "c100-shared-infrastructure", + "am-role-assignment-service", + "sscs-cor-backend", + "lau-shared-infrastructure", + "et-pet-shared-infrastructure", + "terraform-module-log-analytics-workspace-id", + "wa-task-management-api", + "cnp-plum-shared-infrastructure", + "idam-api", + "hmi-shared-infrastructures-bootstrap", + "cnp-idam-storage", + "ethos-repl-docmosis-service", + "fact-frontend", + "aac-manage-case-assignment", + "pcq-backend", + "ccd-admin-web", + "sscs-hearings-api", + "prl-dgs-api", + "fpl-ccd-data-migration-tool", + "sptribs-shared-infrastructure", + "juror-scheduler-execution", + "bulk-scan-orchestrator", + "sscs-track-your-appeal-frontend", + "em-stitching-api", + "c100-application", + "cmc-legal-rep-frontend", + "juror-scheduler-api", + "pip-subscription-management", + "probate-business-service", + "dg-docassembly-api", + "terraform-module-servicebus-queue", + "juror-bureau", + "cnp-idam-compute", + "snl-shared-infrastructure", + "sds-toffee-recipes-service", + "ccd-definition-store-api", + "div-decree-nisi-frontend", + "probatemandb", + "cnp-module-api-mgmt-api-operation", + "darts-shared-infrastructure", + "cnp-module-palo-alto", + "probate-submit-service", + "hmc-cft-hearing-service", + "sptribs-frontend", + "terraform-module-application-insights", + "div-document-generator-client", + "fpl-ccd-configuration", + "ia-hearings-api", + "ccpay-bubble", + "cnp-module-trafficmanager-endpoint", + "rpx-xui-manage-organisations", + "em-annotation-api", + "prl-ccd-definitions", + "fis-hmc-api", + "rd-judicial-api", + "rd-caseworker-ref-api", + "prl-shared-infrastructure", + "rpa-coh-continuous-online-resolution", + "pre-portal", + "cnp-module-application-insights", + "am-shared-infrastructure", + "wa-workflow-api", + "pcq-shared-infrastructure", + "sscs-tribunals-case-api", + "cnp-rhubarb-recipes-service", + "cnp-core-compute", + "cnp-module-waf", + "idam-user-dashboard", + "reform-scan-notification-service", + "cnp-module-api-mgmt-subscription", + "send-letter-service", + "sds-toffee-frontend", + "pcq-frontend", + "sscs-bulk-scan", + "ia-timed-event-service", + "feature-toggle-api", + "wa-task-monitor", + "cnp-module-api-mgmt", + "cmc-citizen-frontend", + "ccfr-fees-register-admin-web", + "darts-api", + "probate-orchestrator-service", + "et-message-handler", + "ccpay-functions-node", + "family-api-gateway", + "probate-health-monitor", + "ia-case-api", + "juror-shared-infrastructure", + "cnp-idam-master", + "terraform-module-servicebus-namespace", + "rd-profile-sync", + "div-shared-infrastructure", + "ia-case-payments-api", + "ccpay-payment-app", + "et-sya-frontend", + "pre-functions", + "rpx-shared-infrastructure", + "nfdiv-case-api", + "probate-back-office", + "rpx-xui-webapp", + "terraform-module-servicebus-subscription", + "finrem-case-orchestration-service", + "fpl-wa-task-configuration", + "cnp-module-api-mgmt-api-policy", + "bulk-scan-processor", + "civil-ccd-definition", + "civil-sdt", + "div-health-monitor", + "makeaplea-shared-infrastructure", + "cnp-keda-shared-infrastucture", + "rpa-jui-webapp", + "cnp-module-storage-account", + "cnp-owaspdependencycheck-database", + "ia-case-documents-api", + "cnp-module-shutterpage", + "rd-judicial-data-load", + "ccd-case-disposer", + "ccd-user-profile-api", + "finrem-shared-infrastructure", + "ccpay-service-request-cpo-update-service", + "probate-ccd-data-migration-tool", + "lau-frontend", + "et-sya-api", + "ccpayfr-shared-infrastructure", + "cnp-module-postgres", + "sds-toffee-shared-infrastructure", + "bulk-scan-shared-infrastructure", + "darts-proxy", + "am-role-assignment-refresh-batch", + "hmi-rota-dtu", + "employment-tribunals-shared-infrastructure", + "probate-frontend", + "em-ccd-orchestrator", + "am-org-role-mapping-service", + "ccd-shared-infrastructure", + "document-management-store-app", + "juror-public", + "wa-case-event-handler", + "wa-standalone-task-bpmn", + "civil-general-applications", + "sds-keda-infrastructure", + "div-petitioner-frontend", + "pip-account-management", + "em-icp-api", + "ccd-api-gateway", + "cnp-module-metric-alert", + "ccd-case-print-service", + "blob-router-service", + "div-fees-and-payments-service", + "wa-shared-infrastructure", + "cnp-module-key-vault", + "probate-persistence-service", + "div-case-maintenance-service", + "ts-translation-service", + "sscs-track-your-appeal-notifications", + "dtsse-shared-infrastructure", + "em-hrs-api", + "adoption-shared-infrastructure", + "div-validation-service", + "et-syr-frontend", + "sscs-task-configuration", + "libragob-shared-infrastructure", + "cnp-module-api-mgmt-product", + "rd-commondata-dataload", + "hmi-apim-infrastructures", + "darts-automation", + "ia-shared-infrastructure", + "sscs-evidence-share", + "rpa-em-ccd-orchestrator", + "cnp-plum-recipes-service", + "disposer-idam-user", + "rd-professional-api", + "ccd-case-activity-api" ] \ No newline at end of file