# This workflow will publish a docker image for every full release to the GitHub package repository

name: Create Docker Image on Release

on:
  release:
    # Allow pre-releases
    types: [published]

env:
  # This should allow creation of docker images even in forked repositories
  # Image name may not contain uppercase characters, so we can not use the repository name
  # Creates a string like: ghcr.io/SillyTavern/sillytavern
  image_name: ghcr.io/sillytavern/sillytavern

jobs:

  build:

    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      # Build docker image using dockerfile and tag it with branch name
      # Assumes branch name is the version number
      - name: Build the Docker image
        run: |
          docker build . --file Dockerfile --tag $image_name:${{ github.ref_name }}

      # Login into package repository as the person who created the release
      - name: Login to GitHub Container Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      # Assumes release is the latest and marks image as such
      - name: Docker Tag and Push
        run: |
          docker tag $image_name:${{ github.ref_name }} $image_name:latest
          docker push $image_name:${{ github.ref_name }}
          docker push $image_name:latest
