name: Build

"on":
  "push":
    "tags":
      - "v*"
    "branches":
      - "*"
  "pull_request":

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      GO111MODULE: "on"
    steps:
      - uses: actions/checkout@master

      - uses: actions/setup-go@v2
        with:
          go-version: 1.17.6

      - name: Prepare environment
        run: |-
          RELEASE_VERSION="${GITHUB_REF##*/}"
          if [[ "${RELEASE_VERSION}" != v* ]]; then RELEASE_VERSION='dev'; fi
          echo "RELEASE_VERSION=\"${RELEASE_VERSION}@${GITHUB_SHA:0:10}\"" | tee -a $GITHUB_ENV
          go mod vendor

      # Test
      - name: Unit Testing
        run: go test .

      # Win
      - run: GOOS=windows GOARCH=386 VERSION=${RELEASE_VERSION} make release
      - run: GOOS=windows GOARCH=amd64 VERSION=${RELEASE_VERSION} make release
      - run: GOOS=windows GOARCH=arm64 VERSION=${RELEASE_VERSION} make release

      # MacOS
      - run: GOOS=darwin GOARCH=amd64 VERSION=${RELEASE_VERSION} make release
      - run: GOOS=darwin GOARCH=arm64 VERSION=${RELEASE_VERSION} make release

      # Linux X86/AMD64
      - run: GOOS=linux GOARCH=386 VERSION=${RELEASE_VERSION} make release
      - run: GOOS=linux GOARCH=amd64 VERSION=${RELEASE_VERSION} make release

      # Linux ARM
      - run: GOOS=linux GOARCH=arm GOARM=6 VERSION=${RELEASE_VERSION} make release
      - run: GOOS=linux GOARCH=arm64 VERSION=${RELEASE_VERSION} make release

      # Linux MIPS/MIPSLE
      - run: GOOS=linux GOARCH=mips GOMIPS=softfloat VERSION=${RELEASE_VERSION} make release
      - run: GOOS=linux GOARCH=mipsle GOMIPS=softfloat VERSION=${RELEASE_VERSION} make release

      # FreeBSD X86
      - run: GOOS=freebsd GOARCH=386 VERSION=${RELEASE_VERSION} make release
      - run: GOOS=freebsd GOARCH=amd64 VERSION=${RELEASE_VERSION} make release

      # FreeBSD ARM/ARM64
      - run: GOOS=freebsd GOARCH=arm GOARM=6 VERSION=${RELEASE_VERSION} make release
      - run: GOOS=freebsd GOARCH=arm64 VERSION=${RELEASE_VERSION} make release

      - run: ls -l build/aliddns-*

      - name: Create release
        if: startsWith(github.ref, 'refs/tags/v')
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          draft: false
          prerelease: false

      - name: Upload
        if: startsWith(github.ref, 'refs/tags/v')
        uses: xresloader/upload-to-github-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          file: "build/aliddns-*.tar.gz;build/aliddns-*.zip"
          tags: true
          draft: false
