Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: Switch GitHub macOS build workflow to use macos-13 (x86) and macos-14 (ARM) runners. #566

Merged
merged 9 commits into from
Oct 29, 2024

Conversation

kirkrodrigues
Copy link
Member

@kirkrodrigues kirkrodrigues commented Oct 29, 2024

Description

The GH macos-12 hosted runner image has begun to be deprecated leading to much longer build times for our macOS workflow.

This PR addresses the issue by:

  • Switching the workflow to build using the macos-13 and macos-14 hosted runners.
    • We use macos-13 to test building on an older OS running on an x86 host, and we use macos-14 to test building on a newer OS running on an ARM host.
  • Removing the specific version number (12) from the macOS install steps for core.

Validation performed

  • GitHub workflows succeeded and in a timely manner.
  • task docs:serve and validated the docs about installing on macOS were updated.

Summary by CodeRabbit

  • New Features

    • Enhanced build workflow for macOS to support a broader range of versions (macOS 13 and 14).
    • Updated installation scripts for improved compatibility.
  • Documentation

    • Generalized macOS setup instructions to apply to all macOS versions, simplifying the installation process.
    • Updated references in documentation to reflect the broader applicability of the setup instructions.

@kirkrodrigues kirkrodrigues requested a review from anlowee October 29, 2024 18:47
Copy link
Contributor

coderabbitai bot commented Oct 29, 2024

Walkthrough

The pull request introduces updates to the GitHub Actions workflows and documentation related to macOS builds. The workflow for building on macOS has been modified to support a wider range of macOS versions by implementing a matrix strategy and updating installation paths. Additionally, documentation has been revised to generalize macOS setup instructions, removing specific references to macOS 12. Changes include updates to exclusion patterns in workflow triggers and adjustments in the installation script paths across various documentation files.

Changes

File Path Change Summary
.github/workflows/clp-core-build-macos.yaml Updated runs-on directive to use a matrix for "macos-13" and "macos-14"; modified installation script path; adjusted paths monitored for changes.
.github/workflows/clp-core-build.yaml Changed exclusion pattern for macOS installation scripts in workflow triggers to include all macOS versions.
docs/src/dev-guide/components-core/index.md Updated references from "macOS 12" to "macOS" in requirements and setup instructions; modified table of contents.
docs/src/dev-guide/components-core/macos-deps-install.md Changed header from "macOS 12 setup" to "macOS setup"; updated installation script path to reflect broader applicability.

Possibly related PRs


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 829013b and 1a8f64e.

📒 Files selected for processing (4)
  • .github/workflows/clp-core-build-macos.yaml (4 hunks)
  • .github/workflows/clp-core-build.yaml (2 hunks)
  • docs/src/dev-guide/components-core/index.md (2 hunks)
  • docs/src/dev-guide/components-core/macos-deps-install.md (2 hunks)
✅ Files skipped from review due to trivial changes (2)
  • .github/workflows/clp-core-build.yaml
  • docs/src/dev-guide/components-core/macos-deps-install.md
🔇 Additional comments (6)
.github/workflows/clp-core-build-macos.yaml (4)

11-11: Path pattern update looks good, eh!

The generalized path pattern for macOS installation scripts aligns well with the goal of supporting multiple macOS versions.


24-24: Same path pattern update as above


59-59: Installation script path update looks good, but let's verify the script location.

The generalized path aligns with the version-agnostic approach. However, we should verify that the installation script exists at the new location and maintains compatibility across macOS versions.

#!/bin/bash
# Description: Verify installation script existence and contents

# Check if the script exists
echo "Checking for installation script..."
if [ -f "./components/core/tools/scripts/lib_install/macos/install-all.sh" ]; then
    echo "Script found. Checking for version-specific commands..."
    # Look for any remaining version-specific references
    rg -i "macos-1[234]" "./components/core/tools/scripts/lib_install/macos/install-all.sh"
else
    echo "Warning: Installation script not found at expected location"
fi

41-43: Matrix strategy implementation looks solid, but let's verify architecture coverage.

The matrix configuration with macos-13 and macos-14 runners is well-structured. However, we should verify that this covers both x86 and ARM architectures as intended.

✅ Verification successful

Architecture coverage is adequately handled by the matrix configuration

Based on the search results, we can confirm that:

  • The codebase primarily uses architecture-agnostic code
  • Build dependencies are properly configured for x86 through the dependency images
  • No explicit ARM-specific code or configurations that would require special handling
  • macOS-13 (Intel) and macOS-14 (Apple Silicon) runners will naturally build for their respective architectures

The matrix strategy using both macos-13 and macos-14 will effectively cover both x86 and ARM architectures without requiring additional configuration.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if there are any architecture-specific build configurations or tests
# that might need adjustment for the new runners

# Look for architecture-specific configurations
echo "Checking for architecture-specific configurations..."
rg -i "arch|x86|arm|aarch64" ./components/core/cmake/
rg -i "arch|x86|arm|aarch64" ./components/core/CMakeLists.txt

# Check for potential architecture-dependent code
echo "Checking for architecture-dependent code..."
rg -i "arch|x86|arm|aarch64" ./components/core/src/

Length of output: 438


Script:

#!/bin/bash
# Let's try a different approach to check for architecture-specific configurations

# Check workflow files for architecture-specific settings
echo "Checking workflow files for architecture configurations..."
rg -i "arch|x86|arm|aarch64" .github/workflows/

