name: Publish Docker Image to DockerHub

on:
  workflow_dispatch:
  release:
    types: [published]

jobs:
  release:
    name: Publish Docker Image to DockerHub
    if: github.repository == 'hpcaitech/ColossalAI'
    runs-on: [self-hosted, gpu]
    container:
      image: "hpcaitech/docker-in-docker:latest"
      options: --gpus all --rm -v /var/run/docker.sock:/var/run/docker.sock
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Build Docker
        id: build
        run: |
          version=$(cat version.txt)
          tag=hpcaitech/colossalai:$version
          docker build --build-arg http_proxy=http://172.17.0.1:7890 --build-arg https_proxy=http://172.17.0.1:7890 -t $tag ./docker
          echo "tag=${tag}" >> $GITHUB_OUTPUT
      - name: Log in to Docker Hub
        uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - name: Push Docker image
        run: |
          docker push ${{ steps.build.outputs.tag }}
