Skip to content

Commit

Permalink
Merge pull request #99 from freddydk/main
Browse files Browse the repository at this point in the history
Support Environment name indirection
  • Loading branch information
freddydk authored May 3, 2022
2 parents d825b61 + 567280d commit 96c965b
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 73 deletions.
2 changes: 1 addition & 1 deletion Scenarios/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ When running a workflow or a local script, the settings are applied by reading o
| testFolders | testFolders should be an array of folders (relative to project root), which contains test apps for this project. Apps in these folders are sorted based on dependencies and built, published and tests are run in that order. | [ ] |
| appSourceCopMandatoryAffixes | This setting is only used if the type is AppSource App. The value is an array of affixes, which is used for running AppSource Cop. | [ ] |
| appDependencyProbingPaths | Array of dependency specifications, from which apps will be downloaded when the CI/CD workflow is starting. Every dependency specification consists of the following properties:<br />**repo** = repository<br />**version** = version (default latest)<br />**release_status** = latestBuild/release/prerelease/draft (default latestBuild)<br />**projects** = projects (default * = all)<br />**AuthTokenSecret** = Name of secret containing auth token (default none)<br /> | [ ] |
| environments | Array of environment names. You can specify environments in GitHub environments or in the repo settings file. If you specify environments in the settings file, you can create your AUTHCONTEXT secret using environmentname_AUTHCONTEXT. | [ ] |
| environments | Array of logical environment names. You can specify environments in GitHub environments or in the repo settings file. If you specify environments in the settings file, you can create your AUTHCONTEXT secret using **&lt;environmentname&gt;_AUTHCONTEXT**. If the actual environment name is different from the logical environmentname, then you can create a secret with the actual name called **&lt;environmentname&gt;_ENVIRONMENTNAME** | [ ] |

## Basic Repository settings
The repository settings are only read from the repository settings file (.github\AL-Go-Settings.json)
Expand Down
45 changes: 27 additions & 18 deletions Templates/AppSource App/.github/workflows/CICD.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -214,33 +214,42 @@ jobs:
secrets: ${{ toJson(secrets) }}
with:
settingsJson: ${{ env.Settings }}
secrets: '${{ steps.envName.outputs.envName }}-AuthContext,${{ steps.envName.outputs.envName }}_AuthContext,AuthContext'
secrets: '${{ steps.envName.outputs.envName }}-AuthContext,${{ steps.envName.outputs.envName }}_AuthContext,AuthContext,${{ steps.envName.outputs.envName }}-EnvironmentName,${{ steps.envName.outputs.envName }}_EnvironmentName,EnvironmentName'

