OpenLineage Build and Release #19
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: OpenLineage Build and Release | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ main ] | |
paths: | |
- '**.cs' | |
- '**.csproj' | |
- 'tests/integration/**' | |
pull_request: | |
branches: [ main ] | |
paths: | |
- '**.cs' | |
- '**.csproj' | |
- 'tests/integration/**' | |
env: | |
DOTNET_VERSION: '8.x.x' | |
REPO: "function-app/adb-to-purview/src/" | |
TEST: "function-app/adb-to-purview/tests/unit-tests" | |
AZURE_FUNCTIONAPP_PACKAGE_PATH: '${{ github.workspace }}/function-app/adb-to-purview/src/' | |
AZURE_FUNCTIONAPP_TEST_PATH: '${{ github.workspace }}/function-app/adb-to-purview/tests/unit-tests' | |
BUILD_OUTPUT_PATH: '${{ github.workspace }}/build-artifacts' | |
PUBLISH_OUTPUT_PATH: '${{ github.workspace }}/publish-artifacts' | |
BUILD_PACKAGE_NAME: 'az-func.zip' | |
BUILD_CONFIGURATION: 'Release' | |
defaults: | |
run: | |
shell: bash | |
permissions: | |
id-token: write | |
contents: read | |
jobs: | |
############################################################################ | |
build: | |
name: "Build" | |
runs-on: udf-govern | |
steps: | |
- name: 'Checking out source code ...' | |
uses: actions/checkout@v3 | |
- name: echo1 | |
run: echo ${{ github.ref }} | |
- name: echo2 | |
run: echo ${{ github }} | |
- name: 'Setup .NET Environment' | |
uses: actions/setup-dotnet@v1 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: dotnet restore ${{ env.REPO }} | |
- name: Build | |
run: dotnet build ${{ env.REPO }} -c ${{ env.BUILD_CONFIGURATION }} --no-restore | |
- name: Test | |
run: dotnet test ${{ env.TEST }} -c ${{ env.BUILD_CONFIGURATION }} | |
- name: 'Publish' | |
shell: bash | |
run: | | |
publishfolder="${{ env.PUBLISH_OUTPUT_PATH }}" | |
mkdir $publishfolder | |
cd $publishfolder | |
dotnet publish ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }} -c ${{ env.BUILD_CONFIGURATION }} --output . | |
mkdir ${{ env.BUILD_OUTPUT_PATH }} | |
zip -r ${{ env.BUILD_OUTPUT_PATH }}/${{ env.BUILD_PACKAGE_NAME }} . | |
- name: 'Upload Function Zip Build Artifact' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build_artifacts | |
path: ${{ env.BUILD_OUTPUT_PATH }} | |
if-no-files-found: error | |
- name: Create One Line OlToPurviewMappings | |
run: | | |
mkdir ${{ github.workspace }}/artifact-mappings | |
python ${{ github.workspace }}/deployment/util/mappings-remove-spaces.py ${{ github.workspace }}/deployment/infra/OlToPurviewMappings.json > ${{ github.workspace }}/artifact-mappings/one-line-mappings.json | |
sed -i -e 's/mysynapse/${{ vars.SYNAPSE_WORKSPACE_NAME }}/g' ${{ github.workspace }}/artifact-mappings/one-line-mappings.json | |
ls ${{ github.workspace }}/artifact-mappings | |
- name: Upload One Line OlToPurviewMappings Build Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: mappings | |
path: ${{ github.workspace }}/artifact-mappings/one-line-mappings.json | |
############################################################################ | |
deployToDev: | |
if: false # TODO : once dev is ready comment out. # if: github.event_name != 'pull_request' && success() && github.ref == 'refs/features/add-synapse-support' | |
name: "Deploy to Dev" | |
needs: [build] | |
runs-on: udf-govern | |
environment: | |
name: dev | |
env: | |
SECRET_STORE_NAME: ${{ vars.SECRET_STORE }} | |
SECRET_ENV_CODE: dev | |
AZURE_RESOURCE_GROUP_NAME: ${{ vars.AZURE_RESOURCE_GROUP_NAME }} | |
AZURE_FUNCTIONAPP_NAME: ${{ vars.AZURE_FUNCTIONAPP_NAME }} | |
steps: | |
- name: 'Checking out source code ...' | |
uses: actions/checkout@v3 | |
- name: 'Create Artifact Directory' | |
run: | | |
mkdir ${{ env.BUILD_OUTPUT_PATH }} | |
- name: 'Download Application Artifacts' | |
uses: actions/download-artifact@v2 | |
with: | |
name: build_artifacts | |
path: ${{ env.BUILD_OUTPUT_PATH }} | |
- name: Login with Contributor | |
uses: ./.github/actions/login-with-contributor | |
with: | |
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} | |
AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }} | |
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }} | |
SECRET_ENV_CODE: ${SECRET_ENV_CODE} | |
SECRET_STORE_NAME: ${SECRET_STORE_NAME} | |
- name: 'Fetch Azure Functions Publishing Profile' | |
id: fncapp | |
uses: azure/powershell@v1 | |
with: | |
inlineScript: | | |
$profile = "" | |
$profile = Get-AzWebAppPublishingProfile -ResourceGroupName $env:AZURE_RESOURCE_GROUP_NAME -Name $env:AZURE_FUNCTIONAPP_NAME | |
$profile = $profile.Replace("`r", "").Replace("`n", "") | |
Write-Output "::set-output name=pubprofile::$profile" | |
Remove-Variable profile | |
azPSVersion: "latest" | |
- name: 'Deploy Application' | |
uses: azure/functions-action@v1.5.1 | |
with: | |
app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }} | |
package: ${{ env.BUILD_OUTPUT_PATH }}/${{ env.BUILD_PACKAGE_NAME }} | |
publish-profile: ${{ steps.fncapp.outputs.pubprofile }} | |
# TODO : Store as secret ${{ secrets.PUBLISH_PROFILE }} | |
############################################################################ | |
############################################################################ | |
deployToTest: | |
name: "Deploy to Test" | |
needs: [build] # [deployToDev] # TODO : once dev is ready comment out. | |
if: github.event_name != 'pull_request' && success() && github.ref == 'refs/head/features/add-synapse-support' | |
runs-on: udf-govern-int | |
environment: | |
name: int | |
env: | |
SECRET_STORE_NAME: ${{ vars.SECRET_STORE }} | |
SECRET_ENV_CODE: int | |
AZURE_RESOURCE_GROUP_NAME: ${{ vars.AZURE_RESOURCE_GROUP_NAME }} | |
AZURE_FUNCTIONAPP_NAME: ${{ vars.AZURE_FUNCTIONAPP_NAME }} | |
steps: | |
- name: 'Checking out source code ...' | |
uses: actions/checkout@v3 | |
- name: 'Create Artifact Directory' | |
run: | | |
mkdir ${{ env.BUILD_OUTPUT_PATH }} | |
- name: 'Download Application Artifacts' | |
uses: actions/download-artifact@v2 | |
with: | |
name: build_artifacts | |
path: ${{ env.BUILD_OUTPUT_PATH }} | |
- name: Login with Contributor | |
uses: ./.github/actions/login-with-contributor | |
with: | |
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} | |
AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }} | |
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }} | |
SECRET_ENV_CODE: ${SECRET_ENV_CODE} | |
SECRET_STORE_NAME: ${SECRET_STORE_NAME} | |
- name: 'Fetch Azure Functions Publishing Profile' | |
id: fncapp | |
uses: azure/powershell@v1 | |
with: | |
inlineScript: | | |
$profile = "" | |
$profile = Get-AzWebAppPublishingProfile -ResourceGroupName $env:AZURE_RESOURCE_GROUP_NAME -Name $env:AZURE_FUNCTIONAPP_NAME | |
$profile = $profile.Replace("`r", "").Replace("`n", "") | |
Write-Output "::set-output name=pubprofile::$profile" | |
Remove-Variable profile | |
azPSVersion: "latest" | |
- name: 'Deploy Application' | |
uses: azure/functions-action@v1.5.1 | |
with: | |
app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }} | |
package: ${{ env.BUILD_OUTPUT_PATH }}/${{ env.BUILD_PACKAGE_NAME }} | |
publish-profile: ${{ steps.fncapp.outputs.pubprofile }} | |
############################################################################ | |
deployToPt: | |
name: "Deploy to PT" | |
needs: [deployToTest] | |
if: github.event_name != 'pull_request' && success() && github.ref == 'refs/head/features/add-synapse-support' | |
runs-on: udf-govern-pt | |
environment: | |
name: "pt" | |
env: | |
SECRET_STORE_NAME: ${{ vars.SECRET_STORE }} | |
SECRET_ENV_CODE: pt | |
AZURE_RESOURCE_GROUP_NAME: ${{ vars.AZURE_RESOURCE_GROUP_NAME }} | |
AZURE_FUNCTIONAPP_NAME: ${{ vars.AZURE_FUNCTIONAPP_NAME }} | |
steps: | |
- name: 'Checking out source code ...' | |
uses: actions/checkout@v3 | |
- name: 'Create Artifact Directory' | |
run: | | |
mkdir ${{ env.BUILD_OUTPUT_PATH }} | |
- name: 'Download Application Artifacts' | |
uses: actions/download-artifact@v2 | |
with: | |
name: build_artifacts | |
path: ${{ env.BUILD_OUTPUT_PATH }} | |
- name: Login with Contributor | |
uses: ./.github/actions/login-with-contributor | |
with: | |
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} | |
AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }} | |
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }} | |
SECRET_ENV_CODE: ${SECRET_ENV_CODE} | |
SECRET_STORE_NAME: ${SECRET_STORE_NAME} | |
- name: 'Fetch Azure Functions Publishing Profile' | |
id: fncapp | |
uses: azure/powershell@v1 | |
with: | |
inlineScript: | | |
$profile = "" | |
$profile = Get-AzWebAppPublishingProfile -ResourceGroupName $env:AZURE_RESOURCE_GROUP_NAME -Name $env:AZURE_FUNCTIONAPP_NAME | |
$profile = $profile.Replace("`r", "").Replace("`n", "") | |
Write-Output "::set-output name=pubprofile::$profile" | |
Remove-Variable profile | |
azPSVersion: "latest" | |
- name: 'Deploy Application' | |
uses: azure/functions-action@v1.5.1 | |
with: | |
app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }} | |
package: ${{ env.BUILD_OUTPUT_PATH }}/${{ env.BUILD_PACKAGE_NAME }} | |
publish-profile: ${{ steps.fncapp.outputs.pubprofile }} |