name: Build

on: 
  pull_request:
    types: [synchronize, labeled]

jobs:
  build:
    name: Build and Test Colossal-AI
    if: |
        github.event.pull_request.draft == false && 
        (github.base_ref == 'main' || github.base_ref == 'develop') && 
        github.event.pull_request.base.repo.full_name == 'hpcaitech/ColossalAI' &&
        contains( github.event.pull_request.labels.*.name, 'Run Build and Test')
    runs-on: [self-hosted, gpu]
    container:
      image: nvcr.io/nvidia/pytorch:21.07-py3
      options: --gpus all --rm --ipc=host -v /data/scratch/cifar-10:/data/scratch/cifar-10
    timeout-minutes: 20
    steps:
      - name: Setup Environment
        run: |
          export https_proxy=http://172.17.0.1:7890 http_proxy=http://172.17.0.1:7890 all_proxy=socks5://172.17.0.1:7890
      - name: Install dependencies
        run: |
          pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
          pip install -U pip setuptools wheel --user
          pip install pytest tensorboard deepspeed apex
      - uses: actions/checkout@v2
      - name: Install Colossal-AI      
        run: |
          pip install -r requirements/requirements.txt
          pip install -v --no-cache-dir .
      - name: Unit Testing
        run: |
          pytest tests
        env:
          DATA: /data/scratch/cifar-10
