Skip to content

v2.0.0 Multi-Arch-Tagging for Harbor & ECR

Choose a tag to compare

@AustinM04 AustinM04 released this 26 Feb 23:38
· 11 commits to main since this release

Release Notes - Multi-Architecture Manifest Action

Breaking Changes

Input Parameter Changes

❌ Removed: namespace

The namespace input has been removed and replaced with business-unit.

✅ Added: business-unit

The business-unit input is now required and replaces the old namespace parameter.

✅ Added: aws-account

The aws-account input is now available (optional, defaults to bisnow) for specifying which AWS account to use for ECR access.

Behavior Changes

Dual Registry Support

The action now creates manifests in both Harbor and ECR instead of just Harbor. This means:

  • All architecture images must exist in both registries before manifests can be created
  • Manifests are created in both registries simultaneously
  • Verification checks both registries

Migration Guide

Step 1: Update Input Parameters

Before (Old Version):

- name: Create multi-arch manifests
  uses: bisnow/github-actions-multi-arch-manifest@v1.0
  with:
    image-tag: ${{ inputs.image-tag || env.TAG }}
    service-name: ${{ env.SERVICE_NAME }}
    namespace: ${{ env.NAMESPACE }}  # ❌ This no longer exists

After (New Version):

- name: Create multi-arch manifests
  uses: bisnow/github-actions-multi-arch-manifest@v2.0
  with:
    image-tag: ${{ inputs.image-tag || env.TAG }}
    service-name: ${{ env.SERVICE_NAME }}
    business-unit: ${{ env.BUSINESS_UNIT }}  # ✅ Changed from namespace
    aws-account: ${{ env.AWS_ACCOUNT || 'bisnow' }}  # ✅ Optional, defaults to 'bisnow'

Step 2: Update Environment Variables

If you're using environment variables, update them in your workflow:

Before:

env:
  NAMESPACE: my-namespace

After:

env:
  BUSINESS_UNIT: my-business-unit  # Changed from NAMESPACE
  AWS_ACCOUNT: bisnow  # Optional, only if different from default

Step 3: Ensure Images Exist in Both Registries

The action now requires images to exist in both Harbor and ECR. Make sure your build-and-push action is pushing to both registries:

Harbor Location:

harbor.bisnow.cloud/{business-unit}/{service-name}:{tag}-amd64
harbor.bisnow.cloud/{business-unit}/{service-name}:{tag}-arm64

ECR Location:

560285300220.dkr.ecr.us-east-1.amazonaws.com/{service-name}:{tag}-amd64
560285300220.dkr.ecr.us-east-1.amazonaws.com/{service-name}:{tag}-arm64

Step 4: Update Action Version

Update your action reference to the new major version:

# Old
uses: bisnow/github-actions-multi-arch-manifest@v1.0

# New
uses: bisnow/github-actions-multi-arch-manifest@v2.0

Or pin to a specific version:

uses: bisnow/github-actions-multi-arch-manifest@v2.0.0

Complete Migration Example

Before

name: Create Multi-Platform Manifest
runs-on: arc-runners-bisnow
needs: build-and-push
if: needs.build-and-push.result == 'success'
env:
  TAG: dev-123
  SERVICE_NAME: my-service
  NAMESPACE: my-namespace
steps:
  - name: Create multi-arch manifests
    uses: bisnow/github-actions-multi-arch-manifest@v1.0
    with:
      image-tag: ${{ env.TAG }}
      service-name: ${{ env.SERVICE_NAME }}
      namespace: ${{ env.NAMESPACE }}

After

name: Create Multi-Platform Manifest
runs-on: arc-runners-bisnow
needs: build-and-push
if: needs.build-and-push.result == 'success'
env:
  TAG: dev-123
  SERVICE_NAME: my-service
  BUSINESS_UNIT: my-business-unit  # Changed from NAMESPACE
  AWS_ACCOUNT: bisnow  # Optional, only if different from default
steps:
  - name: Create multi-arch manifests
    uses: bisnow/github-actions-multi-arch-manifest@v2.0
    with:
      image-tag: ${{ env.TAG }}
      service-name: ${{ env.SERVICE_NAME }}
      business-unit: ${{ env.BUSINESS_UNIT }}  # Changed from namespace
      aws-account: ${{ env.AWS_ACCOUNT || 'bisnow' }}  # Optional

What's New

✨ Features

  • Dual Registry Support: Creates manifests in both Harbor and ECR simultaneously
  • Enhanced Verification: Verifies manifests in both registries
  • Better Error Reporting: More detailed error messages showing status for both registries

🔧 Improvements

  • More robust image verification with separate tracking for Harbor and ECR
  • Comprehensive manifest verification for both registries
  • Enhanced GitHub Step Summary with information for both registries

Troubleshooting

Error: "business-unit not provided"

Solution: Replace namespace input with business-unit in your workflow.

Error: "Timeout waiting for architecture images"

Solution: Ensure images exist in both Harbor and ECR with the correct naming:

  • Harbor: harbor.bisnow.cloud/{business-unit}/{service-name}:{tag}-{arch}
  • ECR: 560285300220.dkr.ecr.us-east-1.amazonaws.com/{service-name}:{tag}-{arch}

Error: ECR authentication failures

Solution: Ensure AWS credentials are available and the aws-account input is correct (or defaults to bisnow).

Need Help?

If you encounter issues during migration, please:

  1. Check that your build-and-push action is pushing to both registries
  2. Verify your business-unit value matches your Harbor organization structure
  3. Ensure AWS credentials are properly configured for ECR access