Allow More Than One CD Pipeline To Run Without Messing Up Release Notes
User Story - Business Need
Currently, our Continuous Deployment (CD) pipeline relies on a GitHub environment variable that contains the current released tag. However, when more than one CD pipeline is running simultaneously, there are race conditions on that environment variable. This can lead to inconsistencies in the release notes, causing problems for our development team.
The Problem
When multiple CD pipelines are running concurrently, they can interfere with each other's access to the environment variable. This can result in:
- Inconsistent release notes: The release notes page may not be created accurately, or the link to the release notes may not be posted to Slack correctly.
- Incorrect release tags: The CD pipeline may source the wrong release tag, leading to confusion and potential issues with the deployment.
User Story
As a VA Notify developer I want to make the release tag environment variable more reliable So that I can deploy more than one pipeline at a time.
Additional Info and Resources
To better understand the issue, let's take a look at the current implementation of the CD pipeline. The pipeline relies on a GitHub environment variable that contains the current released tag. However, when multiple pipelines are running concurrently, they can interfere with each other's access to this environment variable.
Acceptance Criteria
To ensure that the release tag environment variable is more reliable, we need to meet the following acceptance criteria:
- Correct release tag sourcing: When a pipeline runs, regardless of how many others are running, the correct release tag is sourced.
- Accurate release notes page creation: The release notes page is created and accurate, reflecting the correct release tag.
- Correct release notes link posting to Slack: The correct release notes link is posted to Slack, ensuring that team members have access to the latest release information.
QA Considerations
To ensure that the release tag environment variable is more reliable, we need to consider the following QA aspects:
- Testing multiple pipeline runs: We need to test the CD pipeline with multiple runs to ensure that the release tag environment variable is not affected by concurrent pipeline executions.
- Verifying release notes accuracy: We need to verify that the release notes page is created accurately and reflects the correct release tag.
- Checking release notes link posting to Slack: We need to check that the correct release notes link is posted to Slack, ensuring that team members have access to the latest release information.
Potential Dependencies
To implement the changes required to make the release tag environment variable more reliable, we may need to consider the following dependencies:
- GitHub API updates: We may need to update our GitHub API integration to ensure that the release tag environment variable is not affected by concurrent pipeline executions.
- Pipeline configuration updates: We may need to update the pipeline configuration to ensure that the release tag environment variable is sourced correctly, even when multiple pipelines are running concurrently.
Out of Scope
The following aspects are out of scope for this initiative:
- Implementing a new release management tool: While a new release management tool may be beneficial it is not within the scope of this initiative.
- Updating the CD pipeline architecture: While updating the CD pipeline architecture may be beneficial, it is not within the scope of this initiative.
Q: What is the current issue with the CD pipeline?
A: The current issue with the CD pipeline is that it relies on a GitHub environment variable that contains the current released tag. However, when more than one CD pipeline is running simultaneously, there are race conditions on that environment variable, leading to inconsistencies in the release notes.
Q: What are the consequences of this issue?
A: The consequences of this issue are:
- Inconsistent release notes: The release notes page may not be created accurately, or the link to the release notes may not be posted to Slack correctly.
- Incorrect release tags: The CD pipeline may source the wrong release tag, leading to confusion and potential issues with the deployment.
Q: What is the goal of this initiative?
A: The goal of this initiative is to make the release tag environment variable more reliable, allowing us to deploy more than one pipeline at the same time without worrying about inconsistencies in the release notes.
Q: What are the acceptance criteria for this initiative?
A: The acceptance criteria for this initiative are:
- Correct release tag sourcing: When a pipeline runs, regardless of how many others are running, the correct release tag is sourced.
- Accurate release notes page creation: The release notes page is created and accurate, reflecting the correct release tag.
- Correct release notes link posting to Slack: The correct release notes link is posted to Slack, ensuring that team members have access to the latest release information.
Q: What are the QA considerations for this initiative?
A: The QA considerations for this initiative are:
- Testing multiple pipeline runs: We need to test the CD pipeline with multiple runs to ensure that the release tag environment variable is not affected by concurrent pipeline executions.
- Verifying release notes accuracy: We need to verify that the release notes page is created accurately and reflects the correct release tag.
- Checking release notes link posting to Slack: We need to check that the correct release notes link is posted to Slack, ensuring that team members have access to the latest release information.
Q: What are the potential dependencies for this initiative?
A: The potential dependencies for this initiative are:
- GitHub API updates: We may need to update our GitHub API integration to ensure that the release tag environment variable is not affected by concurrent pipeline executions.
- Pipeline configuration updates: We may need to update the pipeline configuration to ensure that the release tag environment variable is sourced correctly, even when multiple pipelines are running concurrently.
Q: What is out of scope for this initiative?
A: The following aspects are out of scope for this initiative:
- Implementing a new release management tool: While a new release management tool may be beneficial, it is not within the scope of this initiative.
- Updating the CD pipeline architecture: While updating the CD pipeline architecture may be beneficial, it is not within the scope of this initiative.
Q: How will this initiative benefit the team?
: This initiative will benefit the team by:
- Improving the reliability of the CD pipeline: By making the release tag environment variable more reliable, we can ensure that the CD pipeline is more efficient and less prone to errors.
- Enhancing the accuracy of release notes: By ensuring that the release notes page is created accurately and reflects the correct release tag, we can provide team members with more accurate and up-to-date information about the latest release.
- Streamlining the deployment process: By allowing us to deploy multiple pipelines at the same time without worrying about inconsistencies in the release notes, we can streamline the deployment process and reduce the time it takes to get new features and updates to production.