on: push
concurrency:
  group: registries-tests

name: Build on push
jobs:
  tests-integration-img:
    name: Integration tests with img
    runs-on: ubuntu-latest
    steps:
      - name: Install Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.21.x
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Login to quay
        run: echo ${{ secrets.DOCKER_TESTING_PASSWORD }} | sudo -E docker login -u ${{ secrets.DOCKER_TESTING_USERNAME }} --password-stdin quay.io
      - name: Install deps
        run: |
            sudo apt-get update && sudo apt-get install -y upx && sudo -E env "PATH=$PATH" make deps
            sudo curl -fSL "https://github.com/genuinetools/img/releases/download/v0.5.11/img-linux-amd64" -o "/usr/bin/img"
            sudo chmod a+x "/usr/bin/img"
      - name: Login to quay with img
        run: echo ${{ secrets.DOCKER_TESTING_PASSWORD }} | sudo img login -u ${{ secrets.DOCKER_TESTING_USERNAME }} --password-stdin quay.io
      - name: Tests with Img backend
        run: |
            sudo -E env "PATH=$PATH" \
                    env "LUET_BACKEND=img" \
                    make test-integration
  tests-integration:
    name: Integration tests
    runs-on: ubuntu-latest
    steps:
      - name: Install Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.21.x
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Login to quay
        run: echo ${{ secrets.DOCKER_TESTING_PASSWORD }} | sudo -E docker login -u ${{ secrets.DOCKER_TESTING_USERNAME }} --password-stdin quay.io
      - name: Install deps
        run: |
            sudo apt-get update && sudo apt-get install -y upx && sudo -E env "PATH=$PATH" make deps
      - name: Tests
        run: |
              sudo -E \
                    env "PATH=$PATH" \
                    env "TEST_DOCKER_IMAGE=${{ secrets.DOCKER_TESTING_IMAGE }}" \
                    env "UNIT_TEST_DOCKER_IMAGE=${{ secrets.DOCKER_TESTING_IMAGE }}" \
                    env "UNIT_TEST_DOCKER_IMAGE_REPOSITORY=${{ secrets.DOCKER_TESTING_UNIT_TEST_IMAGE }}" \
                    make test-integration

  tests-unit:
    name: Unit tests
    runs-on: ubuntu-latest
    steps:
      - name: Install Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.21.x
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Login to quay
        run: echo ${{ secrets.DOCKER_TESTING_PASSWORD }} | sudo -E docker login -u ${{ secrets.DOCKER_TESTING_USERNAME }} --password-stdin quay.io
      - name: Install deps
        run: |
            sudo apt-get update && sudo apt-get install -y upx && sudo -E env "PATH=$PATH" make deps
            sudo curl -fSL "https://github.com/genuinetools/img/releases/download/v0.5.11/img-linux-amd64" -o "/usr/bin/img"
            sudo chmod a+x "/usr/bin/img"
            sudo make build
            sudo cp -rf luet /usr/bin/luet
      - name: Install GoReleaser
        uses: goreleaser/goreleaser-action@v2
        with:
          install-only: true
      - name: Build test
        run: sudo -E env "PATH=$PATH" make multiarch-build-small
      - name: Tests
        run: |
              sudo -E \
                    env "PATH=$PATH" \
                    env "TEST_DOCKER_IMAGE=${{ secrets.DOCKER_TESTING_IMAGE }}" \
                    env "UNIT_TEST_DOCKER_IMAGE=${{ secrets.DOCKER_TESTING_IMAGE }}" \
                    env "UNIT_TEST_DOCKER_IMAGE_REPOSITORY=${{ secrets.DOCKER_TESTING_UNIT_TEST_IMAGE }}" \
                    make coverage
      - name: Codecov
        uses: codecov/codecov-action@v2.1.0
        with:
          file: coverage.txt

