name: Tier 2 sysroots

on:
  schedule:
    - cron: '44 4 * * *' # At 4:44 UTC every day.

defaults:
  run:
    shell: bash

jobs:
  sysroots:
    name: Build the sysroots
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build the sysroots
        run: |
          rustup toolchain install nightly
          cargo install -f rustup-toolchain-install-master
          ./miri toolchain -c rust-docs # Docs are the only place targets are separated by tier
          ./miri install
          python3 -m pip install beautifulsoup4
          ./ci/build-all-targets.sh
      - name: Upload build errors
        # We don't want to skip this step on failure
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: failures
          path: failures.tar.gz

  sysroots-cron-fail-notify:
    name: sysroots cronjob failure notification
    runs-on: ubuntu-latest
    needs: [sysroots]
    if: failure() || cancelled()
    steps:
      # Download our build error logs
      - name: Download build errors
        uses: actions/download-artifact@v4
        with:
          name: failures
      # Send a Zulip notification
      - name: Install zulip-send
        run: pip3 install zulip
      - name: Send Zulip notification
        env:
          ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }}
          ZULIP_API_TOKEN: ${{ secrets.ZULIP_API_TOKEN }}
        run: |
          tar xf failures.tar.gz
          ls failures
          ~/.local/bin/zulip-send --user $ZULIP_BOT_EMAIL --api-key $ZULIP_API_TOKEN --site https://rust-lang.zulipchat.com \
            --stream miri --subject "Sysroot Build Errors ($(date -u +%Y-%m))" \
            --message 'It would appear that the [Miri sysroots cron job build]('"https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"') failed to build these targets:
          '"$(ls failures)"'

          Would you mind investigating this issue?

          Thanks in advance!
          Sincerely,
          The Miri Cronjobs Bot'
