version: 2
jobs:
  build:
    working_directory: /go/src/github.com/linuxkit/linuxkit
    docker:
      - image: circleci/golang:1.11-stretch
    steps:
      - checkout
      - run: mkdir -p ./bin
      - run:
          name: Versions
          command: |
            set -x
            go version
            cat /etc/os-release
      - run:
          name: Dependencies
          command: |
            go get -u golang.org/x/lint/golint
            go get -u github.com/gordonklaus/ineffassign
      - run:
          name: Lint
          command: make local-check
      - run:
          name: Build amd64/linux
          environment:
            GOOS: linux
            GOARCH: amd64
          command: make LOCAL_TARGET=bin/linuxkit-$GOOS-$GOARCH local-build
      - run:
          name: Build arm64/linux
          environment:
            GOOS: linux
            GOARCH: arm64
          command: make LOCAL_TARGET=bin/linuxkit-$GOOS-$GOARCH local-build
      - run:
          name: Build s390x/linux
          environment:
            GOOS: linux
            GOARCH: s390x
          command: make LOCAL_TARGET=bin/linuxkit-$GOOS-$GOARCH local-build
      - run:
          name: Build amd64/darwin
          environment:
            GOOS: darwin
            GOARCH: amd64
          command: make LOCAL_TARGET=bin/linuxkit-$GOOS-$GOARCH local-build
      - run:
          name: Build amd64/windows
          environment:
            GOOS: windows
            GOARCH: amd64
          command: make LOCAL_TARGET=bin/linuxkit-$GOOS-$GOARCH.exe local-build
      - run:
          name: Test
          command: make local-test
      - run:
          name: Checksum
          command: cd bin && sha256sum linuxkit-*-* > SHA256SUM
      - store_artifacts:
          path: ./bin
          destination: .
