name: Release bdist wheel for Nightly versions

on:
  schedule:
    # run at 00:00 of every Sunday
    - cron:  '0 0 * * 6'
  workflow_dispatch:

jobs:
  matrix_preparation:
    name: Prepare Container List
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}
    steps:
    - id: set-matrix
      run: |
        matrix="[\"hpcaitech/cuda-conda:11.3\", \"hpcaitech/cuda-conda:10.2\"]"
        echo $matrix
        echo "::set-output name=matrix::{\"container\":$(echo $matrix)}"

  build:
    name: Release bdist wheels
    needs: matrix_preparation
    if: github.repository == 'hpcaitech/ColossalAI' && contains(fromJson('["FrankLeeeee", "ver217", "feifeibear", "kurisusnowdeng"]'), github.actor)
    runs-on: [self-hosted, gpu]
    strategy:
      fail-fast: false
      matrix: ${{fromJson(needs.matrix_preparation.outputs.matrix)}}
    container:
      image: ${{ matrix.container }}
      options: --gpus all --rm
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
      # cub is for cuda 10.2
      - name: Copy scripts and checkout
        run: |
          cp -r ./.github/workflows/scripts/* ./
          ln -s /github/home/pip_wheels ./pip_wheels
          wget https://github.com/NVIDIA/cub/archive/refs/tags/1.8.0.zip
          unzip 1.8.0.zip
      - name: Build bdist wheel
        run: |
          pip install beautifulsoup4 requests packaging
          python ./build_colossalai_wheel.py --nightly
      - name: 🚀 Deploy
        uses: garygrossgarten/github-action-scp@release
        with:
          local: all_dist
          remote: ${{ secrets.PRIVATE_PYPI_NIGHTLY_DIR }}
          host: ${{ secrets.PRIVATE_PYPI_HOST }}
          username: ${{ secrets.PRIVATE_PYPI_USER }}
          password: ${{ secrets.PRIVATE_PYPI_PASSWD }}
  remove_old_build:
    name: Remove old nightly build
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: executing remote ssh commands using password
        uses: appleboy/ssh-action@master
        env:
          BUILD_DIR: ${{ secrets.PRIVATE_PYPI_NIGHTLY_DIR }}
        with:
          host: ${{ secrets.PRIVATE_PYPI_HOST }}
          username: ${{ secrets.PRIVATE_PYPI_USER }}
          password: ${{ secrets.PRIVATE_PYPI_PASSWD }}
          envs: BUILD_DIR
          script: |
            cd $BUILD_DIR
            find . -type f -mtime +0 -exec rm -f {} +
          script_stop: true