# Check build scripts and installation files
echo "Checking build and installation scripts..."
fd -e sh -e bash . ./components/core/tools/scripts/ -x rg -i "arch|x86|arm|aarch64" {}

# Check CMake files with different path approach
echo "Checking CMake files..."
fd CMakeLists.txt . -x rg -i "arch|x86|arm|aarch64" {}
fd -e cmake . -x rg -i "arch|x86|arm|aarch64" {}

Length of output: 15371

docs/src/dev-guide/components-core/index.md (2)

57-57: LGTM! The generalized macOS reference improves maintainability.

The removal of the specific macOS version from the documentation link text aligns well with the PR's objective to support multiple macOS versions.


101-101: LGTM! Consistent update to the toctree entry.

The toctree entry has been appropriately updated to match the generalized macOS documentation structure.


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@kirkrodrigues kirkrodrigues changed the title Core macos 13 ci: Switch GitHub macOS build workflow to use macos-13 (x86) and macos-14 (ARM) runners. Oct 29, 2024
@kirkrodrigues kirkrodrigues requested review from anlowee and removed request for anlowee October 29, 2024 18:49
Copy link
Contributor

@anlowee anlowee left a comment

Choose a reason for hiding this comment

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

The workflows succeed.
But I found that in /home/xiaochong/clp/components/core/submodules/json/.github/workflows/macos.yml, there is a:
xcode_2:
runs-on: macos-12

Also in /home/xiaochong/clp/components/core/submodules/outcome/boostify/.github/workflows/ci.yml, there is a:

  • { name: "AppleClang 13", os: macos-12, cxxstd: 17 }

If these two are unrelated to the changes then the PR should be good to be merged.

@kirkrodrigues
Copy link
Member Author

If these two are unrelated to the changes then the PR should be good to be merged.

Thanks. Yeah, those are from submodules (external libraries).

@kirkrodrigues kirkrodrigues merged commit b92a6c6 into y-scope:main Oct 29, 2024
20 checks passed
@kirkrodrigues kirkrodrigues deleted the core-macos-13 branch October 29, 2024 20:49
LinZhihao-723 added a commit to LinZhihao-723/clp that referenced this pull request Nov 12, 2024
* ffi: Add support for serializing/deserializing auto-generated and user-generated schema tree node IDs. (y-scope#557)

Co-authored-by: kirkrodrigues <[email protected]>

* clp: Add missing C++ standard library includes in IR parsing files. (y-scope#561)

Co-authored-by: kirkrodrigues <[email protected]>

* log-viewer-webui: Update `yscope-log-viewer` to the latest version (which uses `clp-ffi-js`). (y-scope#562)

* package: Upgrade dependencies to resolve security issues. (y-scope#536)

* clp-s: Implement table packing (y-scope#466)

Co-authored-by: wraymo <[email protected]>
Co-authored-by: Kirk Rodrigues <[email protected]>
Co-authored-by: wraymo <[email protected]>

* log-viewer-webui: Update `yscope-log-viewer` to the latest version. (y-scope#565)

* ci: Switch GitHub macOS build workflow to use macos-13 (x86) and macos-14 (ARM) runners. (y-scope#566)

* core: Add support for user-defined HTTP headers in `NetworkReader`. (y-scope#568)

Co-authored-by: Lin Zhihao <[email protected]>
Co-authored-by: Xiaochong Wei <[email protected]>

* chore: Update to the latest version of yscope-dev-utils. (y-scope#574)

* build(core): Upgrade msgpack to v7.0.0. (y-scope#575)

* feat(ffi): Update IR stream protocol version handling in preparation for releasing the kv-pair IR stream format: (y-scope#573)

- Bump the IR stream protocol version to 0.1.0 for the kv-pair IR stream format.
- Treat the previous IR stream format's versions as backwards compatible.
- Differentiate between backwards-compatible and supported versions during validation.

Co-authored-by: kirkrodrigues <[email protected]>

* fix(taskfiles): Trim trailing slash from URL prefix in `download-and-extract-tar` (fixes y-scope#577). (y-scope#578)

* fix(ffi): Correct `clp::ffi::ir_stream::Deserializer::deserialize_next_ir_unit`'s return value when failing to read the next IR unit's type tag. (y-scope#579)

* fix(taskfiles): Update `yscope-log-viewer` sources in `log-viewer-webui-clients` sources list (fixes y-scope#576). (y-scope#580)

* fix(cmake): Add Homebrew path detection for `mariadb-connector-c` to fix macOS build failure. (y-scope#582)

Co-authored-by: kirkrodrigues <[email protected]>

* refactor(ffi): Make `get_schema_subtree_bitmap` a public method of `KeyValuePairLogEvent`. (y-scope#581)

* ci: Schedule GitHub workflows to daily run to detect failures due to upgraded dependencies or environments. (y-scope#583)

* docs: Update the required version of task. (y-scope#567)

* Add pr check workflow

---------

Co-authored-by: kirkrodrigues <[email protected]>
Co-authored-by: Junhao Liao <[email protected]>
Co-authored-by: Henry8192 <[email protected]>
Co-authored-by: Devin Gibson <[email protected]>
Co-authored-by: wraymo <[email protected]>
Co-authored-by: wraymo <[email protected]>
Co-authored-by: Xiaochong(Eddy) Wei <[email protected]>
Co-authored-by: Xiaochong Wei <[email protected]>
Co-authored-by: haiqi96 <[email protected]>
jackluo923 pushed a commit to jackluo923/clp that referenced this pull request Dec 4, 2024
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.

2 participants