name: Build Docker Image and Push to ECR on: release: types: [published] workflow_dispatch: inputs: tag_name: description: 'Tag name for the release (e.g., v1.0.11)' required: true type: string env: AWS_REGION: us-east-1 ECR_BACKEND_REPOSITORY: skyvern ECR_UI_REPOSITORY: skyvern-ui REGISTRY_ALIAS: skyvern # t6d4b5t4 DOCKERHUB_USERNAME: skyvern jobs: run-ci: uses: ./.github/workflows/ci.yml build-docker-image: runs-on: ubuntu-latest needs: [run-ci] steps: - name: Check out Git repository uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ env.AWS_REGION }} - name: Login to Amazon ECR Public id: login-ecr-public uses: aws-actions/amazon-ecr-login@v2 with: registry-type: public - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ env.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build, tag, and push backend image to Amazon Public ECR and Docker Hub id: build-image uses: docker/build-push-action@v6 env: ECR_REGISTRY: ${{ steps.login-ecr-public.outputs.registry }} with: context: . platforms: | linux/amd64 linux/arm64 push: true cache-from: type=gha cache-to: type=gha,mode=max tags: | ${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_BACKEND_REPOSITORY }}:${{ github.sha }} ${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_BACKEND_REPOSITORY }}:${{ inputs.tag_name || github.event.release.tag_name }} ${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_BACKEND_REPOSITORY }}:latest ${{ env.DOCKERHUB_USERNAME }}/${{ env.ECR_BACKEND_REPOSITORY }}:${{ github.sha }} ${{ env.DOCKERHUB_USERNAME }}/${{ env.ECR_BACKEND_REPOSITORY }}:${{ inputs.tag_name || github.event.release.tag_name }} ${{ env.DOCKERHUB_USERNAME }}/${{ env.ECR_BACKEND_REPOSITORY }}:latest - name: Build, tag, and push ui image to Amazon Public ECR and Docker Hub id: build-ui-image uses: docker/build-push-action@v6 env: ECR_REGISTRY: ${{ steps.login-ecr-public.outputs.registry }} with: context: . file: Dockerfile.ui cache-from: type=gha cache-to: type=gha,mode=max platforms: | linux/amd64 linux/arm64 push: true tags: | ${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_UI_REPOSITORY }}:${{ github.sha }} ${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_UI_REPOSITORY }}:${{ inputs.tag_name || github.event.release.tag_name }} ${{ env.ECR_REGISTRY}}/${{ env.REGISTRY_ALIAS }}/${{ env.ECR_UI_REPOSITORY }}:latest ${{ env.DOCKERHUB_USERNAME }}/${{ env.ECR_UI_REPOSITORY }}:${{ github.sha }} ${{ env.DOCKERHUB_USERNAME }}/${{ env.ECR_UI_REPOSITORY }}:${{ inputs.tag_name || github.event.release.tag_name }} ${{ env.DOCKERHUB_USERNAME }}/${{ env.ECR_UI_REPOSITORY }}:latest