Skip to content

feat: add Deepin CI build workflows#593

Merged
zccrs merged 1 commit intolinuxdeepin:masterfrom
zccrs:ci
Dec 1, 2025
Merged

feat: add Deepin CI build workflows#593
zccrs merged 1 commit intolinuxdeepin:masterfrom
zccrs:ci

Conversation

@zccrs
Copy link
Member

@zccrs zccrs commented Oct 16, 2025

  1. Added CI build workflows for qwlroots, waylib, and treeland on Deepin.
  2. Utilizes the Deepin pbuilder environment for building packages.
  3. Includes configurations for building qwlroots and waylib independently, and treeland with merged waylib and qwlroots code.
  4. The waylib workflow builds qwlroots first and installs it using a pbuilder hook.
  5. The treeland workflow clones and builds treeland-protocols from source before building treeland.
  6. The treeland workflow builds and packages treeland into a zip artifact for easier installation.
  7. These builds are essential for ensuring compatibility and proper packaging of these components on the Deepin distribution.

Influence:

  1. Verify successful builds of qwlroots, waylib, and treeland on Deepin.
  2. Check the created Debian packages for qwlroots and waylib for correctness.
  3. Verify the treeland zip archive contains the installed files in the correct structure.
  4. Validate the PACKAGE_INFO.txt file in the treeland zip archive.
  5. Manually install the treeland zip archive on a Deepin system and ensure it functions as expected.

feat: 添加 Deepin CI 构建工作流

  1. 为 qwlroots、waylib 和 treeland 添加了 Deepin 上的 CI 构建工作流。
  2. 利用 Deepin pbuilder 环境来构建软件包。
  3. 包括独立构建 qwlroots 和 waylib 的配置,以及构建合并了 waylib 和 qwlroots 代码的 treeland 的配置。
  4. waylib 工作流首先构建 qwlroots,并使用 pbuilder 钩子安装它。
  5. treeland 工作流在构建 treeland 之前,从源代码克隆并构建 treeland- protocols。
  6. treeland 工作流将 treeland 构建并打包成一个 zip 压缩包,以便于安装。
  7. 这些构建对于确保这些组件在 Deepin 发行版上的兼容性和正确的打包至关 重要。

Influence:

  1. 验证 qwlroots、waylib 和 treeland 在 Deepin 上的成功构建。
  2. 检查为 qwlroots 和 waylib 创建的 Debian 软件包的正确性。
  3. 验证 treeland zip 压缩包是否包含正确结构的已安装文件。
  4. 验证 treeland zip 压缩包中的 PACKAGE_INFO.txt 文件。
  5. 在 Deepin 系统上手动安装 treeland zip 压缩包,并确保其按预期运行。

Summary by Sourcery

Introduce Deepin-specific CI workflows to build, package, and validate qwlroots, waylib, and treeland components using a Deepin pbuilder environment

New Features:

  • Add GitHub Actions workflow to build qwlroots packages independently on Deepin
  • Add GitHub Actions workflow to build waylib packages, installing qwlroots via a pbuilder hook
  • Add GitHub Actions workflow to build treeland with merged waylib and qwlroots code, including cloning and building treeland-protocols and packaging the result as a zip artifact

Enhancements:

  • Configure and reuse a Deepin pbuilder environment across all workflows for consistent Debian package builds
  • Implement pbuilder hooks to manage cross-package dependencies and installation order

CI:

  • Add Deepin pbuilder setup and configuration in CI for all three workflows
  • Upload build artifacts (DEB packages and treeland zip) to GitHub Actions for downstream use

@sourcery-ai
Copy link

sourcery-ai bot commented Oct 16, 2025

Reviewer's Guide

This PR adds three dedicated GitHub Actions workflows that configure and utilize a Deepin pbuilder environment to build and package qwlroots, waylib (with a custom hook to install qwlroots), and treeland (including building treeland-protocols, merging dependencies, and producing a ZIP artifact with metadata).

Sequence diagram for waylib build workflow with qwlroots dependency

sequenceDiagram
  participant GA as "GitHub Actions"
  participant PB as "pbuilder (Deepin)"
  participant Q as "qwlroots"
  participant W as "waylib"

  GA->>PB: Create pbuilder environment
  GA->>Q: Build qwlroots source package
  GA->>PB: Build qwlroots in pbuilder
  PB->>Q: Build qwlroots
  PB->>PB: Store qwlroots .deb in result
  GA->>PB: Create hook to install qwlroots
  GA->>W: Modify waylib to use system qwlroots
  GA->>W: Build waylib source package
  GA->>PB: Build waylib in pbuilder
  PB->>PB: Hook installs qwlroots .deb
  PB->>W: Build waylib
  PB->>PB: Store waylib .deb in result
  GA->>GA: Upload waylib .deb as artifact
Loading

Sequence diagram for treeland build workflow with merged dependencies and ZIP packaging

sequenceDiagram
  participant GA as "GitHub Actions"
  participant PB as "pbuilder (Deepin)"
  participant TP as "treeland-protocols"
  participant TL as "treeland"

  GA->>PB: Create pbuilder environment
  PB->>PB: Configure apt sources
  PB->>PB: Install build dependencies
  PB->>TP: Clone and build treeland-protocols
  PB->>TP: Install treeland-protocols
  PB->>TL: Configure and build treeland (merged waylib/qwlroots)
  PB->>TL: Install treeland to result directory
  GA->>PB: Copy installed files from pbuilder result
  GA->>GA: Create PACKAGE_INFO.txt
  GA->>GA: Package files into ZIP
  GA->>GA: Upload ZIP as artifact
Loading

File-Level Changes

Change Details Files
Introduce Qwlroots Deepin CI workflow
  • Set up Deepin pbuilder environment and base.tgz generation
  • Created source package and built qwlroots inside pbuilder
  • Uploaded resulting .deb packages as workflow artifacts
