Use this guide when moving a JiraPS-style module repository onto shared AtlassianPS.Standards primitives.
- Release a Standards version that contains the helper needed by the downstream repository.
- Bump the downstream repository's
AtlassianPS.Standardsrequirement to that released version. - Replace local helper implementations with calls to Standards helpers.
- Keep product-specific setup, provisioning, and fixtures in the product repository.
- Run the downstream repository's local build, package dry-run, and integration checks.
Do not wire a downstream repository to unreleased Standards helpers.
| Local pattern | Replace with | Notes |
|---|---|---|
| Build artifact copy | Copy-AtlassianPSModuleArtifacts |
Keep task orchestration in the repository build script. |
| Module source compilation | Join-AtlassianPSModuleSource |
Keep the CompileModule task local and readable. |
| Manifest export update | Update-AtlassianPSModuleManifestExports |
Keep the UpdateManifest task local and readable. |
| Local publish dry-run checks | New-AtlassianPSModulePackage, Test-AtlassianPSModulePackage |
Keep package creation and validation as visible steps. |
Local .env parser |
Import-AtlassianPSDotEnvFile |
The helper emits names only, not secret values. |
| Local test module import/cache bootstrap | Initialize-AtlassianPSModuleTestEnvironment |
Keep product-specific test fixtures local. |
Keep behavior local when it knows product semantics or test fixture details.
- Jira session creation and Jira Cloud/Data Center credential mapping.
- Jira issue, filter, version, user, or group fixture creation and cleanup.
- Confluence space/page fixture creation and cleanup.
- Product-specific wait/provisioning scripts such as
Wait-JiraServer.ps1orWait-ConfluenceServer.ps1. - Repository-specific smoke tags, integration track names, and throttling decisions.
- File-level parallel Pester orchestration, unless it is later extracted as a separately reviewed, proven primitive.
- Docker Compose lifecycle orchestration.
- Required integration variable validation when the variables describe product-specific Cloud/Data Center semantics.
Tiny local assertion modules such as Tools/BuildTools.psm1 should usually be removed during adoption rather than standardized.
Use direct throw statements or Standards validation helpers where possible.
- Bump
AtlassianPS.StandardsinTools/build.requirements.psd1after the Standards release. - Replace duplicated build task internals with
Copy-AtlassianPSModuleArtifacts,Join-AtlassianPSModuleSource, andUpdate-AtlassianPSModuleManifestExports, while keeping task dependencies explicit. - Replace publish dry-run internals with
New-AtlassianPSModulePackagefollowed byTest-AtlassianPSModulePackage. - Replace generic portions of
Tests/Helpers/TestTools.ps1withInitialize-AtlassianPSModuleTestEnvironment,Resolve-AtlassianPSModuleSource, andResolve-AtlassianPSProjectRootonly if the result is simpler than the local helper. - Keep Jira-specific helpers in
Tests/Helpers/IntegrationTestTools.ps1, but replace only its.envparser withImport-AtlassianPSDotEnvFileif doing so reduces code. - Keep
Tests/Invoke-ParallelPester.ps1andTools/Wait-JiraServer.ps1local. - Run
Invoke-Build -Task Build, Test. - Run
Invoke-Build -Task Clean, TestPublish. - Run Cloud and Server integration tracks before broadening adoption to other repositories.
Use the downstream repository's standard validation commands after adoption.
Invoke-Build -Task Build, Test
Invoke-Build -Task Clean, TestPublish
Invoke-Build -Task TestIntegration
Invoke-Build -Task TestIntegrationServerThe exact integration commands can differ by product repository.
Use the product repository's AGENTS.md and workflow documentation as the source of truth.