name: "Build and Push Lambda Image to ECR" description: "Reusable action for building and pushing lambda Docker image to ECR" inputs: lambda_name: description: "Lambda name / ECR repo name" required: true dockerfile_path: description: "Path to Dockerfile" required: true ecr_tf_dir: description: "Path to ECR terrform directory" required: true aws_access_key_id: description: "AWS access key" required: true aws_secret_access_key: description: "AWS secret key" required: true aws_region: description: "AWS region" required: false default: "eu-west-2" runs: using: "composite" steps: - uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ inputs.aws_access_key_id }} aws-secret-access-key: ${{ inputs.aws_secret_access_key }} aws-region: ${{ inputs.aws_region }} - name: Log in to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v2 - name: Deploy ECR uses: ./.github/workflows/actions/terraform-deploy with: working_directory: ${{ inputs.ecr_tf_dir }} aws-access-key-id: ${{ inputs.aws_access_key_id }} aws-secret-access-key: ${{ inputs.aws_secret_access_key }} aws-region: ${{ inputs.aws_region }} - name: Build and push Docker image shell: bash run: | IMAGE_URI=${{ steps.login-ecr.outputs.registry }}/${{ inputs.lambda_name }}:latest echo "Building Docker image for ${{ inputs.lambda_name }}..." docker build -t $IMAGE_URI -f ${{ inputs.dockerfile_path }} . echo "Pushing to ECR..." docker push $IMAGE_URI