# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

name: Go

on:
  push:
    paths:
      - '.github/workflows/go.yml'
      - 'ci/docker/*_go.dockerfile'
      - 'ci/scripts/go_*'
      - 'go/**'
  pull_request:
    paths:
      - '.github/workflows/go.yml'
      - 'ci/docker/*_go.dockerfile'
      - 'ci/docker/**'
      - 'ci/scripts/go_*'
      - 'go/**'

env:
  ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
  ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}

jobs:

  docker:
    name: AMD64 Debian 10 Go ${{ matrix.go }}
    runs-on: ubuntu-latest
    if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
    strategy:
      fail-fast: false
      matrix:
        go: [1.12]
    env:
      GO: ${{ matrix.go }}
    steps:
      - name: Checkout Arrow
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Fetch Submodules and Tags
        run: ci/scripts/util_checkout.sh
      - name: Free Up Disk Space
        run: ci/scripts/util_cleanup.sh
      - name: Setup Python
        uses: actions/setup-python@v1
        with:
          python-version: 3.8
      - name: Setup Archery
        run: pip install -e dev/archery[docker]
      - name: Execute Docker Build
        run: archery docker run debian-go
      - name: Docker Push
        if: success() && github.event_name == 'push' && github.repository == 'apache/arrow'
        continue-on-error: true
        run: archery docker push debian-go

  windows:
    name: AMD64 Windows 2019 Go ${{ matrix.go }}
    runs-on: windows-latest
    if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
    strategy:
      fail-fast: false
      matrix:
        go: [1.12]
    steps:
      - name: Install go
        uses: actions/setup-go@v1
        with:
          go-version: ${{ matrix.go }}
      - name: Checkout Arrow
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Fetch Submodules and Tags
        shell: bash
        run: ci/scripts/util_checkout.sh
      - name: Build
        shell: bash
        run: ci/scripts/go_build.sh .
      - name: Test
        shell: bash
        run: ci/scripts/go_test.sh .

  macos:
    name: AMD64 MacOS 10.15 Go ${{ matrix.go }}
    runs-on: macos-latest
    if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
    strategy:
      fail-fast: false
      matrix:
        go: [1.12]
    steps:
      - name: Install go
        uses: actions/setup-go@v1
        with:
          go-version: ${{ matrix.go }}
      - name: Checkout Arrow
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: Fetch Submodules and Tags
        shell: bash
        run: ci/scripts/util_checkout.sh
      - name: Build
        shell: bash
        run: ci/scripts/go_build.sh .
      - name: Test
        shell: bash
        run: ci/scripts/go_test.sh .
