name: push
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: golang-ubuntu-latest
    steps:
      - name: Check out repository code
        uses: actions/checkout@focs
      - name: Display Go version
        run: go version
      - name: Prepare
        run: |
          go env -w GO111MODULE=on
          go env -w GOPROXY=https://goproxy.cn,direct
          mkdir -p ~/.ssh
          echo "${{ secrets.DEPLOY_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
          echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/id_ed25519.pub
          chmod 600 ~/.ssh/id_ed25519
          chmod 600 ~/.ssh/id_ed25519.pub
          ssh-keyscan -p 2222 focs.ji.sjtu.edu.cn >> ~/.ssh/known_hosts
          ssh -T git@focs.ji.sjtu.edu.cn -p 2222
        shell: bash
      - name: Determine build command
        id: build_command
        run: |
          if echo "${{ github.event.head_commit.message }}" | grep -q "force build"; then
            echo "build_command=make force-build" >> $GITHUB_ENV
          else
            echo "build_command=make build" >> $GITHUB_ENV
          fi
      - name: Build
        env:
          TZ: Asia/Shanghai
        run: ${{ env.build_command }}
      - name: Test
        run: make test
      - name: Check images
        run: docker images
      - name: Remove dangling images
        run: docker image prune -f
      - name: Docker Login
        run: |
          echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin focs.ji.sjtu.edu.cn:5000
      - name: Docker Push
        run: make push