name: Build

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 2

      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@v14.1
        with:
          files: |
            go.*
            **/*.go
            integration_test/
            config-example.yaml

      - name: Setup Go
        if: steps.changed-files.outputs.any_changed == 'true'
        uses: actions/setup-go@v2
        with:
          go-version: "1.17.7"

      - name: Install dependencies
        if: steps.changed-files.outputs.any_changed == 'true'
        run: |
          go version
          sudo apt update
          sudo apt install -y make

      - name: Run build
        if: steps.changed-files.outputs.any_changed == 'true'
        run: make build

      - uses: actions/upload-artifact@v2
        if: steps.changed-files.outputs.any_changed == 'true'
        with:
          name: headscale-linux
          path: headscale