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
        run: |
          version=$(cat version.txt)
          docker build --build-arg http_proxy=http://172.17.0.1:7890 --build-arg https_proxy=http://172.17.0.1:7890 -t hpcaitech/colossalai:$version ./docker
      - name: Log in to Docker Hub
        uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
        with:
          images: hpcaitech/colossalai
      - name: Build and push Docker image
        uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
