Skip to content

Brainstorm meeting github app software layer Nov 26th 2021

Kenneth Hoste edited this page Nov 26, 2021 · 1 revision

Attending: Bob, Kenneth

  • bot code public or not?

  • goals

    • build node app
    • test app (ReFrame)
    • cron mode: check every 5min for stuff to follow up on (Slurm jobs?)
  • events (software-layer repo)

    • create PR
      • by trusted contributor?
        • yes: do stuff
        • no: post comment to ask
    • comment
      • by trusted contributor?
        • yes:
          • bot tag present?
            • yes:
              • try to take action
            • no: ignore
        • no: ignore
    • labels
      • build_ok:<cpu_target>, build_failed:...
      • tests_ok:<cpu_target>
    • review
      • approved review:
        • by trusted contributor?
          • yes: try to take action
          • no: post comment: nice try dude!
      • other (requested changes, comments): ignore
    • CI runs
      • failed: post comment
      • success: try to take action
    • merge
    • close
  • tasks

    • general
      • log_event
        • save JSON event data
      • check out PR branch
        • modified easystack file
        • extra/changed tests
      • check_requirements
        • (1) trusted contributor or approved review
        • (2) CI passes
        • (3) build worked for CPU arch X
        • (4) ReFrame tests passed for CPU arch X
        • (5) all target CPU archs OK (build+test)
      • task_follow_up (cron mode)
        • check for completed tasks
          • build task
            • success:
              • add label build_ok:cpu
              • try to take action (start test?)
            • fail:
              • add label build_failed:cpu
              • report via comment
              • incl. link to gist with build log
          • test task (run ReFrame local vs in job)
            • success:
              • add label
              • try to take action (stage/ingest?)
            • fail:
              • add label
              • report via comment
              • incl. link to gist with test log
      • try to take action
        • known action?
          • build (requires 1-2)
            • start build or submit build jobs
            • create state dir with job iD
            • post comment that build has started (incl. job ID)
          • run tests (requires 3)
            • native vs in Slurm job?
            • in container X
          • stage tarball + metadata (requires 5)
            • using eessi-upload-to-staging script from EESSI/infrastructure
            • into S3 bucket (to trigger ingest)
            • used on build nodes we don't manage
          • ingest? (requires 5)
            • only for trusted nodes we manage
            • stage to bucket + ingest to S0
            • directly?
            • requires bot host to be publisher node?
      • add label to PR
        • new
        • replace
      • post comment in PR
      • send mail in case of trouble
    • build node
      • start build
        • single node
        • Slurm jobs
      • evaluate build
        • triage new vs replacement software installations
      • create tarball
      • stage tarball
    • test app
      • run ReFrame

Prep

  • test cluster
    • CitC in AWS
    • mix of x86_64, aarch64
  • outline what a PR to contribute software should look like
    • to EESSI/software-layer repo
    • add something to easystack file
  • software-layer repo:
    • hackathon branch
      • hackathon/easystack.yml easystack file that describes software stack
      • ReFrame test file hackathon/tests.py to run 'eb --sanity-check-only --robot' on easystack file
  • create (private) repo: EESSI/eessi-bot
    • implement basic app
      • only log event data
      • separate Python file per task
    • set up CI to test app code
    • docs
      • only touch "your" Python file
      • specify hackathon setup:
        • build/install into /tmp/eessi-hackathon
        • unpack tarball into /tmp/eessi-hackathon for test jobs
        • mocked S3 bucket in /eessi-hackathon/s3-bucket
      • how to test
    • set up branch per per subtask
Clone this wiki locally