name: Synapse SQL Promotion # Controls when the workflow will run on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: extract_and_publish: # The type of runner that the job will run on runs-on: ubuntu-latest env: SourceServerName: gmsyntest01.sql.azuresynapse.net,1433 SourceDatabaseName: TestDedicatedPool SourceUser: none TargetServerName: gmsynstage01.sql.azuresynapse.net,1433 TargetDatabaseName: TestDedicatedPool TargetUser: none WorkingDirectory: "/tmp/sql" DACPACName: sql.dacpac # Steps represent a sequence of tasks that will be executed as part of the job steps: - id: sql-login name: Adquiring SQL Access Token uses: Azure/azure-resource-login-action@v1.0.0 with: creds: ${{ secrets.AZURE_SQL_CREDENTIALS }} resource-url: "https://database.windows.net" - name: Installing SQL Data Tools shell: bash run: | if test -f "/opt/sqlpackage/sqlpackage"; then echo "::debug::SqlPackage already installed in the context" else sudo apt-get install libunwind8 wget -progress=bar:force -q -O sqlpackage.zip \ https://aka.ms/sqlpackage-linux \ && unzip -qq sqlpackage.zip -d /opt/sqlpackage \ && chmod a+x /opt/sqlpackage/sqlpackage \ && rm sqlpackage.zip fi - name: Extract SQL DACPAC shell: bash run: | echo "::debug::Ensuring target folder '${{ env.WorkingDirectory }}'" mkdir -p ${{ env.WorkingDirectory }} SQLPACKAGE_CMD="/opt/sqlpackage/sqlpackage \ /Action:Extract \ /TargetFile:${{ env.WorkingDirectory }}/${{ env.DACPACName }} \ /SourceServerName:'${{ env.SourceServerName }}' \ /SourceDatabaseName:'${{ env.SourceDatabaseName }}' " if [[ '${{ env.SourceUser }}' != 'none' ]]; then SQLPACKAGE_CMD="$SQLPACKAGE_CMD \ /SourceUser: '${{ env.SourceUser }}' \ /SourcePassword: ${{ secrets.SOURCE_SQL_CREDENTIALS }} " else SQLPACKAGE_CMD="$SQLPACKAGE_CMD \ /AccessToken:'${{ steps.sql-login.outputs.token }}' \ " fi echo "Executing sqlpackage command $SQLPACKAGE_CMD" eval $SQLPACKAGE_CMD - name: Publish SQL DACPAC shell: bash run: | echo "::debug::Ensuring target folder '${{ env.WorkingDirectory }}'" mkdir -p ${{ env.WorkingDirectory }} SQLPACKAGE_CMD="/opt/sqlpackage/sqlpackage \ /Action:Publish \ /SourceFile:${{ env.WorkingDirectory }}/${{ env.DACPACName }} \ /TargetServerName:'${{ env.TargetServerName }}' \ /TargetDatabaseName:'${{ env.TargetDatabaseName }}' " if [[ '${{ env.TargetUser }}' != 'none' ]]; then SQLPACKAGE_CMD="$SQLPACKAGE_CMD \ /TargetUser: '${{ env.SourceUser }}' \ /TargetPassword: ${{ secrets.TARGET_SQL_CREDENTIALS }} " else SQLPACKAGE_CMD="$SQLPACKAGE_CMD \ /AccessToken:'${{ steps.sql-login.outputs.token }}' \ " fi echo "Executing sqlpackage command $SQLPACKAGE_CMD" eval $SQLPACKAGE_CMD