# this workflow is triggered by an API call when there is a new PyPI release of LiteLLM
name: Build, Publish LiteLLM Helm Chart. New Release
on:
  workflow_dispatch:
    inputs:
      chartVersion:
        description: "Update the helm chart's version to this"

# Defines two custom environment variables for the workflow. Used for the Container registry domain, and a name for the Docker image that this workflow builds.
env:
  REGISTRY: ghcr.io
  IMAGE_NAME: ${{ github.repository }}
  REPO_OWNER: ${{github.repository_owner}}

# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
jobs:        
  build-and-push-helm-chart:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Log in to the Container registry
        uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      
      - name: lowercase github.repository_owner
        run: |
          echo "REPO_OWNER=`echo ${{github.repository_owner}} | tr '[:upper:]' '[:lower:]'`" >>${GITHUB_ENV}

      - name: Get LiteLLM Latest Tag
        id: current_app_tag
        uses: WyriHaximus/github-action-get-previous-tag@v1.3.0

      - name: Get last published chart version
        id: current_version
        shell: bash
        run: helm show chart oci://${{ env.REGISTRY }}/${{ env.REPO_OWNER }}/litellm-helm | grep '^version:' | awk 'BEGIN{FS=":"}{print "current-version="$2}' | tr -d " " | tee -a $GITHUB_OUTPUT
        env:
          HELM_EXPERIMENTAL_OCI: '1'

      # Automatically update the helm chart version one "patch" level
      - name: Bump release version
        id: bump_version
        uses: christian-draeger/increment-semantic-version@1.1.0
        with:
          current-version: ${{ steps.current_version.outputs.current-version || '0.1.0' }}
          version-fragment: 'bug'

      - uses: ./.github/actions/helm-oci-chart-releaser
        with:
          name: litellm-helm
          repository: ${{ env.REPO_OWNER }}
          tag: ${{ github.event.inputs.chartVersion || steps.bump_version.outputs.next-version || '0.1.0' }}
          app_version: ${{ steps.current_app_tag.outputs.tag || 'latest' }}
          path: deploy/charts/litellm-helm
          registry: ${{ env.REGISTRY }}
          registry_username: ${{ github.actor }}
          registry_password: ${{ secrets.GITHUB_TOKEN }}
          update_dependencies: true
  