- name: AuthContext
id: authContext
run: |
$authContext = [System.Environment]::GetEnvironmentVariable('${{ steps.envName.outputs.envName }}-AuthContext')
if ($authContext) {
Write-Host "Using ${{ steps.envName.outputs.envName }}-AuthContext secret"
}
else {
$authContext = [System.Environment]::GetEnvironmentVariable('${{ steps.envName.outputs.envName }}_AuthContext')
if ($authContext) {
Write-Host "Using ${{ steps.envName.outputs.envName }}_AuthContext secret"
}
else {
$authContext = [System.Environment]::GetEnvironmentVariable('AuthContext')
$envName = '${{ steps.envName.outputs.envName }}'
$authContext = $null
"$($envName)-AuthContext", "$($envName)_AuthContext", "AuthContext" | ForEach-Object {
if (!($authContext)) {
$authContext = [System.Environment]::GetEnvironmentVariable($_)
if ($authContext) {
Write-Host "Using AuthContext secret"
Write-Host "Using $_ secret"
}
else {
Write-Host "::Error::No AuthContext provided"
exit 1
}
}
if (!($authContext)) {
Write-Host "::Error::No AuthContext provided"
exit 1
}
$environmentName = $null
"$($envName)-EnvironmentName", "$($envName)_EnvironmentName", "EnvironmentName" | ForEach-Object {
if (!($EnvironmentName)) {
$EnvironmentName = [System.Environment]::GetEnvironmentVariable($_)
if ($EnvironmentName) {
Write-Host "Using $_ secret"
}
}
}
}
if (!($environmentName)) {
$environmentName = '${{ steps.envName.outputs.envName }}'
}
$environmentName = ($environmentName + '${{ matrix.environment }}'.SubString($envName.Length)).ToUpperInvariant()
Write-Host "::set-output name=authContext::$authContext"
Write-Host "set-output name=authContext::$authContext"
Write-Host "::set-output name=environmentName::$environmentName"
Write-Host "set-output name=environmentName::$environmentName"
- name: Deploy
uses: microsoft/AL-Go-Actions/Deploy@main
Expand All @@ -249,7 +258,7 @@ jobs:
with:
type: 'CD'
projects: '${{ secrets.Projects }}'
environmentName: ${{ matrix.environment }}
environmentName: '${{ steps.authContext.outputs.environmentName }}'
artifacts: '${{ github.workspace }}\artifacts'

PostProcess:
Expand Down
45 changes: 27 additions & 18 deletions Templates/AppSource App/.github/workflows/PublishToEnvironment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,33 +84,42 @@ jobs:
secrets: ${{ toJson(secrets) }}
with:
settingsJson: ${{ env.Settings }}
secrets: '${{ steps.envName.outputs.envName }}-AuthContext,${{ steps.envName.outputs.envName }}_AuthContext,AuthContext'
secrets: '${{ steps.envName.outputs.envName }}-AuthContext,${{ steps.envName.outputs.envName }}_AuthContext,AuthContext,${{ steps.envName.outputs.envName }}-EnvironmentName,${{ steps.envName.outputs.envName }}_EnvironmentName,EnvironmentName'

- name: AuthContext
id: authContext
run: |
$authContext = [System.Environment]::GetEnvironmentVariable('${{ steps.envName.outputs.envName }}-AuthContext')
if ($authContext) {
Write-Host "Using ${{ steps.envName.outputs.envName }}-AuthContext secret"
}
else {
$authContext = [System.Environment]::GetEnvironmentVariable('${{ steps.envName.outputs.envName }}_AuthContext')
if ($authContext) {
Write-Host "Using ${{ steps.envName.outputs.envName }}_AuthContext secret"
}
else {
$authContext = [System.Environment]::GetEnvironmentVariable('AuthContext')
$envName = '${{ steps.envName.outputs.envName }}'
$authContext = $null
"$($envName)-AuthContext", "$($envName)_AuthContext", "AuthContext" | ForEach-Object {
if (!($authContext)) {
$authContext = [System.Environment]::GetEnvironmentVariable($_)
if ($authContext) {
Write-Host "Using AuthContext secret"
Write-Host "Using $_ secret"
}
else {
Write-Host "::Error::No AuthContext provided"
exit 1
}
}
if (!($authContext)) {
Write-Host "::Error::No AuthContext provided"
exit 1
}
$environmentName = $null
"$($envName)-EnvironmentName", "$($envName)_EnvironmentName", "EnvironmentName" | ForEach-Object {
if (!($EnvironmentName)) {
$EnvironmentName = [System.Environment]::GetEnvironmentVariable($_)
if ($EnvironmentName) {
Write-Host "Using $_ secret"
}
}
}
}
if (!($environmentName)) {
$environmentName = '${{ steps.envName.outputs.envName }}'
}
$environmentName = ($environmentName + '${{ matrix.environment }}'.SubString($envName.Length)).ToUpperInvariant()
Write-Host "::set-output name=authContext::$authContext"
Write-Host "set-output name=authContext::$authContext"
Write-Host "::set-output name=environmentName::$environmentName"
Write-Host "set-output name=environmentName::$environmentName"
- name: Deploy
uses: microsoft/AL-Go-Actions/Deploy@main
Expand All @@ -120,7 +129,7 @@ jobs:
parentTelemetryScopeJson: ${{ needs.Initialization.outputs.telemetryScopeJson }}
type: 'Publish'
projects: '${{ secrets.Projects }}'
environmentName: ${{ matrix.environment }}
environmentName: '${{ steps.authContext.outputs.environmentName }}'
artifacts: ${{ github.event.inputs.appVersion }}

PostProcess:
Expand Down
45 changes: 27 additions & 18 deletions Templates/Per Tenant Extension/.github/workflows/CICD.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -214,33 +214,42 @@ jobs:
secrets: ${{ toJson(secrets) }}
with:
settingsJson: ${{ env.Settings }}
secrets: '${{ steps.envName.outputs.envName }}-AuthContext,${{ steps.envName.outputs.envName }}_AuthContext,AuthContext'
secrets: '${{ steps.envName.outputs.envName }}-AuthContext,${{ steps.envName.outputs.envName }}_AuthContext,AuthContext,${{ steps.envName.outputs.envName }}-EnvironmentName,${{ steps.envName.outputs.envName }}_EnvironmentName,EnvironmentName'

- name: AuthContext
id: authContext
run: |
$authContext = [System.Environment]::GetEnvironmentVariable('${{ steps.envName.outputs.envName }}-AuthContext')
if ($authContext) {
Write-Host "Using ${{ steps.envName.outputs.envName }}-AuthContext secret"
}
else {
$authContext = [System.Environment]::GetEnvironmentVariable('${{ steps.envName.outputs.envName }}_AuthContext')
if ($authContext) {
Write-Host "Using ${{ steps.envName.outputs.envName }}_AuthContext secret"
}
else {
$authContext = [System.Environment]::GetEnvironmentVariable('AuthContext')
$envName = '${{ steps.envName.outputs.envName }}'
$authContext = $null
"$($envName)-AuthContext", "$($envName)_AuthContext", "AuthContext" | ForEach-Object {
if (!($authContext)) {
$authContext = [System.Environment]::GetEnvironmentVariable($_)
if ($authContext) {
Write-Host "Using AuthContext secret"
Write-Host "Using $_ secret"
}
else {
Write-Host "::Error::No AuthContext provided"
exit 1
}
}
if (!($authContext)) {
Write-Host "::Error::No AuthContext provided"
exit 1
}
$environmentName = $null
"$($envName)-EnvironmentName", "$($envName)_EnvironmentName", "EnvironmentName" | ForEach-Object {
if (!($EnvironmentName)) {
$EnvironmentName = [System.Environment]::GetEnvironmentVariable($_)
if ($EnvironmentName) {
Write-Host "Using $_ secret"
}
}
}
}
if (!($environmentName)) {
$environmentName = '${{ steps.envName.outputs.envName }}'
}
$environmentName = ($environmentName + '${{ matrix.environment }}'.SubString($envName.Length)).ToUpperInvariant()
Write-Host "::set-output name=authContext::$authContext"
Write-Host "set-output name=authContext::$authContext"
Write-Host "::set-output name=environmentName::$environmentName"
Write-Host "set-output name=environmentName::$environmentName"
- name: Deploy
uses: microsoft/AL-Go-Actions/Deploy@main
Expand All @@ -249,7 +258,7 @@ jobs:
with:
type: 'CD'
projects: '${{ secrets.Projects }}'
environmentName: ${{ matrix.environment }}
environmentName: '${{ steps.authContext.outputs.environmentName }}'
artifacts: '${{ github.workspace }}\artifacts'

PostProcess:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,33 +84,42 @@ jobs:
secrets: ${{ toJson(secrets) }}
with:
settingsJson: ${{ env.Settings }}
secrets: '${{ steps.envName.outputs.envName }}-AuthContext,${{ steps.envName.outputs.envName }}_AuthContext,AuthContext'
secrets: '${{ steps.envName.outputs.envName }}-AuthContext,${{ steps.envName.outputs.envName }}_AuthContext,AuthContext,${{ steps.envName.outputs.envName }}-EnvironmentName,${{ steps.envName.outputs.envName }}_EnvironmentName,EnvironmentName'

- name: AuthContext
id: authContext
run: |
$authContext = [System.Environment]::GetEnvironmentVariable('${{ steps.envName.outputs.envName }}-AuthContext')
if ($authContext) {
Write-Host "Using ${{ steps.envName.outputs.envName }}-AuthContext secret"
}
else {
$authContext = [System.Environment]::GetEnvironmentVariable('${{ steps.envName.outputs.envName }}_AuthContext')
if ($authContext) {
Write-Host "Using ${{ steps.envName.outputs.envName }}_AuthContext secret"
}
else {
$authContext = [System.Environment]::GetEnvironmentVariable('AuthContext')
$envName = '${{ steps.envName.outputs.envName }}'
$authContext = $null
"$($envName)-AuthContext", "$($envName)_AuthContext", "AuthContext" | ForEach-Object {
if (!($authContext)) {
$authContext = [System.Environment]::GetEnvironmentVariable($_)
if ($authContext) {
Write-Host "Using AuthContext secret"
Write-Host "Using $_ secret"
}
else {
Write-Host "::Error::No AuthContext provided"
exit 1
}
}
if (!($authContext)) {
Write-Host "::Error::No AuthContext provided"
exit 1
}
$environmentName = $null
"$($envName)-EnvironmentName", "$($envName)_EnvironmentName", "EnvironmentName" | ForEach-Object {
if (!($EnvironmentName)) {
$EnvironmentName = [System.Environment]::GetEnvironmentVariable($_)
if ($EnvironmentName) {
Write-Host "Using $_ secret"
}
}
}
}
if (!($environmentName)) {
$environmentName = '${{ steps.envName.outputs.envName }}'
}
$environmentName = ($environmentName + '${{ matrix.environment }}'.SubString($envName.Length)).ToUpperInvariant()
Write-Host "::set-output name=authContext::$authContext"
Write-Host "set-output name=authContext::$authContext"
Write-Host "::set-output name=environmentName::$environmentName"
Write-Host "set-output name=environmentName::$environmentName"
- name: Deploy
uses: microsoft/AL-Go-Actions/Deploy@main
Expand All @@ -120,7 +129,7 @@ jobs:
parentTelemetryScopeJson: ${{ needs.Initialization.outputs.telemetryScopeJson }}
type: 'Publish'
projects: '${{ secrets.Projects }}'
environmentName: ${{ matrix.environment }}
environmentName: '${{ steps.authContext.outputs.environmentName }}'
artifacts: ${{ github.event.inputs.appVersion }}

PostProcess:
Expand Down

0 comments on commit 96c965b

Please sign in to comment.