.github/workflows/qwlroots-deepin-build.yml
Introduce Waylib Deepin CI workflow with qwlroots dependency hook
  • Built qwlroots first in pbuilder and installed it via a custom hook
  • Modified debian/rules to disable the qwlroots submodule
  • Created source package and built waylib inside pbuilder
  • Uploaded resulting .deb artifacts
.github/workflows/waylib-deepin-build.yml
Introduce Treeland Deepin CI workflow with merged dependencies and ZIP packaging
  • Configured pbuilder and installed build dependencies
  • Cloned and built treeland-protocols from source within pbuilder
  • Built treeland using a CI cmake preset and merged waylib/qwlroots code
  • Installed outputs to a result directory, generated PACKAGE_INFO.txt, and packaged everything into a ZIP
  • Uploaded the ZIP archive as a workflow artifact
.github/workflows/treeland-deepin-build.yml

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey there - I've reviewed your changes - here's some feedback:

  • Consider extracting the repeated pbuilder setup steps into a reusable composite action or workflow template to reduce duplication across these workflows.
  • The treeland workflow currently runs on every push/PR; you may want to scope its triggers to treeland-related paths or tags to avoid unnecessary CI runs.
  • Using debian:unstable as the build container might introduce variability—consider switching to a dedicated Deepin or more stable base image for reproducible builds.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- Consider extracting the repeated pbuilder setup steps into a reusable composite action or workflow template to reduce duplication across these workflows.
- The treeland workflow currently runs on every push/PR; you may want to scope its triggers to treeland-related paths or tags to avoid unnecessary CI runs.
- Using debian:unstable as the build container might introduce variability—consider switching to a dedicated Deepin or more stable base image for reproducible builds.

## Individual Comments

### Comment 1
<location> `.github/workflows/treeland-deepin-build.yml:61` </location>
<code_context>
+            apt-get install -y devscripts equivs ca-certificates gnupg git
+
+            # Install build dependencies from control file
+            mk-build-deps --install --remove --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
+
+            # Build and install treeland-protocols
</code_context>

<issue_to_address>
**suggestion (bug_risk):** Using mk-build-deps with '--remove' may remove build dependencies prematurely.

Omitting '--remove' will keep all build dependencies installed for the duration of the build, preventing potential issues with missing packages.

```suggestion
            mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
```
</issue_to_address>

### Comment 2
<location> `.github/workflows/qwlroots-deepin-build.yml:53-57` </location>
<code_context>
+          dpkg-buildpackage -S -uc -us
+
+          # Build the package in pbuilder
+          sudo pbuilder build ../*.dsc
+
+      - name: Upload qwlroots Deepin packages as artifacts
</code_context>

<issue_to_address>
**suggestion (bug_risk):** Using '../*.dsc' may match unintended files if multiple .dsc files exist.

To avoid building the wrong package, specify the exact .dsc file or ensure only the intended file is present before running the build.

```suggestion
          # Create source package first
          dpkg-buildpackage -S -uc -us

          # Find the exact .dsc file just created
          DSC_FILE=$(ls ../*.dsc | head -n 1)

          # Build the package in pbuilder using the exact .dsc file
          sudo pbuilder build "$DSC_FILE"
```
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@zccrs zccrs force-pushed the ci branch 28 times, most recently from 3b35853 to 5d6bcf7 Compare October 17, 2025 07:39
@deepin-bot
Copy link

deepin-bot bot commented Oct 30, 2025

TAG Bot

New tag: 0.7.6
DISTRIBUTION: unstable
Suggest: synchronizing this PR through rebase #611

@deepin-bot
Copy link

deepin-bot bot commented Nov 7, 2025

TAG Bot

New tag: 0.7.7
DISTRIBUTION: unstable
Suggest: synchronizing this PR through rebase #619

@deepin-bot
Copy link

deepin-bot bot commented Nov 14, 2025

TAG Bot

New tag: 0.7.8
DISTRIBUTION: unstable
Suggest: synchronizing this PR through rebase #625

@zccrs zccrs force-pushed the ci branch 20 times, most recently from 7c2ddfc to ab3cda8 Compare December 1, 2025 01:35
1.  Added CI build workflows for qwlroots, waylib, and treeland on
Deepin.
2.  Includes configurations for building qwlroots and waylib
independently, and treeland with merged waylib and qwlroots code.

Influence:
1. Verify successful builds of qwlroots, waylib, and treeland on Deepin.
2. Check the created Debian packages for qwlroots and waylib for
correctness.
3. Verify the treeland zip archive contains the installed files in the
correct structure.
4. Validate the PACKAGE_INFO.txt file in the treeland zip archive.
5. Manually install the treeland zip archive on a Deepin system and
ensure it functions as expected.

feat: 添加 Deepin CI 构建工作流

1. 为 qwlroots、waylib 和 treeland 添加了 Deepin 上的 CI 构建工作流。
2. 包括独立构建 qwlroots 和 waylib 的配置,以及构建合并了 waylib 和
qwlroots 代码的 treeland 的配置。

Influence:
1. 验证 qwlroots、waylib 和 treeland 在 Deepin 上的成功构建。
2. 检查为 qwlroots 和 waylib 创建的 Debian 软件包的正确性。
3. 验证 treeland zip 压缩包是否包含正确结构的已安装文件。
4. 验证 treeland zip 压缩包中的 PACKAGE_INFO.txt 文件。
5. 在 Deepin 系统上手动安装 treeland zip 压缩包,并确保其按预期运行。
@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: wineee, zccrs

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@zccrs zccrs merged commit 0660a31 into linuxdeepin:master Dec 1, 2025
13 of 15 checks passed
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.

3 participants