name: Django CI Pipeline

on:
  push:
    branches: 
      - main
      - release
      - testing-pipeline
  pull_request:
    branches:
      - main
      - release

jobs:
  test:

    runs-on: self-hosted

    env:
      SECRET_KEY: "t3st-dummy-s3cr3t-k3y"
      STATIC_ROOT: "tmp/static/"
      MEDIA_ROOT: "tmp/media/"

    steps:
    - uses: actions/checkout@v4

    - name: Check version and distribution
      run: |
        uname -srm
        cat /etc/os-release

    - name: Install python3-venv
      id: install
      run: |
        apt-get update
        apt-get install python3 python3-venv python3-pip -y

    - name: Check Python version
      run: |
        python3 --version

    - name: Create virtual environment
      run: |
        python3 -m venv venv
        source venv/bin/activate
        echo "Virtual environment created successfully"
      # https://docs.github.com/en/actions/learn-github-actions/contexts#steps-context
      if: steps.install.outcome == 'success'

    - name: Get DIDKit wheel
      id: didkit
      run: |
        wget -O didkit-0.3.2-cp311-cp311-manylinux_2_34_x86_64.whl https://gitea.pangea.org/api/v1/repos/trustchain-oc1-orchestral/ssikit_trustchain/raw/didkit-0.3.2-cp311-cp311-manylinux_2_34_x86_64.whl?token=${{ secrets.FILE_GETTER_TOKEN }}
        echo "Successfully downloaded DIDkit"

    - name: Install dependencies
      run: |
        source venv/bin/activate
        which python
        pip -V
        pip install --upgrade pip
        pip -V
        python -V
        pip install -r requirements.txt
      if: steps.didkit.outcome == 'success'

    - name: Run tests
      run: |
        source venv/bin/activate
        python manage.py test


  deploy:
    needs: test
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v4

      - name: Trigger Remote Script
        run: |
          response=$(curl -s -o /dev/null -w "%{http_code}" -X POST http://45.150.187.54:5000/trigger-script -H "Authorization: SecretToken")
          if [ "$response" -ne 200 ]; then
          echo "Script execution failed with HTTP status $response"
          exit 1
          else 
          echo "Script execution successful"
          exit 0
          fi
        if: success() && github.ref == 'refs/heads/main'
