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
Azure DevOps Pipeline YAML
GitHub Actions YAML
#Note: login-server needs to be manually set, and the 'REGISTRY_USERNAME' and 'REGISTRY_PASSWORD' secrets are required to be added into GitHub Secrets. See these docs for details: https://github.com/Azure/docker-login
on:
  push:
    branches:
    - main
env:
  dockerRegistryServiceConnection: '{{ containerRegistryConnection.Id }}'
  imageRepository: '{{#toAlphaNumericString imageRepository 50}}{{/toAlphaNumericString}}'
  containerRegistry: '{{ containerRegistryConnection.Authorization.Parameters.loginServer }}'
  dockerfilePath: '{{ dockerfilePath }}'
  tag: ${{ github.run_id }}
jobs:
  BuildJob:
    name: Build and push
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - # "Note: login-server needs to be manually set, and the 'REGISTRY_USERNAME' and 'REGISTRY_PASSWORD' secrets are required to be added into GitHub Secrets. See these docs for details: https://github.com/Azure/docker-login"
      name: Docker Login
      uses: azure/docker-login@v1
      with:
        login-server: ''
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}
    - name: Build and push an image to container registry
      run: |
        docker build --file ${{ env.dockerfilePath }} ${{ env.dockerRegistryServiceConnection }} ${{ env.imageRepository }} --tags ${{ env.tag }}
        docker push --file ${{ env.dockerfilePath }} ${{ env.dockerRegistryServiceConnection }} ${{ env.imageRepository }} --tags ${{ env.tag }}
                    

Add workflow dispatch trigger (run GitHub actions on demand)

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!