maomaowm/.github/workflows/README.md
copilot-swe-agent[bot] 6a209101a0 Switch CI to Arch Linux container for better package availability
Co-authored-by: squassina <8495707+squassina@users.noreply.github.com>
2026-02-18 13:03:59 +00:00

125 lines
3.6 KiB
Markdown

# GitHub Actions Workflows
This directory contains the GitHub Actions workflows for the MangoWC project.
## Workflows
### build.yml
**Purpose**: Builds the project to ensure code changes compile successfully.
**Triggers**:
- Push to `main` or `master` branch (only when code files change)
- Pull requests to `main` or `master` branch (only when code files change)
- Manual dispatch (workflow_dispatch)
**Path filters** (only runs when these change):
- Source files: `**.c`, `**.h`, `**.cpp`, `**.scm`
- Build files: `meson.build`, `meson_options.txt`, `flake.nix`
- Protocol definitions: `protocols/**`
- Workflow file itself: `.github/workflows/build.yml`
**What it does**:
1. Runs in Arch Linux container (archlinux:latest)
2. Updates system and installs dependencies via pacman
3. Builds wlroots 0.19.0 from source
4. Builds scenefx 0.4.1 from source
5. Uses `meson subprojects download` to fetch any required subproject
dependencies
6. Configures the project with meson
7. Builds the project with ninja
8. Verifies the executables were created
**Build Strategy**:
- Uses Arch Linux for up-to-date system packages (wayland, libinput, etc.)
- Only builds wlroots and scenefx from source (not available in pacman)
- Uses `meson subprojects download` before each meson setup to fetch required
subprojects
- Allows meson wrap mode for automatic subproject handling
(no --wrap-mode=nodownload)
**Dependencies**:
- Arch Linux container (archlinux:latest)
- Meson build system
- Ninja build tool
- System packages from pacman (wayland, libinput, mesa, etc.)
- wlroots 0.19.0 (built from source)
- scenefx 0.4.1 (built from source)
### docs.yml
**Purpose**: Validates markdown documentation for style and formatting consistency.
**Triggers**:
- Push to `main` or `master` branch (only when markdown files change)
- Pull requests to `main` or `master` branch (only when markdown files change)
- Manual dispatch (workflow_dispatch)
**Path filters** (only runs when these change):
- Markdown files: `**.md`
- Workflow file itself: `.github/workflows/docs.yml`
**What it does**:
- Lints markdown files in the repository using markdownlint-cli2
- Checks for common markdown formatting issues
- Ensures documentation follows consistent style guidelines
- Excludes dependency directories (wayland, wlroots, scenefx) to only lint
repository files
### lock.yml
**Purpose**: Automatically locks inactive issues and PRs to keep the repository
clean.
**Triggers**:
- Scheduled daily at 12:30 UTC
- Manual dispatch
**What it does**:
- Locks issues, PRs, and discussions that have been closed for 30 days
- Adds a comment explaining why the thread was locked
### stale.yml
**Purpose**: Automatically closes issues that have been manually marked as stale.
**Triggers**:
- Scheduled daily at 12:30 UTC
**What it does**:
- Closes issues marked with the "stale" label after 7 days of inactivity
- Adds "automatic-closing" label when closing
- Does not automatically mark issues as stale (only processes manually marked ones)
## Development Notes
The build workflow ensures that:
- Only runs when actual code or build configuration changes
- All dependencies are properly installed
- The project compiles without errors
- Both main executables (`mango` and `mmsg`) are built successfully
The docs workflow ensures that:
- Only runs when markdown documentation changes
- Documentation follows consistent formatting
- Markdown files are well-formed and free of common issues
If the build workflow fails, check:
1. Dependencies are up to date in the workflow file
2. wlroots and scenefx versions match requirements in meson.build
3. Build configuration in meson.build hasn't changed