With the following Github Actions workflow example you build customized images with your app and distribute them using image managing Azure services like Shared Image Gallery After you can use these images for creating Virtual Machines or Virtual Machine Scale Sets 😎
name: Build App Node Image (Azure) on: release: types: - created jobs: BUILD-APP-NODE-IMAGE: runs-on: ubuntu-latest steps: - name: CHECKOUT uses: actions/checkout@v2 - name: WORKFLOW ARTIFACTS run:| cd "$GITHUB_WORKSPACE" mkdir workflow-artifacts/ cp -r dist workflow-artifacts/dist cp install.sh workflow-artifacts/install.sh - name: AZURE LOGIN uses: azure/login@v1 with: creds: ${{secrets.AZURE_CREDENTIALS}} - name: BUILD VM IMAGE uses: azure/build-vm-image@v0 with: resource-group-name: 'MyApp' managed-identity: 'myapp-imagebuilder' location: 'westeurope' vm-size: 'Standard_D4s_v3' source-os-type: 'linux' source-image: Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest customizer-source: ${{ GITHUB.WORKSPACE }}/workflow-artifacts customizer-script:| sudo mkdir -p /var/www/myapp sudo cp -r /tmp/workflow-artifacts/* /var/www/myapp/ cd /var/www/myapp/ sudo ./install.sh dist-type: 'SharedImageGallery' dist-resource-id: '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyApp/providers/Microsoft.Compute/galleries/MyAppImageGallery/images/myapp-node' dist-location: 'westeurope'