name: Nightly
on:
  schedule:
    - cron: "0 0 * * *" # Every day at midnight
  pull_request:
    paths:
      - ".github/workflows/nightly.yml"

permissions: # added using https://github.com/step-security/secure-workflows
  contents: read

jobs:
  linux:
    name: Linux
    runs-on: ubuntu-latest
    timeout-minutes: 30

    defaults:
      run:
        working-directory: src/github.com/containerd/containerd

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          path: src/github.com/containerd/containerd

      - uses: ./src/github.com/containerd/containerd/.github/actions/install-go

      - name: Set env
        shell: bash
        run: |
          echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
          echo "${{ github.workspace }}/bin" >> $GITHUB_PATH

      #
      # Build
      #

      - name: Install dependencies
        run: |
          sudo apt-get update || true

          sudo apt-get install -y \
            crossbuild-essential-arm64 \
            crossbuild-essential-s390x \
            crossbuild-essential-ppc64el \
            crossbuild-essential-riscv64 \

      - name: Build amd64
        env:
          GOOS: linux
          GOARCH: amd64
        run: |
          make binaries
          mv bin bin_amd64

      - name: Build arm64
        env:
          GOOS: linux
          GOARCH: arm64
          CC: aarch64-linux-gnu-gcc
          CGO_ENABLED: 1
        run: |
          make binaries
          mv bin bin_arm64

      - name: Build s390x
        env:
          GOOS: linux
          GOARCH: s390x
          CGO_ENABLED: 1
          CC: s390x-linux-gnu-gcc
        run: |
          make binaries
          mv bin bin_s390x

      - name: Build ppc64le
        env:
          GOOS: linux
          GOARCH: ppc64le
          CGO_ENABLED: 1
          CC: powerpc64le-linux-gnu-gcc
        run: |
          make binaries
          mv bin bin_ppc64le

      - name: Build riscv64
        env:
          GOOS: linux
          GOARCH: riscv64
          CGO_ENABLED: 1
          CC: riscv64-linux-gnu-gcc
        run: |
          make binaries
          mv bin bin_riscv64

      #
      # Upload
      #

      - name: Upload artifacts (linux_amd64)
        uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
        with:
          name: linux_amd64
          path: src/github.com/containerd/containerd/bin_amd64

      - name: Upload artifacts (linux_arm64)
        uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
        with:
          name: linux_arm64
          path: src/github.com/containerd/containerd/bin_arm64

      - name: Upload artifacts (linux_s390x)
        uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
        with:
          name: linux_s390x
          path: src/github.com/containerd/containerd/bin_s390x

      - name: Upload artifacts (linux_ppc64le)
        uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
        with:
          name: linux_ppc64le
          path: src/github.com/containerd/containerd/bin_ppc64le

      - name: Upload artifacts (linux_riscv64)
        uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
        with:
          name: linux_riscv64
          path: src/github.com/containerd/containerd/bin_riscv64

  windows:
    name: Windows
    runs-on: windows-latest
    timeout-minutes: 30

    defaults:
      run:
        working-directory: src/github.com/containerd/containerd

    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          path: src/github.com/containerd/containerd

      - uses: ./src/github.com/containerd/containerd/.github/actions/install-go

      - name: Set env
        shell: bash
        run: |
          echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
          echo "${{ github.workspace }}/bin" >> $GITHUB_PATH

      - name: Build amd64
        env:
          GOOS: windows
          GOARCH: amd64
        run: |
          make binaries

      - name: Upload artifacts (windows_amd64)
        uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
        with:
          name: windows_amd64
          path: src/github.com/containerd/containerd/bin/
