Build a Docker image
Use DuploCloud to build and push a Docker image from GitHub Actions
Build and Push to ECR
This section aims to show you how to build a Docker image and push it to ECR.
It does three things:
- Logs in to AWS ECR (using just-in-time AWS credentials from DuploCloud) 
- Builds and tags your Docker image, with the tags based on the Git commit SHA and ref. 
- Pushes your Docker image 
Example Workflow
Here is an example of a GitHub workflow that builds and pushes a Docker image to ECR.
To use it, ensure the following are configured correctly:
- DUPLO_HOSTenvironment variable
- DUPLO_TOKENenvironment variable
name: Publish Image
on:
  # Triggers the workflow on push to matching branches
  push:
    branches:
    - main
  # (Optional) Allows users to trigger the workflow manually from the GitHub UI
  workflow_dispatch: {}
  # (Optional) Allow other workflows to use this workflow and its outputs
  workflow_call: 
    outputs:
      image:
        description: The URI of the image
        value: ${{ jobs.build_image.outputs.image }}
    secrets:
      DUPLO_TOKEN:
        description: The token to use for DuploCloud API calls
        required: true
env:
  DUPLO_HOST: ${{ vars.DUPLO_HOST }}
  DUPLO_TOKEN: ${{ secrets.DUPLO_TOKEN }}
  # Images are usually stored in a dedicated tenant, so the name doesn't change
  DUPLO_TENANT: devops
jobs:
  build_image:
    name: Build and Push Image
    runs-on: ubuntu-latest
    outputs:
      image: ${{ steps.build_image.outputs.uri }}
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
    # Configures DuploCloud and the host cloud, for example, AWS
    - name: Cloud CI Setup
      uses: 
    
    # logs into the registry, configures Docker, builds the image, and lastly pushes
    - name: Build and Push Docker Image
      id: build_image
      uses: v0.0.5
      with:
        platforms: linux/amd64,linux/arm64
        push: true # false for dry runs
        build-args: >
          foo=bar
          ice_cream=chocolate
          name=${{ github.repository }}References
Last updated
Was this helpful?

