71 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: "Build and push image"
 | 
						|
description: "Builds and pushes an image to a registry"
 | 
						|
 | 
						|
inputs:
 | 
						|
  service:
 | 
						|
    description: "Service to build"
 | 
						|
    required: true
 | 
						|
  registry_host:
 | 
						|
    description: "Image registry host e.g. myacr.azureacr.io"
 | 
						|
    required: true
 | 
						|
  registry_endpoint:
 | 
						|
    description: "Image registry repo e.g. myacr.azureacr.io/eshop"
 | 
						|
    required: true
 | 
						|
  image_name:
 | 
						|
    description: "Name of image"
 | 
						|
    required: true
 | 
						|
  registry_username:
 | 
						|
    description: "Registry username"
 | 
						|
    required: true
 | 
						|
  registry_password:
 | 
						|
    description: "Registry password"
 | 
						|
    required: true
 | 
						|
  
 | 
						|
runs:
 | 
						|
  using: "composite"
 | 
						|
  steps:
 | 
						|
  - name: Enable experimental features for the Docker daemon and CLI
 | 
						|
    shell: bash
 | 
						|
    run: |
 | 
						|
        echo $'{\n  "experimental": true\n}' | sudo tee /etc/docker/daemon.json
 | 
						|
        mkdir -p ~/.docker
 | 
						|
        echo $'{\n  "experimental": "enabled"\n}' | sudo tee ~/.docker/config.json
 | 
						|
        sudo service docker restart
 | 
						|
        docker version -f '{{.Client.Experimental}}'
 | 
						|
        docker version -f '{{.Server.Experimental}}'
 | 
						|
 | 
						|
  - name: Login to Container Registry
 | 
						|
    uses: docker/login-action@v1
 | 
						|
    with:
 | 
						|
      registry: ${{ inputs.registry_host }}
 | 
						|
      username: ${{ inputs.registry_username }}
 | 
						|
      password: ${{ inputs.registry_password }}
 | 
						|
 | 
						|
  - name: Set branch name as env variable
 | 
						|
    run: |
 | 
						|
      currentbranch=$(echo ${GITHUB_REF##*/})
 | 
						|
      echo "running on $currentbranch"
 | 
						|
      echo "BRANCH=$currentbranch" >> $GITHUB_ENV
 | 
						|
    shell: bash
 | 
						|
 | 
						|
  - name: Compose build ${{ inputs.service }}
 | 
						|
    shell: bash
 | 
						|
    run: sudo -E docker-compose build ${{ inputs.service }}
 | 
						|
    working-directory: ./src
 | 
						|
    env:
 | 
						|
      TAG: ${{ env.BRANCH }}
 | 
						|
      REGISTRY: ${{ inputs.registry_endpoint }}
 | 
						|
 | 
						|
  - name: Compose push ${{ inputs.service }}
 | 
						|
    shell: bash
 | 
						|
    run: sudo -E docker-compose push ${{ inputs.service }}
 | 
						|
    working-directory: ./src
 | 
						|
    env:
 | 
						|
      TAG: ${{ env.BRANCH }}
 | 
						|
      REGISTRY: ${{ inputs.registry_endpoint }}
 | 
						|
 | 
						|
  - name: Create multiarch manifest
 | 
						|
    shell: bash
 | 
						|
    run: |
 | 
						|
      docker --config ~/.docker manifest create ${{ inputs.registry_endpoint  }}/${{ inputs.image_name }}:${{ env.BRANCH  }} ${{ inputs.registry_endpoint  }}/${{ inputs.image_name  }}:linux-${{ env.BRANCH  }}
 | 
						|
      docker --config ~/.docker manifest push ${{ inputs.registry_endpoint  }}/${{ inputs.image_name }}:${{ env.BRANCH  }} |