ReactionMechanismGenerator / ReactionMechanismGenerator/ARC

Proposal: Splitting CI pipelines into PR and Nightly workflows to accelerate development

Open
#916 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

dependencies github_actions Type: Feature
Dominant language
Python
Stars
51
Forks
25
Avg merge
4d 5h
Merged PRs (30d)
15

Description

Context & Problem
Currently, our Continuous Integration (CI) pipeline installs multiple external software independent of ARC, with more joining soon, and run comprehensive tests for every PR. While this ensures thorough testing, the prolonged CI times are becoming a bottleneck. Waiting for heavy environments to build and extensive test suites to finish significantly slows down the development cycle and delays crucial feedback on Pull Requests.

Proposed Solution
To expedite dev time without sacrificing code reliability, I propose we pivot to a two-tier CI strategy:

1. PR-Level CI (Fast Feedback)

  • Trigger: Runs on every Pull Request and commit.
  • Scope: Focuses on verifying core logic by running unit tests and mocking the heavy external software interfaces.
  • Goal: Provide rapid, actionable feedback to developers (ideally in just a few minutes) to maintain momentum without getting bogged down by dependency installations.

2. Global / Nightly CI (Comprehensive Testing)

  • Trigger: Runs on a scheduled basis (e.g., once a day overnight).
  • Scope: Performs the full testing suite. It will build the complete environment, install all third-party software, and run the real integration tests to ensure everything interacts correctly.
  • Goal: Catch deeper integration issues, edge cases, and regressions that the mocked PR tests might miss, without blocking active daily development.

Key Benefits

  • Faster Iterations: Developers can merge smaller, frequent PRs without waiting on bloated pipelines.
  • Resource Efficiency: We save significant compute time by avoiding redundant, heavy software installations on every minor commit.

Discussion
I would love to hear everyone’s thoughts on this pivot. A few specific questions to kick off the discussion:

  • What is our preferred approach for mocking the specific software dependencies in the PR pipeline?
  • Is a once-a-day schedule sufficient for the Global CI, or should it also trigger automatically on merges to main?
    @alongd @calvinp0

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the current CI pipeline and inventorying its external software, unit tests, and integration tests. Define separate pull-request and scheduled workflows, decide how external interfaces will be mocked, and document whether the comprehensive workflow also runs on merges to main; done means fast PR feedback and scheduled full integration coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
ci-cd, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.