name: Build OS image on PR

on: [pull_request]

jobs:
  build:

    runs-on: ubuntu-20.04

    steps:
    - name: Run apt update
      run: sudo apt update

    - name: Install dependencies
      run: sudo apt -y install quilt qemu-user-static debootstrap libarchive-tools jq

    - name: Nuke current Docker installation
      run: |
        sudo systemctl stop docker
        sudo apt-get purge docker-ce docker-ce-cli containerd.io moby-engine moby-cli
        sudo rm -rf /var/lib/docker
    - name: Re-install Docker
      run: |
        curl -fsSL https://get.docker.com | sudo sh
        docker --version
    - name: Enable experimental features in Docker
      run: |
        sudo rm -rf /etc/docker/daemon.json
        echo '{"experimental": true}' | sudo tee -a /etc/docker/daemon.json
        sudo systemctl restart docker
    - name: Download Umbrel OS build scripts
      run: |
        git clone git://github.com/getumbrel/umbrel-os.git
    - name: Setting env vars
      env:
        PR: ${{ github.event.number }}
      run: |
        UMBREL_OS_VERSION="dev"
        IMAGE_NAME="umbrel-os-dev"
        UMBREL_REPO="$(curl -s https://api.github.com/repos/getumbrel/umbrel/pulls/${PR} | jq .head.repo.clone_url | sed 's/"//g')"
        UMBREL_BRANCH="$(curl -s https://api.github.com/repos/getumbrel/umbrel/pulls/${PR} | jq .head.ref | sed 's/"//g')"
        echo "::set-env name=UMBREL_OS_VERSION::$UMBREL_OS_VERSION"
        echo "::set-env name=IMAGE_NAME::$IMAGE_NAME"
        echo "::set-env name=UMBREL_REPO::$UMBREL_REPO"
        echo "::set-env name=UMBREL_BRANCH::$UMBREL_BRANCH"
              
    - name: Build Umbrel OS
      run: |
        cd umbrel-os
        echo "Building $IMAGE_NAME"
        sudo IMG_FILENAME=$IMAGE_NAME ZIP_FILENAME=$IMAGE_NAME UMBREL_OS_VERSION=$UMBREL_OS_VERSION UMBREL_REPO=$UMBREL_REPO UMBREL_BRANCH=$UMBREL_BRANCH ./build.sh
        cd ..
        
    - name: Copy ZIP to current working dir
      run: cp umbrel-os/deploy/*.zip ./

    - name: Uploading artifacts
      uses: actions/upload-artifact@v2
      with:
        path: ${{ env.IMAGE_NAME }}.zip
        name: ${{ env.IMAGE_NAME }}.zip