Skip to content

Utilize GitHub Actions for building and running via QEMU - #12

Merged
jserv merged 1 commit into
sysprog21:mainfrom
G36maid:ci
Oct 29, 2025
Merged

Utilize GitHub Actions for building and running via QEMU#12
jserv merged 1 commit into
sysprog21:mainfrom
G36maid:ci

Conversation

@G36maid

@G36maid G36maid commented Jul 4, 2025

Copy link
Copy Markdown
Contributor

Implement GitHub Actions CI pipeline for testing Linmo across GNU and
LLVM RISC-V toolchains with automated reporting.

Features:

  • Matrix testing for GNU and LLVM toolchains
  • Automated app discovery and crash detection
  • Functional test framework with criterion-based validation
  • TOML-based result aggregation across toolchains
  • Automated PR comments with detailed test results
  • Proper failure handling and artifact collection

Components:

  • .ci/ci-tools.sh: Unified tool for data collection, aggregation,
    and PR comment formatting
  • .ci/run-app-tests.sh: Automated app testing with QEMU
  • .ci/run-functional-tests.sh: Criterion-based functional tests
  • .ci/setup-toolchain.sh: Automated toolchain installation
  • .github/workflows/ci.yml: Complete CI workflow with summary job

The workflow ensures all tests run to completion, captures full output
for debugging, and fails CI based on the aggregated overall status

Fixes #2
Depend on #31

@jserv jserv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rebase the latest main branch.

Comment thread .github/workflows/ci.yml Outdated
@jserv

jserv commented Jul 4, 2025

Copy link
Copy Markdown
Contributor

There should be only a commit, discarding unrelated ones.

@G36maid

G36maid commented Jul 4, 2025

Copy link
Copy Markdown
Contributor Author

Rebase the latest main branch.

Already.

There should be only a commit, discarding unrelated ones.

Sure.

@jserv

This comment was marked as resolved.

@G36maid

This comment was marked as resolved.

jserv

This comment was marked as duplicate.

@G36maid
G36maid requested a review from jserv July 5, 2025 03:37
@G36maid
G36maid force-pushed the ci branch 2 times, most recently from 761c4b2 to bdf027c Compare July 5, 2025 03:56
Comment thread .github/workflows/ci.yml Outdated
Comment thread .ci/setup-toolchain.sh Outdated
@G36maid
G36maid force-pushed the ci branch 2 times, most recently from 3839694 to cc104df Compare July 5, 2025 12:02
@G36maid
G36maid requested a review from Damien-Chen July 5, 2025 12:28

@jserv jserv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Carefully read https://cbea.ms/git-commit/ and strictly apply its rules when writing full sentences in commit messages.

Comment thread .github/workflows/ci.yml Outdated

@jserv jserv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Always rebase properly.

@G36maid

G36maid commented Jul 7, 2025

Copy link
Copy Markdown
Contributor Author

Always rebase properly.

I'll make sure to rebase properly before merging. For now, I prefer to keep the commits.
Once everything is finalized, I'll squash or clean them up as needed.

@G36maid
G36maid force-pushed the ci branch 3 times, most recently from e792176 to 7c49a01 Compare July 7, 2025 06:57
@G36maid

G36maid commented Jul 7, 2025

Copy link
Copy Markdown
Contributor Author

Do these results match what we wanted?
@jserv @Damien-Chen
Please check this run:
G36maid#6 (comment)

Comment thread .ci/setup-toolchain.sh Outdated
Comment thread app/semaphore.c
@G36maid
G36maid force-pushed the ci branch 2 times, most recently from 182b393 to 68cab6a Compare October 23, 2025 06:53
@G36maid
G36maid marked this pull request as ready for review October 23, 2025 06:53

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 issues found across 6 files

Prompt for AI agents (all 3 issues)

Understand the root cause of the following 3 issues and fix them.


<file name=".ci/run-app-tests.sh">

<violation number="1" location=".ci/run-app-tests.sh:32">
A timeout (exit code 124 from `timeout`) indicates the QEMU run hung, but this branch treats it as a pass. That masks failures and lets broken apps appear healthy; only exit code 0 should be considered passing.</violation>
</file>

<file name="arch/riscv/build.mk">

<violation number="1" location="arch/riscv/build.mk:22">
The clang detection runs $(CROSS_COMPILE)gcc --version, but the LLVM toolchain only ships $(CROSS_COMPILE)clang, so CC_IS_CLANG never becomes 1 and the build selects the missing GNU binaries, breaking LLVM builds.</violation>
</file>

<file name=".ci/ci-tools.sh">

<violation number="1" location=".ci/ci-tools.sh:187">
The aggregated gnu apps section writes values like `app1=passed` without quotes, producing invalid TOML that downstream tools cannot parse.</violation>
</file>

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

Comment thread .ci/run-app-tests.sh
Comment thread arch/riscv/build.mk Outdated
Comment thread .ci/ci-tools.sh Outdated
@G36maid
G36maid force-pushed the ci branch 5 times, most recently from cf192bf to c89b134 Compare October 23, 2025 08:16
@sysprog21 sysprog21 deleted a comment from cubic-dev-ai Bot Oct 23, 2025
@sysprog21 sysprog21 deleted a comment from G36maid Oct 23, 2025
@sysprog21 sysprog21 deleted a comment from cubic-dev-ai Bot Oct 23, 2025

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 6 files

Comment thread arch/riscv/build.mk

@jserv jserv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rebase the latest main branch.

@G36maid
G36maid force-pushed the ci branch 3 times, most recently from e7b8142 to a937b7f Compare October 29, 2025 04:44
Implement GitHub Actions CI pipeline for testing Linmo across GNU and
LLVM RISC-V toolchains with automated reporting.

Features:
- Matrix testing for GNU and LLVM toolchains
- Automated app discovery and crash detection
- Functional test framework with criterion-based validation
- TOML-based result aggregation across toolchains
- Automated PR comments with detailed test results
- Proper failure handling and artifact collection

Components:
- .ci/ci-tools.sh: Unified tool for data collection, aggregation,
  and PR comment formatting
- .ci/run-app-tests.sh: Automated app testing with QEMU
- .ci/run-functional-tests.sh: Criterion-based functional tests
- .ci/setup-toolchain.sh: Automated toolchain installation
- .github/workflows/ci.yml: Complete CI workflow with summary job

The workflow ensures all tests run to completion, captures full output
for debugging, and fails CI based on the aggregated overall status.
@jserv
jserv merged commit fdd7587 into sysprog21:main Oct 29, 2025
@jserv

jserv commented Oct 29, 2025

Copy link
Copy Markdown
Contributor

Thank @G36maid for contributing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable CI via GitHub Actions

4 participants