# Copyright 2024 The HuggingFace Inc. team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Inspired by
# https://github.com/huggingface/peft/blob/main/.github/workflows/nightly.yml
name: Nightly

on:
  workflow_dispatch:
  schedule:
    - cron: "0 2 * * *"

permissions: {}

# env:
  # SLACK_API_TOKEN: ${{ secrets.SLACK_API_TOKEN }}
jobs:
  run_all_tests_cpu:
    name: CPU
    strategy:
      fail-fast: false
    runs-on:
      group: aws-general-8-plus
    container:
      image: huggingface/lerobot-cpu:latest
      options: --shm-size "16gb"
      credentials:
        username: ${{ secrets.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_PASSWORD }}
    defaults:
      run:
        shell: bash
        working-directory: /lerobot
    steps:
      - name: Tests
        run: pytest -v --cov=./lerobot --disable-warnings tests

      - name: Tests end-to-end
        run: make test-end-to-end


  run_all_tests_single_gpu:
    name: GPU
    strategy:
      fail-fast: false
    runs-on:
      group: aws-g6-4xlarge-plus
    env:
      CUDA_VISIBLE_DEVICES: "0"
      TEST_TYPE: "single_gpu"
    container:
      image: huggingface/lerobot-gpu:latest
      options: --gpus all --shm-size "16gb"
      credentials:
        username: ${{ secrets.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_PASSWORD }}
    defaults:
      run:
        shell: bash
        working-directory: /lerobot
    steps:
      - name: Nvidia-smi
        run: nvidia-smi

      - name: Test
        run: pytest -v --cov=./lerobot --cov-report=xml --disable-warnings tests
      #   TODO(aliberts): Link with HF Codecov account
      # - name: Upload coverage reports to Codecov with GitHub Action
      #   uses: codecov/codecov-action@v4
      #   with:
      #     files: ./coverage.xml
      #     verbose: true
      - name: Tests end-to-end
        env:
          DEVICE: cuda
        run: make test-end-to-end

    #   - name: Generate Report
    #     if: always()
    #     run: |
    #       pip install slack_sdk tabulate
    #       python scripts/log_reports.py >> $GITHUB_STEP_SUMMARY