name: Go Test

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
    - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
    - run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
    
    - uses: actions/checkout@v3
    - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
    - run: echo "🖥️ The workflow is now ready to test your code on the runner."
    
    - name: List files in the repository
      run: |
        ls ${{ gitea.workspace }}
    
    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: 1.21.1

    - name: Test
      run: go test -v -race -skip '^TestE2E|TestMain' ./...

    - run: echo "🍏 This job's status is ${{ job.status }}."

  deploy:
    runs-on: ubuntu-latest
    steps:    
    - uses: actions/checkout@v3

    - run: apt-get update && apt-get -y install ansible

    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: 1.21.1

    - name: Build
      run: go build -ldflags "-s -w" -o ./build/ev ./cmd/ev

    - name: Compress
      uses: https://git.sour.is/actions/ghaction-upx@v2.4.0
      with:
        version: latest
        files: |
            ./build/ev
        args: -fq

    - name: Deploy
      uses: https://git.sour.is/actions/action-ansible-playbook@v2
      with:
        playbook: ${{ gitea.workspace }}/.ansible/playbook.yml
        key: ${{secrets.deploy_ssh}}
        options: |
          --inventory .ansible/inventory
          --become
          --become-method sudo
          --user deploy
          --ssh-common-args '-p 65535'

    - run: echo "🍏 This job's status is ${{ job.status }}."
