Paste your Azure Pipelines YAML into the left textbox,
then use the "Process YAML" button to generate GitHub Actions YAML
This migration has approximately ~90% accuracy, depending on the YAML tasks.
For tasks unable to be migrated, a comment is added to the results
#Note: the 'AZURE_SP' secret is required to be added into GitHub Secrets. See this blog post for details: https://samlearnsazure.blog/2019/12/13/github-actions/
on:
push:
branches:
- main
pull-request:
branches:
- '*'
env:
buildConfiguration: Release
buildPlatform: Any CPU
jobs:
Build_Stage_Build:
name: Build job
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: 'Copy environment ARM template files to: ${{ github.workspace }}'
run: Copy '${{ github.workspace }}\MyProject\MyProject.ARMTemplates/**\*' '${{ github.workspace }}\ARMTemplates'
- name: Test dotnet code projects
run: dotnet test MyProject/MyProject.Tests/MyProject.Tests.csproj --configuration ${{ env.buildConfiguration }}
- name: Publish dotnet core projects
run: dotnet publish MyProject/MyProject.Web/MyProject.Web.csproj --configuration ${{ env.buildConfiguration }} --output ${{ github.workspace }}
- name: Publish dotnet core functional tests project
run: dotnet publish MyProject/MyProject.FunctionalTests/MyProject.FunctionalTests.csproj --configuration ${{ env.buildConfiguration }} --output ${{ github.workspace }}/FunctionalTests
- name: 'Copy Selenium Files to: ${{ github.workspace }}/FunctionalTests/MyProject.FunctionalTests'
run: Copy 'MyProject/MyProject.FunctionalTests/bin/${{ env.buildConfiguration }}/netcoreapp3.0/*chromedriver.exe*' '${{ github.workspace }}/FunctionalTests/MyProject.FunctionalTests'
- name: Publish Artifact
uses: actions/upload-artifact@v2
with:
path: ${{ github.workspace }}
Deploy_Stage_Deploy:
name: Deploy job
runs-on: ubuntu-latest
env:
AppSettings.Environment: data
ArmTemplateResourceGroupLocation: eu
ResourceGroupName: MyProjectRG
WebsiteName: myproject-web
if: (success() && (github.ref == 'refs/heads/main'))
steps:
- uses: actions/checkout@v2
- # "Note: the 'AZURE_SP' secret is required to be added into GitHub Secrets. See this blog post for details: https://samlearnsazure.blog/2019/12/13/github-actions/"
name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_SP }}
- name: Download the build artifacts
uses: actions/download-artifact@v2
with:
name: drop
path: ${{ github.workspace }}
- name: Deploy ARM Template to resource group
uses: Azure/cli@v1.0.0
with:
inlineScript: az deployment group create --resource-group ${{ env.ResourceGroupName }} --template-file ${{ github.workspace }}/drop/ARMTemplates/azuredeploy.json --parameters ${{ github.workspace }}/drop/ARMTemplates/azuredeploy.parameters.json -environment ${{ env.AppSettings.Environment }} -locationShort ${{ env.ArmTemplateResourceGroupLocation }}
- name: 'Azure App Service Deploy: web site'
uses: Azure/webapps-deploy@v2
with:
app-name: ${{ env.WebsiteName }}
package: ${{ github.workspace }}/drop/MyProject.Web.zip
slot-name: staging
- name: Run functional smoke tests on website
run: |
$vsTestConsoleExe = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\vstest.console.exe"
$targetTestDll = "**\MyProject.FunctionalTests\MyProject.FunctionalTests.dll
"
$testRunSettings = "/Settings:`"${{ github.workspace }}/drop/FunctionalTests/MyProject.FunctionalTests/test.runsettings`" "
#Note that the `" is an escape character to quote strings, and the `& is needed to start the command
$command = "`& `"$vsTestConsoleExe`" `"$targetTestDll`" $testRunSettings $parameters "
Write-Host "$command"
Invoke-Expression $command
shell: powershell
- name: 'Swap Slots: website'
uses: Azure/cli@v1.0.0
with:
inlineScript: az webapp deployment slot swap --resource-group ${{ env.ResourceGroupName }} --name ${{ env.WebsiteName }} --slot staging --target-slot production
Try some samples:
No YAML is captured or stored in the process of the conversion.
The source code for this website, and it's core conversion code, is stored in GitHub and is fully open source.
If you run into a bug, please post an issue!