Skip to content

[pull] main from actions:main #1

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

Open
wants to merge 916 commits into
base: main
Choose a base branch
from
Open

Conversation

pull[bot]
Copy link

@pull pull bot commented May 31, 2024

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

Summary by CodeRabbit

Release Notes

  • New Features

    • Updated issue templates to remove macOS 11 and 12, adding macOS 15, macOS 15 Arm64, and Windows Server 2025 options.
    • Introduced macOS 15 and Windows Server 2025 images with detailed documentation and updated software stacks.
    • Added new GitHub workflows for version pinning checks, JSON schema validation, Ubuntu 24.04 CI, and Windows 2025 CI.
    • Enhanced Android SDK setup by including platform-tools.
    • Added installation scripts for ninja and unxip utilities.
    • Introduced a new macOS 15 script to confirm identified developers automatically.
    • Added environment variable RUNNER_TOOL_CACHE in Windows and Ubuntu setup scripts.
    • Updated PowerShell and Chocolatey package installations with version control.
    • Added Windows 2025-specific logic for MongoDB shell installation and WSL2 support.
    • Improved macOS provisioning with new scripts for autologin, system configuration, and updated SSH authentication.
    • Transitioned macOS 15 arm64 image building to use Veertu Anka virtualization.
    • Enhanced Xcode installation with flexible simulator runtime management.
    • Added new test suites for Mono and RunnerCache on macOS.
  • Bug Fixes

    • Corrected DOCTYPE URLs from HTTP to HTTPS in macOS configuration scripts.
    • Updated expected signatures and checksums for multiple Windows installer packages.
    • Fixed version retrieval commands and improved installation reliability across platforms.
    • Simplified and corrected installation scripts to handle version pinning and environment consistency.
    • Streamlined GitHub Actions workflow label checks for CI jobs.
  • Documentation

    • Refreshed README files for macOS (13, 14, 15), Ubuntu (20.04, 22.04, 24.04), and Windows (2019, 2022, 2025) with updated software versions, announcements, and environment variables.
    • Revised toolset JSON files to include new versions and remove deprecated ones.
    • Updated Azure and Visual Studio installation documentation to support new parameters and channels.
    • Removed Xamarin-related documentation and tests, reflecting deprecation.
    • Improved GitHub Actions workflows documentation with clearer run names and triggers.
    • Enhanced software report scripts to support new OS versions and tools, including Ninja and unxip.
    • Updated changelogs and contributing guidelines with secure links and clearer instructions.

Copy link

coderabbitai bot commented Jul 16, 2024

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

The changes update GitHub issue templates by removing support for macOS 11 and 12 and adding macOS 15, macOS 15 Arm64, and Windows Server 2025 labels. New GitHub Actions workflows are introduced for version pinning checks and JSON schema validation, and existing workflows are modified to simplify label conditionals and add Ubuntu 24.04 and Windows 2025 CI triggers. README files for macOS, Ubuntu, and Windows images are updated with new OS versions, software versions, and badges, reflecting deprecations and new releases. Toolset JSON configurations are revised to include newer versions and remove deprecated entries. Several PowerShell and shell scripts are added, removed, or modified to enhance installation processes and testing. Packer template files remove plugin blocks, add helper script provisioners, and update variables for new OS versions and authentication methods. Various test scripts are updated to adjust skip conditions and add new tests. Overall, the changes modernize the environment, add support for new OS versions, and improve CI workflows and tooling.

Changes

Files Change Summary
.github/ISSUE_TEMPLATE/announcement.yml Removed macOS 11/12 labels; added macOS 15, macOS 15 Arm64, Windows Server 2025 labels.
.github/ISSUE_TEMPLATE/bug-report.yml Updated runner images: removed macOS 11/12; added macOS 15, macOS 15 Arm64, Windows Server 2025.
.github/ISSUE_TEMPLATE/tool-request.yml Updated tool request options similarly; formatting fixes.
.github/workflows/check-pinned-versions.yml Added new workflow for checking outdated version pinning via PowerShell script.
.github/workflows/validate-json-schema.yml Added new workflow for JSON schema validation using PowerShell script.
.github/workflows/create_pull_request.yml Modified git push command to use --force option.
.github/workflows/codeql-analysis.yml Limited CodeQL analysis to Python only (removed Ruby).
.github/workflows/ubuntu2004.yml, ubuntu2204.yml Simplified label conditionals from array contains to direct comparison.
.github/workflows/ubuntu2404.yml Added new Ubuntu 24.04 CI workflow triggered on label addition.
.github/workflows/windows2019.yml, windows2022.yml Simplified label conditionals similar to Ubuntu workflows.
.github/workflows/windows2025.yml Added new Windows Server 2025 CI workflow triggered on label addition.
.github/workflows/create_sbom_report.yml Added dynamic run-name and updated SYFT installation to latest version.
.vscode/settings.json Added JSON schema validation for toolset-*.json files.
LICENSE Updated copyright year from 2024 to 2025.
README.md Updated VM images section: removed macOS 11/12, added macOS 15, macOS 15 Arm64, Windows Server 2025; updated badges.
docs/create-image-and-azure-resources.md Updated docs: resource group prerequisite, added Windows2025 and Ubuntu2404 image types, packer plugin version param.
docs/dotnet-ubuntu.md New doc added explaining .NET package changes for Ubuntu 24.04 and feature bands.
helpers/CheckJsonSchema.ps1 Added new PowerShell script to validate JSON files against schema.
helpers/CheckOutdatedVersionPinning.ps1 Added new PowerShell script to detect expiring version pins and create GitHub issues.
helpers/GenerateResourcesAndImage.ps1 Added Windows2025 image type; updated ImageType enum indices; added PluginVersion param; removed Force and ReuseResourceGroup params.
images.CI/download-repo.ps1 Deleted script for downloading repo branch.
images.CI/linux-and-win/azure-pipelines/*.yml Deleted Azure Pipelines configs for image generation; replaced by GitHub Actions workflows.
images.CI/linux-and-win/build-image.ps1 Made ClientSecret param optional; added pluginVersion, AllowedInboundIpAddresses, Tags params; updated packer plugin install and build commands.
images.CI/linux-and-win/cleanup.ps1 Removed Azure login params and login logic; retained resource group deletion.
images.CI/macos/anka/*.psm1, CreateCleanAnkaTemplate.ps1, Service.Helpers.psm1 Removed Anka VM management helper modules and scripts for macOS VM template creation.
images/macos/assets/xamarin-selector/*.sh Removed Xamarin SDK selector shell scripts.
images/macos/macos-12-Readme.md Deleted macOS 12 README.
images/macos/macos-13-Readme.md, macos-13-arm64-Readme.md, macos-14-Readme.md, macos-14-arm64-Readme.md Updated OS versions, image versions, software versions; added announcements for macOS 15 availability; updated environment variables.
images/macos/macos-15-Readme.md, macos-15-arm64-Readme.md Added new README files for macOS 15 and macOS 15 Arm64 with detailed software lists and announcements.
images/macos/scripts/build/*.sh Various script updates: improved simulator runtimes install, added autologin config, removed deprecated scripts, updated Homebrew env setup, enhanced system config, updated TCCDB entries, simplified Xcode simulator installs.
images/macos/scripts/build/install-*.sh Removed install scripts for Apache, Golang, Haskell, Miniconda, MongoDB, Visual Studio, Xamarin, Pipx packages; updated others (e.g., dotnet, ruby, swiftlint, openssl, nvm removed). Added install-unxip.sh.
images/macos/scripts/docs-gen/*.psm1 Removed Xamarin and WebServers report modules; updated software report to add Sequoia checks, remove old OS checks, add new tools (pkgconf, unxip, ninja), update Java and browser conditions.
images/macos/scripts/helpers/Common.Helpers.psm1 Removed Big Sur and Monterey OS checks; added Sequoia OS checks; removed isVeertu function.
images/macos/scripts/helpers/Xcode.Installer.psm1 Removed version restriction in first launch; added Arch and Runtimes params to simulator runtimes installer function.
images/macos/scripts/helpers/utils.sh Removed is_Monterey, is_BigSur, is_Veertu; added is_Sequoia, is_SequoiaArm64, is_SequoiaX64 functions.
images/macos/scripts/helpers/confirm-identified-developers.scpt Deleted AppleScript for confirming identified developers.
images/macos/scripts/helpers/xamarin-utils.sh Removed Xamarin helper shell functions.
images/macos/scripts/tests/*.ps1 Added Mono.Tests.ps1, RunnerCache.Tests.ps1; removed PipxPackages.Tests.ps1, Xamarin.Tests.ps1, Haskell.Tests.ps1; updated skip conditions to include Sequoia OS for many tests; removed some tests (Subversion, Helm, Julia, etc.); updated test logic for Ruby, Browsers, Python, Rust, System, Toolcache, RubyGem, etc.
images/macos/templates/*.pkr.hcl Removed packer plugin blocks; added helper script provisioners; updated variables for sensitive tokens and passwords; replaced ssh_private_key_file with ssh_password; removed xamarin-selector asset; added configure-autologin.sh and install-unxip.sh; updated scripts and moved confirm-identified-developers scripts to macOS version specific files; switched to veertu-anka plugin for macOS 15 arm64.
images/macos/toolsets/*.json Removed Xamarin section; added sha256 and install_runtimes properties for Xcode versions; updated versions and packages; added new toolsets for macOS 15; updated default NDK versions and software versions.
images/ubuntu/Ubuntu2004-Readme.md, Ubuntu2204-Readme.md, Ubuntu2404-Readme.md Updated OS, kernel, image versions; upgraded many software packages including Java, Node, Helm, Homebrew, Miniconda, Pipx, Gradle, Maven, Docker, Git, Python, Rust, Browsers, .NET, databases, Android SDK, apt packages; added announcements about Docker Engine version upgrade.
images/ubuntu/scripts/build/*.sh Added install-ninja.sh; updated install-kotlin.sh to fixed version; updated install-cmake.sh to fixed version; updated install-rust.sh cargo install to use --locked; updated install-powershell.sh to remove Ubuntu 24 special case; updated install-python.sh to handle Ubuntu 24 pip config; updated install-erlang.sh repo and key URLs; updated install-kubernetes-tools.sh for fixed minikube version; updated install-firefox.sh repo URL to HTTPS and removed -y flag; updated install-sqlpackage.sh repo URL to HTTPS and removed -y flag; updated install-zstd.sh to use parallel make and removed -y flag; updated configure-apt.sh to add HTTPS config and show sources differently for Ubuntu 24; updated configure-apt-sources.sh for Ubuntu 24 sources list location; updated configure-dpkg.sh to install libicu70 on Ubuntu 24; updated configure-environment.sh to set RUNNER_TOOL_CACHE env var; updated install-android-sdk.sh to add platform-tools; updated install-ruby.sh to add gems install for Ubuntu 20 and remove -y flag; updated install-swift.sh keyserver URLs and added key; updated install-codeql-bundle.sh to fetch defaults from v3; updated install-homebrew.sh to remove brew tap bundle; updated install-edge.sh DOCTYPE to HTTPS; updated install-nvm.sh deleted.
images/ubuntu/scripts/docs-gen/*.psm1 Removed conditional checks for Ubuntu versions before adding tools; added Ninja version function; removed Docker Compose v1 version function.
images/ubuntu/templates/*.pkr.hcl Removed packer plugin blocks; added helper script provisioners; updated environment variables to include helper script folder; added install-ninja.sh to scripts.
images/windows/Windows2019-Readme.md, Windows2022-Readme.md Updated OS and image versions; updated software versions for many packages; added announcements about Windows Server 2025 availability and removals; updated Android SDK versions and environment variables; updated cached Docker images.
images/windows/Windows2025-Readme.md Added new README for Windows Server 2025 image with detailed software and environment info.
images/windows/scripts/build/*.ps1 Added Install-WSL2.ps1 script; updated Install-DACFx.ps1 to handle manifest folder move; updated Install-Docker.ps1 paths and conditional image download for Win25; updated Install-EdgeDriver.ps1 signature thumbprints; updated Install-Firefox.ps1 signature thumbprint; updated Install-JavaTools.ps1 removed Maven comment; updated Install-Mingw64.ps1 URLs and conditionals; updated Install-MongoDB.ps1 mongosh install; updated Install-NodeJS.ps1 direct download; updated Install-PostgreSQL.ps1 for improved version URL logic and redistributable install; updated Install-Rust.ps1 to skip Rust tools install on Win25; updated Install-Toolset.ps1 temp folder; updated Install-VisualStudio.ps1 for Win19/22/25 logic; updated Install-WDK.ps1 URLs and VSIX install condition; updated Install-AWSTools.ps1 signature; updated Install-AzureCli.ps1 signature; updated Install-AzureCosmosDbEmulator.ps1 checksum; updated Install-BizTalkBuildComponent.ps1 temp path; updated Install-JavaTools.ps1 removed comment; updated Install-Mingw64.ps1 URLs and condition; updated Install-DACFx.ps1 signature; updated Install-Docker.ps1 temp path and conditional image download; updated Install-EdgeDriver.ps1 signature; updated Install-Firefox.ps1 signature; updated Install-WSL2.ps1 new script; updated Install-ChocolateyPackages.ps1 added version param; updated Install-PowershellAzModules.ps1 module paths; updated Install-CodeQLBundle.ps1 URL.
images/windows/scripts/helpers/*.ps1 Added Test-IsWin25 function; updated Install-Binary to accept InstallerLogPath param; updated Install-VisualStudio to accept InstallChannel param and multiple signatures; updated Install-PowershellAzModules.ps1 to append module paths.
images/windows/scripts/tests/*.ps1 Added WSL2 tests; updated skip conditions to include Test-IsWin25; added Ninja tests; updated MongoDB tests for mongosh; updated VisualStudio tests for SDK versions; updated Rust tests for reduced tools on Win25; updated Docker tests to skip on Win25; updated CLI tools tests skip conditions; updated ChocoPackages tests skip conditions; updated Databases tests skip conditions and added mongosh test; updated Helpers.psm1 to remove warning suppression; updated Tools tests to remove Docker Compose v1 and update Kotlin packages; updated WindowsFeatures tests to add WSL2 test.
images/windows/templates/windows-2019.pkr.hcl, windows-2022.pkr.hcl Removed packer plugin blocks; added temp_dir variable; updated provisioners to create temp_dir and add environment vars; added Install-TortoiseSvn.ps1 script.
images/windows/templates/windows-2025.pkr.hcl New Packer template for Windows 2025 images with detailed variables, source, build, provisioners, and restart steps.
images/windows/toolsets/toolset-2019.json, toolset-2022.json Updated Ruby, Python, Node, Go versions; updated Azure modules; updated CMake, NDK, Docker, dotnet, PostgreSQL, OpenSSL; added pinnedDetails; updated Visual Studio signature; removed deprecated modules and packages.
images/macos/scripts/helpers/confirm-identified-developers-macos15.scpt Added new AppleScript to allow Parallels International GmbH system software with password input.
.github/workflows/create_pull_request.yml Added --force flag to git push command.
CONTRIBUTING.md Updated URL from http to https in commit message guidelines.
images/macos/assets/bootstrap-provisioner/kcpassword.py Updated comment URL to https and added newline at EOF.
images/macos/scripts/build/configure-hostname.sh Updated DOCTYPE URL from http to https.
images/macos/scripts/build/install-edge.sh Updated DOCTYPE URL from http to https.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Template
    participant README
    participant Toolset

    User->>Template: Submit issue
    Template-->>User: Show supported OS (no macOS 11)
    
    User->>README: Check software versions
    README-->>User: Display updated software versions

    User->>Toolset: Select tool version
    Toolset-->>User: Provide compatible tool options
Loading

🌟🐰 A rabbit hops with glee,
"Old versions gone, just wait and see!
With fresh tools and updates bright,
Our coding world feels just right!
So let’s leap and dance today,
For brighter paths are on our way!"
🐇✨


<!-- walkthrough_end -->
<!-- internal state start -->


<!-- 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Hrn9KcZ5t+m9mTuaRnks7u1g7+nX/E/YIylRuQ5cT5neUHrp5Tweee7g/xmruTR87WCiGVp5cBldYBP8iBk0/JwC/nm4OVG5mBlYmW2s/5laeXs5ysyyeQJ5h+mCmU/YQmxJuWwZWJnHvFwZT9iEfCv8fBnr/AIZq7kFDlCRohnHGa+YNCISuU/Yo/y/uSoZM/xCediWmhm43GZsOO56GfJwK/yGGcYZ6/ymGel5zXmBzrN4UMnWGWNpTBkYediWNfYjAAu5+/xIGe4ZWnnvKRx5dfz2/A38q7kaqWrc3ymWGe1gERnJGU0ZJCKKWdBIT9hpyTnJeGhPiB0ZOckcwDBO+cle3I7cgxlcwJd54xmD3JXJIklIqXeCME41ydd5IaDLGRu4tbzVeeG5ME74qQu5Gxn2/FsZZbliOeoAHbkHGSn8RxlO/LI5vgC/eft5SS4KOTF5Zxl/SRcZ53xseYtK88C3GViZDxnB/Bj5XUo4efh5eHkfGdW59dgzTvV5nbl5XACZ6jk+KfnxZ4j/eXraK/zQmXLpKJkwTs/cTPlImev8rPlP2Do5HPkwmRe59djP3GuAXXkq6b15Auk8+YY5TPkymZLpyqmpgECcq2ktuSQQ1gJrcGROa3l/HJ1sMrnhsXaZe/zU6WVZmpkEcNqZD7mAnKqpmvkR3MaZuvlmmVqZg8gfuVaZjgCm+cqZ9pmxmZb53Hn+uRSGRtwoyFl5CILTyJmZ6Pn12B45oQBumamAbplhmfqZgXllWf6ZiZmruX8GuZl2qeV5xVn9iZK5QTmh+Y3YVyz1mVAAyqn9OcpA48gwTvqyoJrKwBFA4mim7CMA/W7iTBkpgBBwwPn5hflP9CX5job6CA2ZrpDw+Z18rblP2IZCHbm4XH9J9yyDaU/Yo5kSAFG5E5l23NOZs5nzmYuZKvxAfPTAa5mMvC1xusBbmTuZ1unUAOzGy2I1efXYSTn7mYlArfy/8Xzp+ClR+ak5bfl1mXNQyYk9ya0ZPnlPIDzp95lkmdQiU7mK+ekkkrn4AF15TFnIWUy8J9zDsWZ56Zm73IhZ/yzMMUusT9ieuZf8w9wf+VTJhFlurMq5BFlpSLLp09zRucF5ScxRufRZzFn3+W2s5kwCWS+5pOn73LAFu4l8WYx8iAVuWcJZ/nnA7Mj5UlmxAEzI8XleLLG55nnsLAQFhaz4cIMA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 -->

<!-- internal state end -->
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=StemmlerSisters/runner-images&utm_content=1):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Explain this complex logic.`
  - `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 explain this code block.`
  -	`@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 explain its main purpose.`
  - `@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.`

### Support

Need help? Join our [Discord community](https://discord.gg/coderabbit) for assistance with any issues or questions.

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 generate sequence diagram` to generate a sequence diagram of the changes in this 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](https://docs.coderabbit.ai/guides/configure-coderabbit) 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](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 6

Outside diff range, codebase verification and nitpick comments (17)
images/ubuntu/scripts/build/install-heroku.sh (1)

16-17: Multiple occurrences of apt-get install without -y flag found

Several shell scripts use apt-get install without the -y flag, which may lead to interactive installations and disrupt automation. Consider adding the -y flag to these commands or documenting the need for manual intervention.

  • apt-get install jq
  • apt-get install r-base
  • apt-get install apache2
  • apt-get install heroku
  • ...and others

Please review these scripts to ensure they meet the intended automation requirements.

Analysis chain

Consider the impact of removing the -y flag from apt-get install.

The removal of the -y flag makes the installation process interactive, which may interrupt automated scripts that expect non-interactive behavior. If automation is required, consider adding the -y flag back or documenting the change in behavior.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the `apt-get install` command is used interactively in other scripts.

# Test: Search for `apt-get install` usage without `-y` flag. Expect: No occurrences in automation scripts.
rg --type shell 'apt-get install' | grep -v '\-y'

Length of output: 81


Script:

#!/bin/bash
# Description: Find all shell scripts and search for `apt-get install` usage without `-y` flag.

# Find all shell scripts and search for `apt-get install` without `-y`
fd -e sh -x rg 'apt-get install' {} | grep -v '\-y'

Length of output: 2377

images/ubuntu/scripts/build/install-powershell.sh (1)

20-20: Interactive apt-get install Commands Detected

The removal of the -y flag from apt-get install in the install-powershell.sh script and other scripts indicates that the installation process may require user interaction. This could disrupt automated scripts. Consider re-adding the -y flag or documenting this change to ensure non-interactive behavior where necessary.

  • images/ubuntu/scripts/build/configure-apt.sh
  • images/ubuntu/scripts/build/install-apache.sh
  • images/ubuntu/scripts/build/install-apt-common.sh
  • images/ubuntu/scripts/build/install-apt-vital.sh
  • images/ubuntu/scripts/build/install-aws-tools.sh
  • images/ubuntu/scripts/build/install-clang.sh
  • images/ubuntu/scripts/build/install-container-tools.sh
  • images/ubuntu/scripts/build/install-docker.sh
  • images/ubuntu/scripts/build/install-dotnetcore-sdk.sh
  • images/ubuntu/scripts/build/install-erlang.sh
  • images/ubuntu/scripts/build/install-firefox.sh
  • images/ubuntu/scripts/build/install-gcc-compilers.sh
  • images/ubuntu/scripts/build/install-gfortran.sh
  • images/ubuntu/scripts/build/install-git-lfs.sh
  • images/ubuntu/scripts/build/install-git.sh
  • images/ubuntu/scripts/build/install-github-cli.sh
  • images/ubuntu/scripts/build/install-google-chrome.sh
  • images/ubuntu/scripts/build/install-google-cloud-cli.sh
  • images/ubuntu/scripts/build/install-heroku.sh
  • images/ubuntu/scripts/build/install-hhvm.sh
  • images/ubuntu/scripts/build/install-java-tools.sh
  • images/ubuntu/scripts/build/install-kubernetes-tools.sh
  • images/ubuntu/scripts/build/install-microsoft-edge.sh
  • images/ubuntu/scripts/build/install-mongodb.sh
  • images/ubuntu/scripts/build/install-mono.sh
  • images/ubuntu/scripts/build/install-ms-repos.sh
  • images/ubuntu/scripts/build/install-mssql-tools.sh
  • images/ubuntu/scripts/build/install-mysql.sh
  • images/ubuntu/scripts/build/install-nginx.sh
  • images/ubuntu/scripts/build/install-phantomjs.sh
  • images/ubuntu/scripts/build/install-php.sh
  • images/ubuntu/scripts/build/install-postgresql.sh
  • images/ubuntu/scripts/build/install-powershell.sh
  • images/ubuntu/scripts/build/install-python.sh
  • images/ubuntu/scripts/build/install-rlang.sh
  • images/ubuntu/scripts/build/install-ruby.sh
  • images/ubuntu/scripts/build/install-sqlpackage.sh
  • images/ubuntu/scripts/build/install-zstd.sh
Analysis chain

Consider the impact of removing the -y flag from apt-get install.

The removal of the -y flag makes the installation process interactive, which may disrupt automated scripts expecting non-interactive behavior. If automation is needed, consider re-adding the -y flag or documenting this change.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the `apt-get install` command is used interactively in other scripts.

# Test: Search for `apt-get install` usage without `-y` flag. Expect: No occurrences in automation scripts.
rg --type shell 'apt-get install' | grep -v '\-y'

Length of output: 81


Script:

#!/bin/bash
# Description: Verify if the `apt-get install` command is used interactively in other scripts.

# Find all shell script files and search for `apt-get install` usage without `-y` flag.
fd -e sh -e bash -e zsh | xargs grep -H 'apt-get install' | grep -v '\-y'

Length of output: 4812

images/windows/scripts/tests/Docker.Tests.ps1 (1)

Transition to docker compose is incomplete

The codebase still contains references to docker-compose, specifically in the Install-DockerCompose.ps1 script, where it is being downloaded. This suggests that docker-compose might still be in use or at least available for use, indicating that the transition to docker compose is not fully complete. Please ensure that this aligns with your project's requirements and update documentation or user guidance as needed.

  • images/windows/scripts/build/Install-DockerCompose.ps1
Analysis chain

Line range hint 1-35:
Evaluate the impact of removing the docker-compose test.

The removal of the docker-compose test suggests a shift towards using docker compose. Ensure that this change aligns with your project's requirements and that users are aware of the transition to the newer command structure.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if `docker-compose` is still being used or referenced in the codebase.

# Test: Search for `docker-compose` references. Expect: No occurrences if fully transitioned to `docker compose`.
rg --type powershell 'docker-compose'

Length of output: 72


Script:

#!/bin/bash
# Description: Verify if `docker-compose` is still being used or referenced in the codebase.

# Test: Search for `docker-compose` references in all PowerShell script files.
rg 'docker-compose' --glob '*.ps1'

Length of output: 365

images/ubuntu/scripts/build/install-google-cloud-cli.sh (1)

12-13: Consider re-adding the -y flag for apt-get commands

The apt-get update and apt-get install commands are used without the -y flag in several scripts, including the install-google-cloud-cli.sh script. This can lead to required user interaction, which is not ideal for automated or CI/CD environments. Consider re-adding the -y flag to ensure non-interactive execution.

  • install-google-cloud-cli.sh: Lines with apt-get update and apt-get install google-cloud-cli
Analysis chain

Consider the impact of removing the -y flag from apt-get commands.

The removal of the -y flag from apt-get update and apt-get install commands will require user interaction, which may not be suitable for automated or CI/CD environments. If non-interactive execution is desired, consider re-adding the -y flag.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the `-y` flag is necessary for non-interactive environments.

# Test: Check for usage of `apt-get` commands without `-y` flag. Expect: No matches.
rg --type shell -A 1 $'apt-get (update|install)' | grep -v '\-y'

Length of output: 95


Script:

#!/bin/bash
# Description: Verify if the `-y` flag is necessary for non-interactive environments.

# Find all shell scripts and search for `apt-get` commands without the `-y` flag.
fd --extension sh --exec rg 'apt-get (update|install)' | grep -v '\-y'

Length of output: 2776

images/ubuntu/scripts/build/install-oc-cli.sh (1)

11-18: Missing get_toolset_value Function and Undefined .ocCli.version

The get_toolset_value function is not defined in the codebase, and there is no indication of where .ocCli.version is set. This results in the failure to construct the correct URL for downloading the OpenShift client. Please verify the following:

  • Ensure that the get_toolset_value function is defined and accessible in the script or sourced from the correct location.
  • Confirm that .ocCli.version is properly defined, either through a configuration file or another method.
Analysis chain

Verify the correctness of get_toolset_value and constructed URLs.

The conditional logic for Ubuntu 20 introduces a dynamic URL based on the toolset version. Ensure that the get_toolset_value function retrieves the correct version and that the constructed URLs are valid.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the correctness of `get_toolset_value` function and constructed URLs.

# Test: Check if `get_toolset_value` is defined and retrieves the correct version. Expect: Correct version retrieval.
ast-grep --lang bash --pattern $'function get_toolset_value($_) { $$$ }'

# Test: Validate constructed URLs. Expect: URLs are reachable.
toolset_version=$(get_toolset_value '.ocCli.version')
curl --head "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$toolset_version/openshift-client-linux-$toolset_version.tar.gz"
curl --head "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-client-linux.tar.gz"

Length of output: 2514


Script:

#!/bin/bash
# Search for the definition of the `get_toolset_value` function in the codebase
rg 'function get_toolset_value' --context 5

# Search for any occurrences of `.ocCli.version` to understand where it is defined or used
rg '\.ocCli\.version'

Length of output: 173

images/ubuntu/scripts/build/install-mysql.sh (1)

18-21: Consider adding the -y flag to apt-get install commands for non-interactive execution.

The absence of the -y flag in various scripts, including install-mysql.sh, will require user interaction during installation, which may not be suitable for automated or CI/CD environments.

  • images/ubuntu/scripts/build/install-mysql.sh
  • images/ubuntu/scripts/build/install-gcc-compilers.sh
  • images/ubuntu/scripts/build/install-zstd.sh
  • images/ubuntu/scripts/build/install-ruby.sh
  • images/ubuntu/scripts/build/install-python.sh
  • images/ubuntu/scripts/build/install-postgresql.sh
  • images/ubuntu/scripts/build/install-phantomjs.sh
  • images/ubuntu/scripts/build/install-nginx.sh
  • images/ubuntu/scripts/build/install-powershell.sh
  • images/ubuntu/scripts/build/install-mssql-tools.sh
  • images/ubuntu/scripts/build/install-ms-repos.sh
  • images/ubuntu/scripts/build/install-mongodb.sh
  • images/ubuntu/scripts/build/install-kubernetes-tools.sh
  • images/ubuntu/scripts/build/install-java-tools.sh
  • images/ubuntu/scripts/build/install-php.sh
  • images/ubuntu/scripts/build/install-mono.sh
  • images/ubuntu/scripts/build/install-heroku.sh
  • images/ubuntu/scripts/build/install-google-cloud-cli.sh
  • images/ubuntu/scripts/build/install-google-chrome.sh
  • images/ubuntu/scripts/build/install-github-cli.sh
  • images/ubuntu/scripts/build/install-git-lfs.sh
  • images/ubuntu/scripts/build/install-git.sh
  • images/ubuntu/scripts/build/install-gfortran.sh
  • images/ubuntu/scripts/build/install-firefox.sh
  • images/ubuntu/scripts/build/install-dotnetcore-sdk.sh
  • images/ubuntu/scripts/build/install-docker.sh
  • images/ubuntu/scripts/build/install-hhvm.sh
  • images/ubuntu/scripts/build/install-clang.sh
  • images/ubuntu/scripts/build/install-aws-tools.sh
  • images/ubuntu/scripts/build/install-apt-vital.sh
  • images/ubuntu/scripts/build/install-apt-common.sh
  • images/ubuntu/scripts/build/install-apache.sh
  • images/ubuntu/scripts/build/configure-apt.sh
  • images/ubuntu/scripts/build/install-container-tools.sh
  • images/ubuntu/scripts/build/install-rlang.sh
  • images/ubuntu/scripts/build/install-microsoft-edge.sh
  • images/ubuntu/scripts/build/install-erlang.sh
Analysis chain

Consider the impact of removing the -y flag from apt-get install commands.

The removal of the -y flag from apt-get install mysql-client and apt-get install mysql-server commands will require user interaction, which may not be suitable for automated or CI/CD environments. If non-interactive execution is desired, consider re-adding the -y flag.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the `-y` flag is necessary for non-interactive environments.

# Test: Check for usage of `apt-get install` commands without `-y` flag. Expect: No matches.
rg --type shell -A 1 $'apt-get install' | grep -v '\-y'

Length of output: 86


Script:

#!/bin/bash
# Description: Verify if the `-y` flag is necessary for non-interactive environments.

# Test: Check for usage of `apt-get install` commands without `-y` flag. Expect: No matches.
rg 'apt-get install' --glob '*.sh' -A 1 | grep -v '\-y'

Length of output: 7713

images/ubuntu/scripts/build/install-python.sh (1)

13-20: Reconsider the removal of the -y flag from apt-get install.

The install-python.sh script is used in Packer templates, indicating it is intended for non-interactive execution. Removing the -y flag may prompt for user confirmation during package installation, disrupting automated setups. Consider re-adding the -y flag to ensure smooth, non-interactive installations.

  • Files referencing the script:
    • images/ubuntu/templates/ubuntu-20.04.pkr.hcl
    • images/ubuntu/templates/ubuntu-22.04.pkr.hcl
    • images/ubuntu/templates/ubuntu-24.04.pkr.hcl
    • Various macOS Packer templates
Analysis chain

Consider the impact of removing the -y flag from apt-get install.

The removal of the -y flag from the apt-get install commands may cause the script to prompt for user confirmation during installation, potentially disrupting automated setups. If non-interactive installations are desired, consider re-adding the -y flag or using an alternative approach to handle confirmations.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the script is used in an automated environment where non-interactive installations are expected.

# Test: Search for invocations of this script in the repository.
# Expect: Identifying if the script is called in non-interactive contexts.
rg --type shell 'install-python.sh'

Length of output: 65


Script:

#!/bin/bash
# Description: Search for invocations of the install-python.sh script in the repository to determine if it is used in non-interactive contexts.

# Test: Search for the script name in all files.
rg 'install-python.sh'

Length of output: 1193

images/ubuntu/scripts/build/install-mono.sh (1)

26-26: Reconsider the removal of the -y flag in apt-get install.

The install-mono.sh script is used in Packer templates, indicating it is part of an automated setup. Removing the -y flag from apt-get install could disrupt this automation by requiring manual confirmation during installation. Consider re-adding the -y flag to ensure non-interactive installations proceed smoothly.

  • Files referencing install-mono.sh:
    • images/macos/templates/macOS-14.anka.pkr.hcl
    • images/macos/templates/macOS-13.arm64.anka.pkr.hcl
    • images/macos/templates/macOS-13.anka.pkr.hcl
    • images/macos/templates/macOS-14.arm64.anka.pkr.hcl
    • images/ubuntu/templates/ubuntu-22.04.pkr.hcl
    • images/ubuntu/templates/ubuntu-20.04.pkr.hcl
Analysis chain

Consider the impact of removing the -y flag from apt-get install.

The removal of the -y flag from the apt-get install command may cause the script to prompt for user confirmation during installation, potentially disrupting automated setups. If non-interactive installations are desired, consider re-adding the -y flag or using an alternative approach to handle confirmations.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the script is used in an automated environment where non-interactive installations are expected.

# Test: Search for invocations of this script in the repository.
# Expect: Identifying if the script is called in non-interactive contexts.
rg --type shell 'install-mono.sh'

Length of output: 63


Script:

#!/bin/bash
# Description: Search for invocations of the install-mono.sh script in the repository.
# This will help determine if the script is used in non-interactive contexts.
rg 'install-mono.sh'

Length of output: 773

images/ubuntu/scripts/build/configure-apt.sh (1)

7-7: Define $HELPER_SCRIPTS correctly

The environment variable $HELPER_SCRIPTS is not defined or does not point to a valid directory. This could result in errors when sourcing os.sh. Please ensure that $HELPER_SCRIPTS is set correctly in the environment or within the script to point to the directory containing the helper scripts.

  • Check the script or environment setup to define $HELPER_SCRIPTS.
  • Verify that the directory specified by $HELPER_SCRIPTS contains the os.sh script.
Analysis chain

Ensure $HELPER_SCRIPTS is defined.

The script sources os.sh from $HELPER_SCRIPTS. Ensure that $HELPER_SCRIPTS is defined and points to the correct directory.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that $HELPER_SCRIPTS is defined and points to a valid directory.

# Test: Check if $HELPER_SCRIPTS is set and the directory exists.
if [ -z "$HELPER_SCRIPTS" ] || [ ! -d "$HELPER_SCRIPTS" ]; then
  echo "HELPER_SCRIPTS is not defined or does not point to a valid directory."
else
  echo "HELPER_SCRIPTS is defined and valid."
fi

Length of output: 164

images/windows/scripts/build/Install-PostgreSQL.ps1 (1)

37-58: Consider improving error handling.

While the script sets ErrorActionPreference to SilentlyContinue, consider logging errors for debugging purposes, especially when the installer is not found.

+  # Log errors to a file for debugging purposes
+  $errorLog = "C:\path\to\error.log"
+  $ErrorActionPreference = 'Continue'
+  $Error | Out-File -FilePath $errorLog -Append
images/ubuntu/scripts/build/install-docker.sh (1)

27-30: Reconsider the removal of the -y flag across installation scripts.

The absence of the -y flag in apt-get install commands across multiple scripts may disrupt automation and non-interactive environments. Consider re-adding it or documenting the requirement for manual confirmation to ensure clarity and avoid unexpected interruptions in automated workflows.

  • images/ubuntu/scripts/build/install-docker.sh
  • images/ubuntu/scripts/build/install-container-tools.sh
  • images/ubuntu/scripts/build/install-mongodb.sh
  • images/ubuntu/scripts/build/install-zstd.sh
  • images/ubuntu/scripts/build/install-sqlpackage.sh
  • images/ubuntu/scripts/build/install-ruby.sh
  • images/ubuntu/scripts/build/install-python.sh
  • images/ubuntu/scripts/build/install-powershell.sh
  • images/ubuntu/scripts/build/install-php.sh
  • images/ubuntu/scripts/build/install-nginx.sh
  • images/ubuntu/scripts/build/install-mssql-tools.sh
  • images/ubuntu/scripts/build/install-mono.sh
  • images/ubuntu/scripts/build/install-mysql.sh
  • images/ubuntu/scripts/build/install-kubernetes-tools.sh
  • images/ubuntu/scripts/build/install-phantomjs.sh
  • images/ubuntu/scripts/build/install-google-cloud-cli.sh
  • images/ubuntu/scripts/build/install-github-cli.sh
  • images/ubuntu/scripts/build/install-java-tools.sh
  • images/ubuntu/scripts/build/install-git-lfs.sh
  • images/ubuntu/scripts/build/install-heroku.sh
  • images/ubuntu/scripts/build/install-gcc-compilers.sh
  • images/ubuntu/scripts/build/install-firefox.sh
  • images/ubuntu/scripts/build/install-ms-repos.sh
  • images/ubuntu/scripts/build/install-clang.sh
  • images/ubuntu/scripts/build/install-git.sh
  • images/ubuntu/scripts/build/install-aws-tools.sh
  • images/ubuntu/scripts/build/install-apt-vital.sh
  • images/ubuntu/scripts/build/install-apt-common.sh
  • images/ubuntu/scripts/build/install-google-chrome.sh
  • images/ubuntu/scripts/build/install-apache.sh
  • images/ubuntu/scripts/build/install-postgresql.sh
  • images/ubuntu/scripts/build/install-rlang.sh
  • images/ubuntu/scripts/build/install-hhvm.sh
  • images/ubuntu/scripts/build/install-microsoft-edge.sh
  • images/ubuntu/scripts/build/install-dotnetcore-sdk.sh
  • images/ubuntu/scripts/build/configure-apt.sh
  • images/ubuntu/scripts/build/install-erlang.sh
  • images/ubuntu/scripts/build/install-gfortran.sh
Analysis chain

Reconsider the removal of the -y flag.

Removing the -y flag from apt-get install commands may disrupt automation and non-interactive environments. Consider re-adding it or documenting the need for manual confirmation.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the impact of removing the `-y` flag on automation.

# Test: Check for scripts relying on non-interactive execution.
rg --type sh 'apt-get install' -A 2

Length of output: 11356

images/ubuntu/scripts/build/install-java-tools.sh (1)

88-88: Reconsider the removal of the -y flag for Ant installation.

The removal of the -y flag from the apt-get install command for Ant in install-java-tools.sh may require manual confirmation, affecting automation. This pattern is also observed in other scripts, potentially impacting automated setups. Please evaluate the necessity of this change and consider reinstating the -y flag to maintain non-interactive execution.

  • images/ubuntu/scripts/build/install-java-tools.sh: Line 88
Analysis chain

Reconsider the removal of the -y flag for Ant installation.

The removal of the -y flag from the apt-get install command for Ant may require manual confirmation, affecting automation. Evaluate the need for this change.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the impact of removing the `-y` flag on automation.

# Test: Check for scripts relying on non-interactive execution.
rg --type sh 'apt-get install' -A 2

Length of output: 11356

images/ubuntu/Ubuntu2404-Readme.md (1)

118-119: Specify language for fenced code block.

The fenced code block should specify a language for syntax highlighting.

-```
+```plaintext
images/ubuntu/Ubuntu2004-Readme.md (2)

111-111: Consider using a hyphen for clarity.

If "Open Source" is used as a compound adjective before a noun, consider using a hyphen: "Open-Source".

Tools
LanguageTool

[uncategorized] ~111-~111: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...127.0 - R 4.4.1 - Skopeo 1.5.0 - Sphinx Open Source Search Server 2.2.11 - SVN 1.13.0 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


144-144: Specify a language for the fenced code block.

To improve readability and comply with Markdownlint, specify a language for the fenced code block.

-```
+```shell
Tools
Markdownlint

144-144: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

images/ubuntu/Ubuntu2204-Readme.md (2)

107-107: Consider using a hyphen for clarity.

If "Open Source" is used as a compound adjective before a noun, consider using a hyphen: "Open-Source".

Tools
LanguageTool

[uncategorized] ~107-~107: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...127.0 - R 4.4.1 - Skopeo 1.4.1 - Sphinx Open Source Search Server 2.2.11 - SVN 1.14.1 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


140-140: Specify a language for the fenced code block.

To improve readability and comply with Markdownlint, specify a language for the fenced code block.

-```
+```shell
Tools
Markdownlint

140-140: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 57d9981 and 7665ed4.

Files selected for processing (96)
  • .github/ISSUE_TEMPLATE/announcement.yml (2 hunks)
  • .github/ISSUE_TEMPLATE/bug-report.yml (1 hunks)
  • .github/ISSUE_TEMPLATE/tool-request.yml (2 hunks)
  • .github/workflows/ubuntu2404.yml (1 hunks)
  • README.md (2 hunks)
  • images.CI/linux-and-win/build-image.ps1 (2 hunks)
  • images/macos/macos-12-Readme.md (7 hunks)
  • images/macos/macos-13-Readme.md (6 hunks)
  • images/macos/macos-13-arm64-Readme.md (5 hunks)
  • images/macos/macos-14-Readme.md (5 hunks)
  • images/macos/macos-14-arm64-Readme.md (4 hunks)
  • images/macos/scripts/build/configure-machine.sh (1 hunks)
  • images/macos/scripts/tests/Git.Tests.ps1 (1 hunks)
  • images/macos/templates/macOS-12.anka.pkr.hcl (1 hunks)
  • images/macos/templates/macOS-13.anka.pkr.hcl (1 hunks)
  • images/macos/templates/macOS-13.arm64.anka.pkr.hcl (1 hunks)
  • images/macos/templates/macOS-14.anka.pkr.hcl (1 hunks)
  • images/macos/templates/macOS-14.arm64.anka.pkr.hcl (1 hunks)
  • images/macos/toolsets/toolset-12.json (1 hunks)
  • images/macos/toolsets/toolset-13.json (2 hunks)
  • images/macos/toolsets/toolset-14.json (3 hunks)
  • images/ubuntu/Ubuntu2004-Readme.md (11 hunks)
  • images/ubuntu/Ubuntu2204-Readme.md (12 hunks)
  • images/ubuntu/Ubuntu2404-Readme.md (8 hunks)
  • images/ubuntu/scripts/build/configure-apt.sh (2 hunks)
  • images/ubuntu/scripts/build/configure-system.sh (2 hunks)
  • images/ubuntu/scripts/build/install-apache.sh (1 hunks)
  • images/ubuntu/scripts/build/install-apt-common.sh (1 hunks)
  • images/ubuntu/scripts/build/install-apt-vital.sh (1 hunks)
  • images/ubuntu/scripts/build/install-aws-tools.sh (1 hunks)
  • images/ubuntu/scripts/build/install-azure-cli.sh (1 hunks)
  • images/ubuntu/scripts/build/install-clang.sh (1 hunks)
  • images/ubuntu/scripts/build/install-container-tools.sh (1 hunks)
  • images/ubuntu/scripts/build/install-docker.sh (1 hunks)
  • images/ubuntu/scripts/build/install-dotnetcore-sdk.sh (1 hunks)
  • images/ubuntu/scripts/build/install-firefox.sh (1 hunks)
  • images/ubuntu/scripts/build/install-gcc-compilers.sh (1 hunks)
  • images/ubuntu/scripts/build/install-gfortran.sh (1 hunks)
  • images/ubuntu/scripts/build/install-git-lfs.sh (1 hunks)
  • images/ubuntu/scripts/build/install-git.sh (1 hunks)
  • images/ubuntu/scripts/build/install-github-cli.sh (1 hunks)
  • images/ubuntu/scripts/build/install-google-chrome.sh (1 hunks)
  • images/ubuntu/scripts/build/install-google-cloud-cli.sh (1 hunks)
  • images/ubuntu/scripts/build/install-heroku.sh (1 hunks)
  • images/ubuntu/scripts/build/install-hhvm.sh (1 hunks)
  • images/ubuntu/scripts/build/install-java-tools.sh (1 hunks)
  • images/ubuntu/scripts/build/install-kubernetes-tools.sh (1 hunks)
  • images/ubuntu/scripts/build/install-mongodb.sh (1 hunks)
  • images/ubuntu/scripts/build/install-mono.sh (1 hunks)
  • images/ubuntu/scripts/build/install-ms-repos.sh (1 hunks)
  • images/ubuntu/scripts/build/install-mssql-tools.sh (1 hunks)
  • images/ubuntu/scripts/build/install-mysql.sh (1 hunks)
  • images/ubuntu/scripts/build/install-nginx.sh (1 hunks)
  • images/ubuntu/scripts/build/install-oc-cli.sh (1 hunks)
  • images/ubuntu/scripts/build/install-phantomjs.sh (1 hunks)
  • images/ubuntu/scripts/build/install-php.sh (2 hunks)
  • images/ubuntu/scripts/build/install-postgresql.sh (1 hunks)
  • images/ubuntu/scripts/build/install-powershell.sh (1 hunks)
  • images/ubuntu/scripts/build/install-python.sh (1 hunks)
  • images/ubuntu/scripts/build/install-ruby.sh (2 hunks)
  • images/ubuntu/scripts/build/install-rust.sh (1 hunks)
  • images/ubuntu/scripts/build/install-sqlpackage.sh (1 hunks)
  • images/ubuntu/scripts/build/install-zstd.sh (1 hunks)
  • images/ubuntu/scripts/docs-gen/Generate-SoftwareReport.ps1 (2 hunks)
  • images/ubuntu/scripts/docs-gen/SoftwareReport.Common.psm1 (1 hunks)
  • images/ubuntu/scripts/docs-gen/SoftwareReport.Tools.psm1 (1 hunks)
  • images/ubuntu/scripts/tests/Tools.Tests.ps1 (2 hunks)
  • images/ubuntu/templates/ubuntu-20.04.pkr.hcl (3 hunks)
  • images/ubuntu/templates/ubuntu-22.04.pkr.hcl (3 hunks)
  • images/ubuntu/templates/ubuntu-24.04.pkr.hcl (2 hunks)
  • images/ubuntu/templates/ubuntu-minimal.pkr.hcl (3 hunks)
  • images/ubuntu/toolsets/toolset-2004.json (6 hunks)
  • images/ubuntu/toolsets/toolset-2204.json (4 hunks)
  • images/ubuntu/toolsets/toolset-2404.json (5 hunks)
  • images/windows/Windows2019-Readme.md (13 hunks)
  • images/windows/Windows2022-Readme.md (11 hunks)
  • images/windows/scripts/build/Install-AWSTools.ps1 (1 hunks)
  • images/windows/scripts/build/Install-AndroidSDK.ps1 (1 hunks)
  • images/windows/scripts/build/Install-Chrome.ps1 (1 hunks)
  • images/windows/scripts/build/Install-CloudFoundryCli.ps1 (1 hunks)
  • images/windows/scripts/build/Install-DockerCompose.ps1 (1 hunks)
  • images/windows/scripts/build/Install-Firefox.ps1 (1 hunks)
  • images/windows/scripts/build/Install-Git.ps1 (1 hunks)
  • images/windows/scripts/build/Install-GoogleCloudCLI.ps1 (1 hunks)
  • images/windows/scripts/build/Install-PostgreSQL.ps1 (1 hunks)
  • images/windows/scripts/build/Install-Rust.ps1 (1 hunks)
  • images/windows/scripts/build/Install-TortoiseSvn.ps1 (1 hunks)
  • images/windows/scripts/docs-gen/Generate-SoftwareReport.ps1 (1 hunks)
  • images/windows/scripts/docs-gen/SoftwareReport.Tools.psm1 (1 hunks)
  • images/windows/scripts/tests/Databases.Tests.ps1 (1 hunks)
  • images/windows/scripts/tests/Docker.Tests.ps1 (1 hunks)
  • images/windows/scripts/tests/Git.Tests.ps1 (1 hunks)
  • images/windows/templates/windows-2019.pkr.hcl (1 hunks)
  • images/windows/templates/windows-2022.pkr.hcl (1 hunks)
  • images/windows/toolsets/toolset-2019.json (10 hunks)
  • images/windows/toolsets/toolset-2022.json (6 hunks)
Files skipped from review due to trivial changes (17)
  • .github/ISSUE_TEMPLATE/announcement.yml
  • .github/ISSUE_TEMPLATE/bug-report.yml
  • .github/ISSUE_TEMPLATE/tool-request.yml
  • README.md
  • images/macos/scripts/build/configure-machine.sh
  • images/macos/scripts/tests/Git.Tests.ps1
  • images/macos/toolsets/toolset-12.json
  • images/ubuntu/scripts/build/install-azure-cli.sh
  • images/ubuntu/scripts/build/install-github-cli.sh
  • images/ubuntu/scripts/build/install-google-chrome.sh
  • images/ubuntu/scripts/docs-gen/SoftwareReport.Common.psm1
  • images/ubuntu/scripts/tests/Tools.Tests.ps1
  • images/windows/scripts/build/Install-DockerCompose.ps1
  • images/windows/scripts/build/Install-TortoiseSvn.ps1
  • images/windows/scripts/docs-gen/Generate-SoftwareReport.ps1
  • images/windows/scripts/tests/Git.Tests.ps1
  • images/windows/templates/windows-2022.pkr.hcl
Additional context used
Shellcheck
images/ubuntu/scripts/build/install-container-tools.sh

[error] 32-32: Double quote array expansions to avoid re-splitting elements.

(SC2068)

LanguageTool
images/ubuntu/Ubuntu2404-Readme.md

[uncategorized] ~95-~95: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...Pulumi 3.127.0 - Skopeo 1.13.3 - Sphinx Open Source Search Server 2.2.11 - yamllint 1.35.1 ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

images/ubuntu/Ubuntu2004-Readme.md

[uncategorized] ~111-~111: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...127.0 - R 4.4.1 - Skopeo 1.5.0 - Sphinx Open Source Search Server 2.2.11 - SVN 1.13.0 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

images/ubuntu/Ubuntu2204-Readme.md

[uncategorized] ~107-~107: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...127.0 - R 4.4.1 - Skopeo 1.4.1 - Sphinx Open Source Search Server 2.2.11 - SVN 1.14.1 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

Markdownlint
images/ubuntu/Ubuntu2404-Readme.md

120-120: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

images/ubuntu/Ubuntu2004-Readme.md

144-144: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

images/ubuntu/Ubuntu2204-Readme.md

140-140: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

images/macos/macos-12-Readme.md

369-369: null
Bare URL used

(MD034, no-bare-urls)


372-372: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Additional comments not posted (181)
images/ubuntu/scripts/build/install-nginx.sh (1)

8-8: Consider the impact on automation due to the removal of the -y flag.

The removal of the -y flag from the apt-get install nginx command will prompt for user confirmation, potentially interrupting automated scripts. If automation is desired, consider adding the -y flag back or ensuring that the script is executed in an interactive environment.

images/ubuntu/scripts/build/install-apt-vital.sh (1)

11-11: Consider the impact on automation due to the removal of the -y flag.

The removal of the -y flag from the apt-get install command will prompt for user confirmation, potentially interrupting automated scripts. If automation is desired, consider adding the -y flag back or ensuring that the script is executed in an interactive environment.

images/ubuntu/scripts/build/install-apache.sh (1)

8-8: Consider the impact on automation due to the removal of the -y flag.

The removal of the -y flag from the apt-get install apache2 command will prompt for user confirmation, potentially interrupting automated scripts. If automation is desired, consider adding the -y flag back or ensuring that the script is executed in an interactive environment.

images/ubuntu/scripts/build/install-gcc-compilers.sh (1)

14-14: Consider the impact of removing the -y flag.

The removal of the -y flag from the apt-get install command will require manual confirmation during installation. This change could disrupt automation and should be documented if intentional.

images/ubuntu/scripts/build/install-mssql-tools.sh (1)

10-10: Consider the impact of removing the -y flag.

The removal of the -y flag from the apt-get install command will require manual confirmation during installation. This change could disrupt automation and should be documented if intentional.

.github/workflows/ubuntu2404.yml (1)

1-20: Verify label conditions and workflow usage.

Ensure that the labels CI ubuntu-all and CI ubuntu-2404 are correctly applied to trigger this workflow. Also, verify that the referenced workflow .github/workflows/trigger-ubuntu-win-build.yml is correctly set up to handle the ubuntu2404 image type.

Verification successful

Workflow dynamically handles image types, including ubuntu2404.

The trigger-ubuntu-win-build.yml workflow uses a dynamic approach to handle different image types, including ubuntu2404, by constructing an event type string based on the image_type input. Ensure that the labels CI ubuntu-all and CI ubuntu-2404 are correctly applied to trigger this workflow. Manual verification of label application is recommended.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence and correctness of the referenced workflow.

# Test: Check if the referenced workflow file exists.
fd 'trigger-ubuntu-win-build.yml' .github/workflows

# Test: Search for the handling of 'ubuntu2404' in the referenced workflow.
rg --type yaml 'ubuntu2404' .github/workflows/trigger-ubuntu-win-build.yml

Length of output: 173


Script:

#!/bin/bash
# Description: Output the contents of the referenced workflow file to verify handling of 'ubuntu2404'.

# Display the contents of the workflow file to inspect manually.
cat .github/workflows/trigger-ubuntu-win-build.yml

Length of output: 1340

images/windows/scripts/build/Install-GoogleCloudCLI.ps1 (1)

10-10: Verify the correctness of the new expected signature.

The expected signature for the Google Cloud SDK installer has been updated. Ensure that the new signature '607A3EDAA64933E94422FC8F0C80388E0590986C' is correct and matches the latest installer package.

images/ubuntu/scripts/build/install-gfortran.sh (2)

17-18: Addition of versionless gfortran installation is a good enhancement.

The addition of a command to install the latest version of gfortran improves flexibility by allowing users to install the most recent version without specifying it explicitly.


14-14: Consider the impact of removing the -y flag.

The removal of the -y flag from the apt-get install command will prompt users for confirmation, affecting automation. If automation is desired, consider re-adding the -y flag.

images/ubuntu/scripts/build/install-ms-repos.sh (1)

14-16: Consider the impact of removing -y and -q flags.

The removal of the -y and -q flags from apt-get commands will prompt users for confirmation and display more output, affecting automation and user experience. If automation is desired, consider re-adding these flags.

images/ubuntu/scripts/build/install-apt-common.sh (1)

15-15: Consider the impact on automation due to the removal of the -y flag.

Removing the -y flag from the apt-get install command requires user confirmation, which can disrupt automated workflows. Ensure this change is intentional and consider documenting the rationale behind it.

images/ubuntu/scripts/build/install-git-lfs.sh (1)

14-14: Consider the impact on automation due to the removal of the -y flag.

The removal of the -y flag from the apt-get install git-lfs command requires user confirmation, potentially impacting automated scripts. Ensure this change is intentional and consider documenting the rationale behind it.

images/ubuntu/scripts/build/install-hhvm.sh (1)

17-17: Consider the impact on automation and logging due to the removal of -qq and -y flags.

The removal of the -qq flag increases verbosity, which can help in debugging but may clutter logs. The removal of the -y flag requires user confirmation, potentially affecting automated workflows. Ensure these changes are intentional and consider documenting the rationale behind them.

images/ubuntu/scripts/build/install-rust.sh (1)

27-27: Consider the implications of removing the --locked flag.

Removing the --locked flag from the cargo install command allows for the installation of newer versions of dependencies, which might introduce compatibility issues or unexpected behavior. Ensure that this change is intentional and that the potential impact on the installed tools is acceptable.

images/ubuntu/scripts/build/install-git.sh (2)

15-15: Verify the impact of removing the Git version check.

Removing the explicit version check for Git might lead to compatibility issues if specific versions are required for other parts of the system or scripts. Ensure that this change does not introduce any unintended consequences.


24-24: Consider the implications of removing etc-environment.sh.

The removal of etc-environment.sh sourcing might affect environment variable configurations that were previously set up by the script. Verify that these configurations are either unnecessary or handled elsewhere.

images/ubuntu/scripts/build/install-mongodb.sh (1)

21-21: Assess the impact of removing the -y flag from apt-get install.

The removal of the -y flag means the installation will require manual confirmation, potentially interrupting automated processes. Ensure that this change aligns with the intended use case for this script.

images/windows/scripts/build/Install-CloudFoundryCli.ps1 (1)

23-23: Verify the updated thumbprint for Cloud Foundry CLI.

Ensure that the new thumbprint "2C6B2F1562698503A6E4A25F2DF058E12E23A190" is correct and matches the expected signature for the current release of the Cloud Foundry CLI. This is crucial for maintaining the integrity and security of the installation process.

images/ubuntu/scripts/build/install-postgresql.sh (1)

23-23: Review the change from apt to apt-get.

The change from apt to apt-get for installing PostgreSQL may affect the user interface and options available during installation. Ensure that this change aligns with the intended behavior and compatibility requirements of the script.

Verification successful

Change from apt to apt-get is appropriate for automated scripts

The install-postgresql.sh script is invoked in multiple automation templates for both Ubuntu and macOS environments. The use of apt-get is suitable for scripting and automation due to its stability and predictability compared to apt, which is more user-friendly but less stable for scripts. This change aligns with typical best practices for script-based package management.

  • Files invoking the script:
    • images/ubuntu/templates/ubuntu-24.04.pkr.hcl
    • images/ubuntu/templates/ubuntu-22.04.pkr.hcl
    • images/ubuntu/templates/ubuntu-20.04.pkr.hcl
    • images/macos/templates/macOS-11.pkr.hcl
    • images/macos/templates/macOS-12.anka.pkr.hcl
    • images/macos/templates/macOS-12.pkr.hcl
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the change from `apt` to `apt-get` aligns with the intended behavior and compatibility requirements.

# Test: Search for invocations of this script in the repository.
# Expect: Identifying if the script is called in contexts that require specific package manager behavior.
rg --type shell 'install-postgresql.sh'

Length of output: 69


Script:

#!/bin/bash
# Description: Verify if the change from `apt` to `apt-get` aligns with the intended behavior and compatibility requirements.

# Test: Search for invocations of this script in the repository.
# Expect: Identifying if the script is called in contexts that require specific package manager behavior.
rg 'install-postgresql.sh'

Length of output: 817

images/ubuntu/scripts/build/configure-system.sh (2)

8-8: LGTM! Verify os.sh provides necessary configurations.

The change to source os.sh instead of etc-environment.sh seems appropriate. Ensure os.sh includes all required environment setups.


35-40: LGTM! Verify the sed command execution.

The conditional block for Ubuntu 24.04 is a necessary addition to prevent unwanted service restarts. Ensure the sed command correctly modifies needrestart.conf.

images/windows/scripts/build/Install-AWSTools.ps1 (1)

14-14: LGTM! Verify the new signature.

The updated expected signature for the Session Manager Plugin reflects a change in the plugin version or source. Ensure the new signature is correct.

images/ubuntu/scripts/build/install-zstd.sh (1)

22-22: Consider the impact of removing the -y flag.

The removal of the -y flag from the apt-get install command may require user interaction, affecting automation. Ensure this change is intentional.

images/ubuntu/scripts/build/install-clang.sh (1)

14-14: Consider the impact of removing the -y flag.

The removal of the -y flag from the apt-get install command may require manual confirmation during installation, which can disrupt automated setups. Ensure this change aligns with the intended deployment strategy.

images/ubuntu/scripts/build/install-aws-tools.sh (1)

17-17: Switching from apt to apt-get is a safe change.

The replacement of apt with apt-get for installing the session manager plugin is a safe change that can enhance script consistency and control over the installation process.

images/ubuntu/scripts/build/install-container-tools.sh (1)

32-32: Consider the impact of removing the -y flag.

The removal of the -y flag from the apt-get install command may require manual confirmation during installation, which can disrupt automated setups. Ensure this change aligns with the intended deployment strategy.

Tools
Shellcheck

[error] 32-32: Double quote array expansions to avoid re-splitting elements.

(SC2068)

images/windows/scripts/build/Install-Git.ps1 (1)

Line range hint 1-49:
LGTM! Verify the impact of removing GIT_CLONE_PROTECTION_ACTIVE.

The removal of the line setting GIT_CLONE_PROTECTION_ACTIVE to "false" enhances security by defaulting to the current behavior. This change is approved.

However, ensure that this change does not adversely affect any existing workflows or scripts that relied on the previous behavior.

Verification successful

No impact from removing GIT_CLONE_PROTECTION_ACTIVE.

The search revealed no dependencies on the GIT_CLONE_PROTECTION_ACTIVE variable in the codebase, confirming that its removal does not affect existing workflows or scripts. This change enhances security without adverse effects.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the impact of removing `GIT_CLONE_PROTECTION_ACTIVE`.

# Test: Search for references to `GIT_CLONE_PROTECTION_ACTIVE` in the codebase. Expect: No dependencies on this variable.
rg --type powershell 'GIT_CLONE_PROTECTION_ACTIVE'

Length of output: 85


Script:

#!/bin/bash
# Description: Verify the impact of removing `GIT_CLONE_PROTECTION_ACTIVE`.

# Test: Search for references to `GIT_CLONE_PROTECTION_ACTIVE` in the codebase. Expect: No dependencies on this variable.
rg 'GIT_CLONE_PROTECTION_ACTIVE'

Length of output: 32

images/windows/scripts/build/Install-Rust.ps1 (1)

43-44: Consider the impact of removing the --locked flag.

The removal of the --locked flag from the cargo install command can lead to different versions of packages being installed, potentially causing inconsistencies across environments.

images/ubuntu/scripts/build/install-firefox.sh (1)

24-25: Re-evaluate the removal of the -y flag.

The removal of the -y flag from the apt-get install command requires user confirmation, which could disrupt automated installations.

Verification successful

Re-evaluate the removal of the -y flag in apt-get install commands

The absence of the -y flag in various scripts indicates a potential disruption in automation, as installations will require manual confirmation. Consider re-adding the -y flag for non-interactive installations.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the impact of removing the `-y` flag from `apt-get install`.

# Test: Check for automation scripts that rely on non-interactive installations. Expect: No scripts that assume non-interactive mode.
rg --type shell 'apt-get install' -A 2

Length of output: 70


Script:

#!/bin/bash
# Description: Re-run the search for `apt-get install` commands in shell scripts to verify the use of the `-y` flag.

# Test: Search for `apt-get install` in shell scripts and include context lines to see if `-y` is used.
rg 'apt-get install' -A 2

Length of output: 11346

images/ubuntu/scripts/build/configure-apt.sh (1)

41-45: Conditional logic for Ubuntu 24 compatibility looks good.

The script correctly differentiates behavior based on the Ubuntu version, ensuring that the appropriate sources list is used.

images/ubuntu/scripts/build/install-ruby.sh (1)

13-16: Temporary fix for Ubuntu 20 is appropriate.

The conditional installation of the public_suffix gem for Ubuntu 20 addresses a known issue and is a suitable temporary fix.

images.CI/linux-and-win/build-image.ps1 (1)

13-14: LGTM! But verify the new parameter usage.

The addition of the AllowedInboundIpAddresses parameter enhances configurability. Ensure that the new parameter is correctly utilized in any related configurations or documentation.

Also applies to: 58-58

images/windows/scripts/tests/Databases.Tests.ps1 (1)

75-76: LGTM!

The test now correctly focuses on the major version of PostgreSQL, which is appropriate for compatibility checks.

images/windows/scripts/build/Install-Firefox.ps1 (1)

56-56: LGTM!

The thumbprint update for the Gecko WebDriver signature is necessary for maintaining security and integrity.

images/ubuntu/scripts/build/install-php.sh (1)

24-24: Consider the impact of removing the -y flag from apt-get install.

The removal of the -y flag makes the installation process interactive, requiring user confirmation for each package installation. This change can disrupt automation and CI/CD workflows. If non-interactive behavior is desired, consider retaining the -y flag or using another method to handle prompts.

Also applies to: 70-70, 77-77, 81-81, 85-85, 87-87

images/ubuntu/scripts/build/install-dotnetcore-sdk.sh (1)

51-51: Consider the impact of removing the -y flag from apt-get install.

The removal of the -y flag makes the installation process interactive, requiring user confirmation. This change can disrupt automation and CI/CD workflows. If non-interactive behavior is desired, consider retaining the -y flag or using another method to handle prompts.

images/windows/scripts/build/Install-Chrome.ps1 (1)

9-9: Update of -ExpectedSignature parameter is appropriate.

The change to the -ExpectedSignature parameter ensures that the script verifies the integrity of the new Chrome installer. It is crucial to verify that this signature matches the latest installer version.

Consider verifying the signature update process to ensure it aligns with the latest installer version.

images/windows/scripts/build/Install-PostgreSQL.ps1 (2)

15-20: Validate the semantic version format check.

The logic correctly checks if toolsetVersion is in a valid semantic version format. Ensure that this logic aligns with the expected input format from Get-ToolsetContent.


21-32: Ensure robustness in fetching release tags.

The fallback mechanism for fetching release tags and parsing them for minor versions is maintained. This logic is crucial for backward compatibility.

images/ubuntu/toolsets/toolset-2404.json (7)

82-82: NDK default version update looks good.

The default version update from "26" to "27" is consistent with the available versions list.


84-84: Addition of NDK version "27" is appropriate.

The inclusion of version "27" aligns with the default version update.


137-137: Addition of "tree" to common packages is beneficial.

The "tree" package enhances the toolset's capabilities without introducing conflicts.


191-191: Docker CE CLI version update is appropriate.

The update from "26.1.0" to "26.1.3" likely includes important fixes or improvements.


195-195: Docker CE version update is consistent.

The update from "26.1.0" to "26.1.3" aligns with the CLI version update.


206-206: Docker Compose plugin version update is a good practice.

Specifying "2.27.1" instead of "latest" enhances stability and predictability.


Line range hint 266-266:
.NET SDK version simplification is aligned with current standards.

Removing older versions focuses on the latest "8.0" SDK, streamlining the toolset.

images/macos/toolsets/toolset-14.json (4)

3-3: Xcode default version update is appropriate.

Updating to "15.4" reflects a shift to a newer version with potential enhancements.


6-6: Addition of Xcode beta version for x64 is beneficial.

Including "16.0.0-Beta.4+16A5211f" supports testing of new features.


17-17: Addition of Xcode beta version for arm64 ensures consistency.

Including "16.0.0-Beta.4+16A5211f" across architectures supports comprehensive testing.


95-96: Expansion of supported versions to include "14" is beneficial.

Adding version "14" enhances compatibility and flexibility.

images/macos/toolsets/toolset-13.json (2)

3-3: Xcode default version update to "15.2" is appropriate.

Updating to "15.2" reflects a shift to a newer version with potential enhancements.


93-94: Expansion of supported versions to include "14" is beneficial.

Adding version "14" enhances compatibility and flexibility.

images/ubuntu/scripts/docs-gen/SoftwareReport.Tools.psm1 (1)

61-61: Verify the impact of removing Get-DockerComposeV1Version.

The removal of this function suggests a shift to Docker Compose v2. Ensure that no other scripts or tools depend on Docker Compose v1.

Verification successful

No references to Get-DockerComposeV1Version found.

The function Get-DockerComposeV1Version has been successfully removed without leaving any dependencies in the codebase, confirming the transition to Docker Compose v2. No further action is required.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining references to `Get-DockerComposeV1Version` in the codebase.

# Test: Search for any usage of `Get-DockerComposeV1Version`. Expect: No occurrences found.
rg --type powershell 'Get-DockerComposeV1Version'

Length of output: 84


Script:

#!/bin/bash
# Description: Search for any references to `Get-DockerComposeV1Version` across all files in the codebase.

# Test: Search for any usage of `Get-DockerComposeV1Version`. Expect: No occurrences found.
rg 'Get-DockerComposeV1Version'

Length of output: 31

images/ubuntu/toolsets/toolset-2204.json (5)

249-252: Verify compatibility with Compose plugin version "2.27.1".

Ensure that all Docker Compose scripts and configurations are compatible with plugin version "2.27.1".


92-94: Verify compatibility with the updated NDK version "27".

Ensure that all Android build scripts and dependencies are compatible with NDK version "27".


57-58: Verify compatibility with the new Ruby version "3.2.*".

Ensure that all scripts and dependencies are compatible with this new Ruby version.


217-217: Verify compatibility with the new Alpine Linux version "3.19".

Ensure that all Docker images and dependencies are compatible with Alpine Linux version "3.19".


237-241: Verify compatibility with Docker version "26.1.3".

Ensure that all Docker-related scripts and configurations are compatible with Docker version "26.1.3".

images/ubuntu/templates/ubuntu-minimal.pkr.hcl (2)

173-176: Verify the correctness of the helper script paths.

Ensure that the path ${path.root}/../scripts/helpers exists and contains the necessary helper scripts.

Verification successful

Helper script path is correct.

The directory images/ubuntu/scripts/helpers exists, confirming that the path specified in the Packer file is valid and correctly set up to include the necessary helper scripts.

  • Path verified: images/ubuntu/scripts/helpers
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence of the helper scripts path.

# Test: Check if the helper scripts directory exists. Expect: Directory exists.
if [ -d "${path.root}/../scripts/helpers" ]; then
  echo "Helper scripts directory exists."
else
  echo "Helper scripts directory does not exist."
fi

Length of output: 97


Script:

#!/bin/bash
# Search for the helpers directory within the scripts directory to verify its existence.
fd helpers --type d --glob --search-path scripts

Length of output: 145


Script:

#!/bin/bash
# Perform a broad search for any directory named 'helpers' within the entire repository.
fd helpers --type d

Length of output: 123


186-186: Verify the usage of the HELPER_SCRIPTS environment variable.

Ensure that the HELPER_SCRIPTS environment variable is correctly used in all relevant scripts.

Verification successful

The HELPER_SCRIPTS environment variable is used correctly in scripts.

The variable is extensively used across multiple shell scripts for sourcing and configuration, indicating proper implementation. No issues found with its usage.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of the `HELPER_SCRIPTS` environment variable.

# Test: Search for the usage of `HELPER_SCRIPTS`. Expect: Correct usage in scripts.
rg --type shell 'HELPER_SCRIPTS'

Length of output: 62


Script:

#!/bin/bash
# Search for the usage of the `HELPER_SCRIPTS` environment variable across all files, focusing on shell scripts.

# Find all shell script files and search for the usage of `HELPER_SCRIPTS`.
fd --extension sh --exec rg 'HELPER_SCRIPTS' {}

Length of output: 4089

images/ubuntu/toolsets/toolset-2004.json (5)

95-97: Update NDK default and supported versions.

The NDK default version has been updated to "27", and "27" has been added to the list of supported versions. This change aligns with the latest NDK releases, ensuring compatibility with newer Android development environments.


218-218: Add Alpine 3.19 to Docker images.

The addition of "alpine:3.19" to the Docker images list ensures that the latest Alpine version is available for use, which can provide improved security and performance.


238-242: Update Docker CE and CLI versions.

The Docker CE and CLI versions have been updated to "26.1.3". This update likely includes bug fixes and new features, enhancing the Docker environment's stability and capabilities.


253-253: Update Docker Compose plugin version.

The Docker Compose plugin version has been updated to "2.27.1", which may include important updates and improvements for managing multi-container Docker applications.


383-386: Add ocCli version 4.15.19.

The addition of ocCli with version "4.15.19" introduces support for the OpenShift CLI, which can be useful for managing OpenShift clusters directly from the command line.

images/macos/templates/macOS-13.arm64.anka.pkr.hcl (1)

100-100: Evaluate the shift to password-based SSH authentication.

The change from ssh_private_key_file to ssh_password indicates a switch to password-based SSH authentication. This could impact security, as key-based authentication is generally more secure than password-based authentication. Consider evaluating the security implications of this change.

images/macos/templates/macOS-14.arm64.anka.pkr.hcl (1)

100-100: Evaluate the shift to password-based SSH authentication.

The change from ssh_private_key_file to ssh_password indicates a switch to password-based SSH authentication. This could impact security, as key-based authentication is generally more secure than password-based authentication. Consider evaluating the security implications of this change.

images/macos/templates/macOS-14.anka.pkr.hcl (1)

99-99: Review the security implications of using SSH passwords.

The change from ssh_private_key_file to ssh_password reduces security by relying on a password instead of a private key. Ensure this change is necessary and that the password is managed securely.

images/macos/templates/macOS-13.anka.pkr.hcl (1)

99-99: Review the security implications of using SSH passwords.

The change from ssh_private_key_file to ssh_password reduces security by relying on a password instead of a private key. Ensure this change is necessary and that the password is managed securely.

images/windows/scripts/build/Install-AndroidSDK.ps1 (1)

122-123: LGTM! Adding the Android Emulator installation is a valuable enhancement.

The inclusion of the Android Emulator installation improves the script's functionality by supporting development and testing in an emulator environment.

images/windows/scripts/docs-gen/SoftwareReport.Tools.psm1 (1)

Line range hint 1-1: LGTM! Transition to updated Docker Compose command is appropriate.

The removal of Get-DockerComposeVersion and reliance on Get-DockerComposeVersionV2 aligns with modern Docker practices.

images/macos/templates/macOS-12.anka.pkr.hcl (1)

99-99: Consider the security implications of using password-based SSH authentication.

Switching from ssh_private_key_file to ssh_password may introduce security vulnerabilities. Key-based authentication is generally more secure than password-based authentication.

Ensure that the password used is strong and that additional security measures, such as network restrictions, are in place to mitigate potential risks.

images/ubuntu/Ubuntu2404-Readme.md (20)

3-5: Ensure consistency in announcement dates.

The date for the removal of Docker Compose v1 has been updated. Verify that this change is consistent across all relevant documentation.


9-11: Verify updated system information for accuracy.

The kernel version, image version, and systemd version have been updated. Ensure these reflect the current state of the image.


23-24: Confirm language and runtime version updates.

The updates to Julia and Node.js versions should be verified for accuracy and compatibility with existing projects.


31-34: Check package management tool updates.

Ensure that updates to Helm, Homebrew, Miniconda, and Npm are correct and reflect the latest stable releases.


58-59: Review project management tool updates.

Verify that the updates to Gradle and Lerna versions are accurate and compatible with current usage.


63-97: Verify tool version updates for accuracy.

Ensure that the updates to Ansible, AzCopy, Bazel, Bazelisk, Bicep, Buildah, CMake, CodeQL, Docker Compose, Docker-Buildx, Docker Client, Docker Server, Fastlane, Git, Git LFS, Git-ftp, Haveged, jq, Kind, Kubectl, Kustomize, MediaInfo, Mercurial, Minikube, n, Newman, OpenSSL, Parcel, Podman, Pulumi, Skopeo, Sphinx, yamllint, and yq are correct and reflect the latest stable releases.

Tools
LanguageTool

[uncategorized] ~95-~95: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...Pulumi 3.127.0 - Skopeo 1.13.3 - Sphinx Open Source Search Server 2.2.11 - yamllint 1.35.1 ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


101-106: Verify CLI tool updates for accuracy.

Ensure that the updates to AWS CLI, AWS CLI Session Manager Plugin, AWS SAM CLI, Azure CLI, and GitHub CLI are correct and reflect the latest stable releases.


111-114: Review Java version updates.

Verify that the updates to JDK 8, JDK 11, JDK 17, and JDK 21 are accurate and compatible with existing projects.


125-128: Verify Haskell tool updates for accuracy.

Ensure that the updates to Cabal, GHC, GHCup, and Stack reflect the latest stable releases.


131-133: Review Rust tool updates.

Verify that the updates to Cargo, Rust, and Rustdoc are correct and reflect the latest stable releases.


140-143: Verify browser and driver updates for accuracy.

Ensure that the updates to Google Chrome, ChromeDriver, Chromium, and Selenium server are correct and reflect the latest stable releases.


154-155: Verify .NET tool updates for accuracy.

Ensure that the updates to .NET Core SDK and nbgv are correct and reflect the latest stable releases.


169-169: Review MySQL version update.

Verify that the MySQL version update is accurate and compatible with existing databases.


181-182: Confirm Go version updates.

Ensure that the updates to Go versions are accurate and compatible with existing projects.


186-187: Verify Node.js cached tool updates.

Ensure that the updates to Node.js versions are correct and reflect the latest stable releases.


193-193: Review Python version update.

Verify that the Python version update is accurate and compatible with existing projects.


204-205: Verify PowerShell module updates for accuracy.

Ensure that the updates to Microsoft.Graph and Pester are correct and reflect the latest stable releases.


215-223: Review Android SDK and NDK updates.

Verify that the updates to Android SDK Build-tools, Platforms, Support Repository, Google Play services, Google Repository, and NDK are accurate and compatible with existing projects.


229-232: Verify Android environment variable updates.

Ensure that the updates to Android NDK environment variables are correct and reflect the latest stable releases.


236-307: Review installed apt package updates for accuracy.

Verify that the updates to installed apt packages are correct and reflect the latest stable releases.

images/windows/toolsets/toolset-2022.json (6)

9-10: Addition of Ruby version 3.2 is appropriate.

The inclusion of Ruby version "3.2" ensures compatibility with the latest Ruby features and updates.


122-122: Update to az version 12.1.0 looks good.

Ensure that this version is compatible with other components and scripts that depend on it.


149-151: NDK version update to 27 is appropriate.

This change ensures that the latest features and improvements in the NDK are available.


282-283: Docker and Compose version updates are reasonable.

It's important to test these new versions with existing workflows to ensure compatibility.


370-370: LLVM version update to 18 is suitable.

This aligns with the latest developments in the LLVM project.


376-376: PostgreSQL version update to 14.12.1 is appropriate.

This update ensures the inclusion of recent security patches and bug fixes.

images/ubuntu/templates/ubuntu-24.04.pkr.hcl (2)

186-189: Addition of file provisioner block is well-structured.

This change consolidates the script provisioning process, enhancing maintainability.


197-197: Environment variable update enhances configurability.

Including HELPER_SCRIPTS in the environment variables allows scripts to reference helper script locations effectively.

images/ubuntu/scripts/docs-gen/Generate-SoftwareReport.ps1 (1)

103-105: Conditional logic for apt-fast is appropriate.

This ensures apt-fast is only reported for Ubuntu versions that support it.

images/ubuntu/templates/ubuntu-22.04.pkr.hcl (3)

186-189: Good addition of the file provisioner block.

The new file provisioner block ensures that helper scripts are copied to the specified destination, which is beneficial for script management.


197-197: Environment variable HELPER_SCRIPTS added successfully.

This addition allows scripts to dynamically access the helper scripts directory, enhancing flexibility.


343-343: Verify the removal of Docker Compose installation script.

Ensure that Docker Compose is not required elsewhere in the build process or is installed by other means.

Verification successful

Verification successful: Docker Compose is not required elsewhere in the build process.

The removal of the Docker Compose installation script does not impact the current setup, as there are no references to Docker Compose in the relevant files.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that Docker Compose is not required elsewhere in the build process.

# Test: Search for Docker Compose usage in the repository. Expect: No direct dependency on Docker Compose.
rg --type shell --type hcl 'docker-compose'

Length of output: 73


Script:

#!/bin/bash
# Description: Verify that Docker Compose is not required elsewhere in the build process.

# Test: Search for Docker Compose usage in the repository. Expect: No direct dependency on Docker Compose.
rg 'docker-compose' --glob '*.sh' --glob '*.hcl'

Length of output: 48


Script:

#!/bin/bash
# Description: Verify that Docker Compose is not required elsewhere in the build process.

# Test: Search for Docker Compose usage in YAML files, which are commonly used for Docker Compose configurations.
rg 'docker-compose' --glob '*.yaml' --glob '*.yml'

Length of output: 50

images/ubuntu/templates/ubuntu-20.04.pkr.hcl (3)

186-189: Good addition of the file provisioner block.

The new file provisioner block ensures that helper scripts are copied to the specified destination, which is beneficial for script management.


197-197: Environment variable HELPER_SCRIPTS added successfully.

This addition allows scripts to dynamically access the helper scripts directory, enhancing flexibility.


347-347: Verify the removal of Docker Compose installation script.

Ensure that Docker Compose is not required elsewhere in the build process or is installed by other means.

Verification successful

Removal of Docker Compose installation script is safe for Ubuntu builds.

The search confirms that Docker Compose is only referenced in Windows-specific scripts, and there are no dependencies on Docker Compose within the Ubuntu build process. Therefore, the removal from the Ubuntu script does not affect the build process on Ubuntu.

  • Windows-specific references found in images/windows/scripts/build/Install-DockerCompose.ps1
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that Docker Compose is not required elsewhere in the build process.

# Test: Search for Docker Compose usage in the repository. Expect: No direct dependency on Docker Compose.
rg --type shell --type hcl 'docker-compose'

Length of output: 73


Script:

#!/bin/bash
# Description: Verify that Docker Compose is not required elsewhere in the build process.

# Test: Search for Docker Compose usage in the repository. Expect: No direct dependency on Docker Compose.
rg --type sh --type hcl 'docker-compose'

Length of output: 68


Script:

#!/bin/bash
# Description: Verify that Docker Compose is not required elsewhere in the build process.

# Test: Search for Docker Compose usage in the repository. Expect: No direct dependency on Docker Compose.
rg 'docker-compose'

Length of output: 350

images/windows/templates/windows-2019.pkr.hcl (1)

289-289: Addition of Install-TortoiseSvn.ps1 script looks good.

The script enhances the build process by including TortoiseSVN installation. Verify that this addition aligns with the project's requirements.

Verification successful

TortoiseSVN inclusion is justified.

The Configure-User.ps1 script references TortoiseSVN registry paths, indicating its use in the project. This supports the addition of the Install-TortoiseSvn.ps1 script.

  • Configure-User.ps1 references TortoiseSVN configurations.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the necessity of TortoiseSVN in the project.

# Test: Search for TortoiseSVN usage or references in the repository. Expect: Justification for its inclusion.
rg --type powershell 'TortoiseSVN'

Length of output: 69


Script:

#!/bin/bash
# Description: Search for references to TortoiseSVN in the repository.

# Test: Search for TortoiseSVN usage or references in the repository. Expect: Justification for its inclusion.
rg 'TortoiseSVN' .

Length of output: 382

images/windows/toolsets/toolset-2019.json (8)

9-10: Update Ruby version list.

The addition of Ruby version "3.2" is consistent with maintaining up-to-date language support.


87-87: Add version constraint for SqlServer.

Adding a version constraint for SqlServer ensures compatibility and clarity in the configuration.


123-123: Update Azure CLI version.

The update to Azure CLI version "12.1.0" reflects a move to leverage new features or improvements.


159-161: Update default and supported NDK versions.

Updating the default NDK version to "27" and adding it to the supported versions list ensures the latest tools are available.


372-373: Update Docker and Compose versions.

The updates to Docker "26.1.3" and Compose "2.27.1" reflect a move towards more stable or feature-rich versions.


427-427: Enhance gitversion.portable configuration.

Adding version arguments for gitversion.portable improves configuration specificity.


471-471: Update LLVM version.

The update to LLVM version "18" ensures the use of the latest compiler features and improvements.


474-474: Update PostgreSQL version.

The update to PostgreSQL version "14.12.1" reflects a focus on maintaining up-to-date dependencies for improved security and functionality.

images/macos/macos-13-Readme.md (15)

6-8: Confirm macOS and Image Version Updates.

The macOS version is updated to 13.6.7, and the image version is updated to 20240728.2. These updates are consistent with the AI-generated summary.


13-13: Verify .NET Core SDK Version Update.

The .NET Core SDK version 7.0.410 is consistent with the AI-generated summary. Ensure that this version is compatible with your projects.


18-20: GCC Version Updates.

GCC versions have been updated, and GCC 14 has been added. This aligns with the AI-generated summary, reflecting the latest Homebrew versions.


27-30: Node.js, PHP, and Python Version Updates.

Node.js is updated to 20.15.1, PHP to 8.3.9, and Python to 3.12.4. These updates are consistent with the AI-generated summary.


34-34: Bundler Version Update.

Bundler has been updated to 2.5.16, consistent with the AI-generated summary.


49-50: Apache Maven and Gradle Version Updates.

Apache Maven is updated to 3.9.8, and Gradle to 8.9. These updates are consistent with the AI-generated summary.


55-60: Utility Version Updates.

azcopy and Git have been updated to 10.25.1 and 2.45.2, respectively. These updates are consistent with the AI-generated summary.


74-74: AWS CLI Version Update.

AWS CLI is updated to 2.17.18, consistent with the AI-generated summary.


92-94: Browser Version Updates.

Safari and Google Chrome have been updated to 17.5 and 127.0.6533.73, respectively. These updates are consistent with the AI-generated summary.


101-101: Selenium Server Version Update.

Selenium server is updated to 4.23.0, consistent with the AI-generated summary.


113-116: Java Version Updates.

Java versions have been updated, consistent with the AI-generated summary. Ensure compatibility with your projects.


136-136: Python Cached Tool Update.

Python 3.12.4 is listed in cached tools, consistent with the AI-generated summary.


140-141: Node.js Cached Tool Update.

Node.js 20.16.0 is listed in cached tools, consistent with the AI-generated summary.


145-146: Go Cached Tool Update.

Go 1.21.12 and 1.22.5 are listed in cached tools, consistent with the AI-generated summary.


149-151: Rust Tools Update.

Rust and related tools are updated to version 1.80.0, consistent with the AI-generated summary.

images/macos/macos-13-arm64-Readme.md (11)

6-8: Confirm macOS and Image Version Updates.

The macOS version is updated to 13.6.8, and the image version is updated to 20240804.1. These updates are consistent with the AI-generated summary.


13-13: Verify .NET Core SDK Version Update.

The .NET Core SDK version 7.0.410 is consistent with the AI-generated summary. Ensure that this version is compatible with your projects.


18-20: GCC Version Updates.

GCC versions have been updated, and GCC 14 has been added. This aligns with the AI-generated summary, reflecting the latest Homebrew versions.


27-29: Node.js and Python Version Updates.

Node.js is updated to 20.16.0 and Python to 3.12.4. These updates are consistent with the AI-generated summary.


83-83: Xcodes Version Update.

Xcodes has been updated to 1.5.0, consistent with the AI-generated summary.


88-90: Safari and Chrome Version Updates.

Safari is updated to 17.6 and Google Chrome to 127.0.6533.89. These updates are consistent with the AI-generated summary.


105-107: Java Version Updates.

Java versions have been updated, consistent with the AI-generated summary. Ensure compatibility with your projects.


115-115: Python Cached Tool Update.

Python 3.12.4 is listed in cached tools, consistent with the AI-generated summary.


119-120: Node.js Cached Tool Update.

Node.js 20.16.0 is listed in cached tools, consistent with the AI-generated summary.


124-125: Go Cached Tool Update.

Go 1.21.12 and 1.22.5 are listed in cached tools, consistent with the AI-generated summary.


128-130: Rust Tools Update.

Rust and related tools are updated to version 1.80.0, consistent with the AI-generated summary.

images/macos/macos-14-Readme.md (11)

6-8: Confirm macOS and Image Version Updates.

The macOS version is updated to 14.6, and the image version is updated to 20240804.1. These updates are consistent with the AI-generated summary.


13-13: Verify .NET Core SDK Version Update.

The .NET Core SDK version 7.0.410 is consistent with the AI-generated summary. Ensure that this version is compatible with your projects.


18-20: GCC Version Updates.

GCC versions have been updated, and GCC 14 has been added. This aligns with the AI-generated summary, reflecting the latest Homebrew versions.


27-30: Node.js, PHP, and Python Version Updates.

Node.js is updated to 20.16.0, PHP to 8.3.9, and Python to 3.12.4. These updates are consistent with the AI-generated summary.


83-85: Xcodes Version Update.

Xcodes has been updated to 1.5.0, consistent with the AI-generated summary.


91-93: Safari and Chrome Version Updates.

Safari is updated to 17.6 and Google Chrome to 127.0.6533.89. These updates are consistent with the AI-generated summary.


112-115: Java Version Updates.

Java versions have been updated, consistent with the AI-generated summary. Ensure compatibility with your projects.


127-127: Python Cached Tool Update.

Python 3.12.4 is listed in cached tools, consistent with the AI-generated summary.


130-131: Node.js Cached Tool Update.

Node.js 20.16.0 is listed in cached tools, consistent with the AI-generated summary.


135-136: Go Cached Tool Update.

Go 1.21.12 and 1.22.5 are listed in cached tools, consistent with the AI-generated summary.


139-141: Rust Tools Update.

Rust and related tools are updated to version 1.80.0, consistent with the AI-generated summary.

images/macos/macos-14-arm64-Readme.md (6)

6-8: Update OS and Image Version.

The updates to macOS 14.5 and image version 20240728.1 ensure the environment is using the latest versions.


13-29: Update Language and Runtime Versions.

The updates to .NET Core SDK, GCC, Python, Node.js, and other languages enhance compatibility and performance.


33-42: Update Package Management Tools.

The updates to Bundler, Homebrew, and others ensure access to the latest features and security improvements.


52-67: Update Utilities.

The updates to Curl, Git, and other utilities enhance functionality and security.


71-83: Update Tools.

The updates to AWS CLI, Azure CLI, and other tools ensure they are current with the latest features and bug fixes.


Line range hint 145-216: Update Xcode and SDKs.

The addition of Xcode 16.0 beta and updates to SDKs for macOS, iOS, and other platforms provide the latest development environments and tools.

images/macos/macos-12-Readme.md (4)

7-9: Update OS and Image Version.

The updates to macOS 12.7.5 and image version 20240721.1 ensure the environment is using the latest versions.


14-38: Update Language and Runtime Versions.

The updates to .NET Core SDK, GCC, Python, Node.js, and other languages enhance compatibility and performance.


42-55: Update Package Management Tools.

The updates to Composer, Homebrew, and others ensure access to the latest features and security improvements.


Line range hint 72-97: Update Utilities.

The updates to Curl, Git, ImageMagick, and other utilities enhance functionality and security.

images/windows/Windows2019-Readme.md (6)

7-8: Update OS and Image Version.

The updates to OS Build 6054 and image version 20240730.1.0 ensure the environment is using the latest versions.


17-23: Update Language and Runtime Versions.

The updates to Go, Node.js, PHP, and other languages enhance compatibility and performance.


28-37: Update Package Management Tools.

The updates to Chocolatey, Composer, and others ensure access to the latest features and security improvements.


53-87: Update Tools.

The updates to Docker, Git, and other tools ensure they are current with the latest features and bug fixes.


531-541: Update Android SDK and NDK Versions.

The updates to Android SDK Build-tools and NDK versions ensure compatibility with the latest development tools.


504-504: Update PowerShell Version.

The update to PowerShell 7.4.4 ensures the latest features and security patches are included.

images/windows/Windows2022-Readme.md (12)

3-4: Announcements section looks good.

The links to the issues regarding the removal of Android NDK versions and Docker Compose v1 are correct and relevant.


7-8: Windows Server 2022 version updates are correct.

The OS and image version numbers are correctly updated and formatted.


17-21: Language and Runtime version updates are correct.

The updates to Go, Julia, Kotlin, LLVM, and Node are correctly updated and formatted.


28-32: Package Management version updates are correct.

The updates to Chocolatey, Composer, Helm, and NPM are correctly updated and formatted.


48-48: Project Management version update is correct.

The update to Gradle is correctly updated and formatted.


53-67: Tools version updates are correct.

The updates to 7zip, azcopy, Docker, Git, and other tools are correctly updated and formatted.


104-106: Rust Tools version updates are correct.

The updates to Cargo, Rust, and Rustdoc are correctly updated and formatted.


118-121: Browsers and Drivers version updates are correct.

The updates to Google Chrome, Chrome Driver, Microsoft Edge, and Edge Driver are correctly updated and formatted.


209-209: Database version update is correct.

The update to MongoDB is correctly updated and formatted.


212-215: Database tools version updates are correct.

The updates to Azure CosmosDb Emulator, DacFx, MySQL, and SQL OLEDB Driver are correctly updated and formatted.


492-497: .NET Core Tools version updates are correct.

The updates to .NET Core SDK and related components are correctly updated and formatted.


500-500: PowerShell Tools version update is correct.

The update to PowerShell is correctly updated and formatted.

Comment on lines +26 to +27
apt-get update
apt-get install kubectl
Copy link

Choose a reason for hiding this comment

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

Consider re-adding the -y flag for non-interactive execution.

Removing the -y flag from apt-get update and apt-get install may require user interaction, potentially disrupting automated scripts.

- apt-get update
- apt-get install kubectl
+ apt-get update -y
+ apt-get install -y kubectl
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
apt-get update
apt-get install kubectl
apt-get update -y
apt-get install -y kubectl

@@ -20,7 +25,7 @@ if [[ -n "$gems_to_install" ]]; then
fi

# Install Ruby requirements
apt-get install -y libz-dev openssl libssl-dev
apt-get install libz-dev openssl libssl-dev
Copy link

Choose a reason for hiding this comment

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

Consider re-adding the -y flag for non-interactive execution.

Removing the -y flag from the apt-get install command may require user interaction, potentially disrupting automated scripts.

- apt-get install libz-dev openssl libssl-dev
+ apt-get install -y libz-dev openssl libssl-dev
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
apt-get install libz-dev openssl libssl-dev
apt-get install -y libz-dev openssl libssl-dev

@@ -14,7 +14,7 @@ if is_ubuntu22; then
echo "deb http://archive.ubuntu.com/ubuntu/ focal-security main" | tee "${focal_list}"
apt-get update --quiet

apt-get install --no-install-recommends --yes libssl1.1
apt-get install --no-install-recommends libssl1.1
Copy link

Choose a reason for hiding this comment

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

Consider reintroducing the --yes flag for non-interactive installations.

The removal of the --yes flag from the apt-get install command may require user confirmation during installation, which could disrupt automated deployments. If the script is intended for non-interactive use, consider adding the flag back to ensure smooth execution in automated environments.

-    apt-get install --no-install-recommends libssl1.1
+    apt-get install --no-install-recommends --yes libssl1.1
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
apt-get install --no-install-recommends libssl1.1
apt-get install --no-install-recommends --yes libssl1.1

@@ -8,7 +8,7 @@
source $HELPER_SCRIPTS/install.sh

# Install required dependencies
apt-get install -y chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev
apt-get install chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev
Copy link

Choose a reason for hiding this comment

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

Consider reintroducing the -y flag for non-interactive installations.

The removal of the -y flag from the apt-get install command may require user confirmation during installation, which could disrupt automated deployments. If the script is intended for non-interactive use, consider adding the flag back to ensure smooth execution in automated environments.

-apt-get install chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev
+apt-get install -y chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
apt-get install chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev
apt-get install -y chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev

@@ -29,7 +29,7 @@ fi

# Install podman, buildah, skopeo container's tools
apt-get update
apt-get -y install ${install_packages[@]}
apt-get install ${install_packages[@]}
Copy link

Choose a reason for hiding this comment

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

Quote array expansions to avoid re-splitting elements.

To prevent issues with array elements that might contain spaces, quote the array expansion in the apt-get install command.

- apt-get install ${install_packages[@]}
+ apt-get install "${install_packages[@]}"
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
apt-get install ${install_packages[@]}
apt-get install "${install_packages[@]}"
Tools
Shellcheck

[error] 32-32: Double quote array expansions to avoid re-splitting elements.

(SC2068)

@@ -359,10 +366,11 @@ mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app"
#### Environment variables
| Name | Value |
| ----------------- | ----------------------------------------------------------------------------------------- |
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v19/19.3.1-54941/ParallelsDesktop-19.3.1-54941.dmg |
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v19/19.4.1-54985/ParallelsDesktop-19.4.1-54985.dmg |
Copy link

Choose a reason for hiding this comment

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

Fix bare URL in Environment variables section.

The bare URL should be formatted with markdown to avoid linting issues.

- | PARALLELS_DMG_URL | https://download.parallels.com/desktop/v19/19.4.1-54985/ParallelsDesktop-19.4.1-54985.dmg |
+ | PARALLELS_DMG_URL | [Parallels Desktop Download](https://download.parallels.com/desktop/v19/19.4.1-54985/ParallelsDesktop-19.4.1-54985.dmg) |
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v19/19.4.1-54985/ParallelsDesktop-19.4.1-54985.dmg |
| PARALLELS_DMG_URL | [Parallels Desktop Download](https://download.parallels.com/desktop/v19/19.4.1-54985/ParallelsDesktop-19.4.1-54985.dmg) |
Tools
Markdownlint

369-369: null
Bare URL used

(MD034, no-bare-urls)

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 7665ed4 and 551ccc0.

Files selected for processing (1)
  • images/macos/macos-13-Readme.md (5 hunks)
Files skipped from review as they are similar to previous changes (1)
  • images/macos/macos-13-Readme.md

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 551ccc0 and 3a24d66.

Files selected for processing (1)
  • images/macos/macos-14-arm64-Readme.md (4 hunks)
Additional comments not posted (6)
images/macos/macos-14-arm64-Readme.md (6)

6-7: OS and Kernel Version Updates Look Good.

The updates to the OS and Kernel versions are consistent with the latest available versions.


8-8: Image Version Update Looks Good.

The image version update reflects the latest build date and version.


13-13: .NET Core SDK Updates Look Good.

The updates to the .NET Core SDK versions are consistent with the latest releases.


18-20: GCC Version Updates Look Good.

The updates to the GCC versions reflect the latest available versions from Homebrew.


27-29: Node.js and Python3 Updates Look Good.

The updates to Node.js and Python3 versions are consistent with the latest stable releases.


Line range hint 147-163: Xcode and SDK Updates Look Good.

The updates to Xcode and the installed SDKs are consistent with the latest development environments.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 3a24d66 and 8aec741.

Files selected for processing (1)
  • images/ubuntu/Ubuntu2204-Readme.md (12 hunks)
Additional context used
LanguageTool
images/ubuntu/Ubuntu2204-Readme.md

[uncategorized] ~107-~107: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...127.0 - R 4.4.1 - Skopeo 1.4.1 - Sphinx Open Source Search Server 2.2.11 - SVN 1.14.1 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

Markdownlint
images/ubuntu/Ubuntu2204-Readme.md

140-140: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Additional comments not posted (27)
images/ubuntu/Ubuntu2204-Readme.md (27)

3-3: LGTM! Announcement is clear.

The announcement about Android NDK versions is clear and informative.


5-5: LGTM! Announcement is clear.

The announcement about Docker Compose v1 removal is clear and informative.


9-10: LGTM! Version updates are consistent.

The kernel and image version updates are consistent with the provided summary.


23-31: LGTM! Language and runtime updates are consistent.

The updates to Julia, Kotlin, Node.js, and Swift versions are consistent with the provided summary.


35-38: LGTM! Package management updates are consistent.

The updates to Helm, Homebrew, and Npm versions are consistent with the provided summary.


42-44: LGTM! Package updates are consistent.

The updates to Pipx and Vcpkg versions are consistent with the provided summary.


63-66: LGTM! Project management tool updates are consistent.

The updates to Gradle and Sbt versions are consistent with the provided summary.


69-111: LGTM! Tool updates are consistent.

The updates to Ansible, Docker Compose, Git, Terraform, and yq versions are consistent with the provided summary.

Tools
LanguageTool

[uncategorized] ~107-~107: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...127.0 - R 4.4.1 - Skopeo 1.4.1 - Sphinx Open Source Search Server 2.2.11 - SVN 1.14.1 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


115-126: LGTM! CLI tool updates are consistent.

The updates to AWS CLI, Azure CLI, and GitHub CLI versions are consistent with the provided summary.


131-134: LGTM! Java environment updates are consistent.

The updates to Java environment variables are consistent with the provided summary.


138-139: LGTM! PHP tool updates are consistent.

The updates to Composer are consistent with the provided summary.


145-148: LGTM! Haskell tool updates are consistent.

The updates to Cabal and GHCup are consistent with the provided summary.


151-159: LGTM! Rust tool updates are consistent.

The updates to Cargo and Rustfmt are consistent with the provided summary.


165-171: LGTM! Browser and driver updates are consistent.

The updates to Google Chrome and Microsoft Edge are consistent with the provided summary.


183-184: LGTM! .NET tool updates are consistent.

The updates to .NET Core SDK are consistent with the provided summary.


198-198: LGTM! MySQL update is consistent.

The update to MySQL version is consistent with the provided summary.


208-208: LGTM! SqlPackage update is consistent.

The update to SqlPackage version is consistent with the provided summary.


214-215: LGTM! Go version updates are consistent.

The updates to Go versions are consistent with the provided summary.


219-220: LGTM! Node.js version updates are consistent.

The updates to Node.js versions are consistent with the provided summary.


228-228: LGTM! Python update is consistent.

The update to Python version is consistent with the provided summary.


237-238: LGTM! Ruby version updates are consistent.

The updates to Ruby versions are consistent with the provided summary.


241-241: LGTM! PowerShell update is consistent.

The update to PowerShell version is consistent with the provided summary.


245-247: LGTM! PowerShell module updates are consistent.

The updates to MarkdownPS and Microsoft.Graph versions are consistent with the provided summary.


257-266: LGTM! Android package updates are consistent.

The updates to Android NDK and other packages are consistent with the provided summary.


272-275: LGTM! Android NDK environment updates are consistent.

The updates to Android NDK environment variables are consistent with the provided summary.


282-295: LGTM! Cached Docker image updates are consistent.

The updates to alpine, debian, and node Docker images are consistent with the provided summary.


Line range hint 311-386: LGTM! Installed apt package updates are consistent.

The updates to dnsutils, imagemagick, openssh-client, and other packages are consistent with the provided summary.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 8aec741 and 7992e24.

Files selected for processing (3)
  • images/macos/scripts/build/install-nvm.sh (1 hunks)
  • images/macos/scripts/build/install-rust.sh (1 hunks)
  • images/macos/toolsets/toolset-12.json (2 hunks)
Files skipped from review as they are similar to previous changes (1)
  • images/macos/toolsets/toolset-12.json
Additional comments not posted (2)
images/macos/scripts/build/install-rust.sh (1)

22-22: Verify potential impact of removing the --locked flag.

The removal of the --locked flag from the cargo install command allows for the installation of the latest compatible versions of the specified components. This can lead to potential compatibility issues if the latest versions introduce breaking changes. Ensure that the installed components are compatible with the rest of the system.

images/macos/scripts/build/install-nvm.sh (1)

11-18: LGTM! Verify get_toolset_value function for correctness.

The changes improve flexibility by allowing local configuration and ensuring consistent version formatting. Ensure that the get_toolset_value function retrieves the correct values for .node.nvm_installer and .node.nvm_versions[].

Verification successful

Verification Complete: get_toolset_value Function is Correct

The get_toolset_value function is correctly implemented to retrieve values from the toolset.json file. The necessary fields .node.nvm_installer and .node.nvm_versions[] are present in the JSON file, ensuring the function works as expected.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the correctness of `get_toolset_value` function outputs.

# Test: Check if `get_toolset_value` retrieves expected values for NVM installer and versions.
echo "NVM Installer Version: $(get_toolset_value '.node.nvm_installer')"
echo "NVM Versions: $(get_toolset_value '.node.nvm_versions[]')"

Length of output: 350


Script:

#!/bin/bash
# Search for the definition of the get_toolset_value function in the codebase.
ast-grep --lang bash --pattern 'function get_toolset_value { $$$ }'

Length of output: 178


Script:

#!/bin/bash
# Use ripgrep to search for the definition of the get_toolset_value function in shell scripts.
rg 'get_toolset_value' --type sh --context 5

Length of output: 59808


Script:

#!/bin/bash
# Search for the toolset.json file and check if it contains the required fields.
rg '.node' --type json --context 5

Length of output: 16560

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 7992e24 and e48c794.

Files selected for processing (1)
  • images/macos/toolsets/toolset-14.json (3 hunks)
Files skipped from review as they are similar to previous changes (1)
  • images/macos/toolsets/toolset-14.json

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between e48c794 and 88cb1be.

Files selected for processing (3)
  • images/macos/toolsets/toolset-12.json (2 hunks)
  • images/macos/toolsets/toolset-13.json (3 hunks)
  • images/macos/toolsets/toolset-14.json (3 hunks)
Files skipped from review as they are similar to previous changes (3)
  • images/macos/toolsets/toolset-12.json
  • images/macos/toolsets/toolset-13.json
  • images/macos/toolsets/toolset-14.json

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (4)
images/macos/scripts/build/install-swiftlint.sh (1)

Line range hint 10-16:
Ensure Monterey-specific logic is future-proof.

The script now focuses on Monterey, removing the Big Sur condition. Ensure that future macOS versions are considered to avoid manual updates.

Consider using a version check function that can handle multiple macOS versions dynamically.

Tools
Shellcheck

[warning] 7-7: ShellCheck can't follow non-constant source. Use a directive to specify location.

(SC1090)

images/macos/scripts/docs-gen/SoftwareReport.Common.psm1 (3)

Line range hint 3-5:
Ensure consistent error handling.

The function Get-BashVersion directly executes a command without handling potential errors. Consider adding error handling to improve robustness.

function Get-BashVersion {
    try {
        $version = bash -c 'echo ${BASH_VERSION}'
        return $version
    } catch {
        Write-Error "Failed to retrieve Bash version."
    }
}

Line range hint 7-9:
Improve command execution consistency.

The function Get-DotnetVersionList uses Run-Command, which is a consistent approach for executing commands. Ensure all functions use this approach for consistency.

function Get-DotnetVersionList {
    $sdkRawList = Run-Command "dotnet --list-sdks"
    return $sdkRawList | ForEach-Object { Take-Part $_ -Part 0 }
}

References to Removed Functions Found

The functions Get-HelmVersion and Get-NewmanVersion are still referenced in other scripts. Ensure these references are updated or removed to avoid breaking functionality:

  • images/windows/scripts/docs-gen/Generate-SoftwareReport.ps1
  • images/ubuntu/scripts/docs-gen/Generate-SoftwareReport.ps1

Please review these references and make necessary adjustments.

Analysis chain

Line range hint 1-1:
Verify the removal of functions.

The functions Get-HelmVersion, Get-NewmanVersion, and Get-AliyunCLIVersion have been removed. Ensure these tools are no longer required in the context of this module.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify if the removed functions are no longer in use.

# Test: Search for references to the removed functions. Expect: No occurrences.
rg --type powershell $'(Get-HelmVersion|Get-NewmanVersion|Get-AliyunCLIVersion)'

Length of output: 116


Script:

#!/bin/bash
# Description: Verify if the removed functions are no longer in use.

# Test: Search for references to the removed functions in PowerShell files. Expect: No occurrences.
rg '(Get-HelmVersion|Get-NewmanVersion|Get-AliyunCLIVersion)' --glob '*.ps1' --glob '*.psm1'

Length of output: 908

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 88cb1be and 22143c7.

Files selected for processing (24)
  • images.CI/macos/anka/Anka.Helpers.psm1 (1 hunks)
  • images/macos/scripts/build/configure-machine.sh (5 hunks)
  • images/macos/scripts/build/configure-preimagedata.sh (1 hunks)
  • images/macos/scripts/build/install-aws-tools.sh (1 hunks)
  • images/macos/scripts/build/install-common-utils.sh (3 hunks)
  • images/macos/scripts/build/install-git.sh (1 hunks)
  • images/macos/scripts/build/install-node.sh (1 hunks)
  • images/macos/scripts/build/install-python.sh (2 hunks)
  • images/macos/scripts/build/install-rust.sh (1 hunks)
  • images/macos/scripts/build/install-swiftlint.sh (1 hunks)
  • images/macos/scripts/docs-gen/Generate-SoftwareReport.ps1 (9 hunks)
  • images/macos/scripts/docs-gen/SoftwareReport.Common.psm1 (3 hunks)
  • images/macos/scripts/docs-gen/SoftwareReport.Xcode.psm1 (2 hunks)
  • images/macos/scripts/helpers/Common.Helpers.psm1 (2 hunks)
  • images/macos/scripts/helpers/utils.sh (1 hunks)
  • images/macos/scripts/tests/Android.Tests.ps1 (1 hunks)
  • images/macos/scripts/tests/BasicTools.Tests.ps1 (5 hunks)
  • images/macos/scripts/tests/Common.Tests.ps1 (2 hunks)
  • images/macos/scripts/tests/Git.Tests.ps1 (1 hunks)
  • images/macos/scripts/tests/PHP.Tests.ps1 (2 hunks)
  • images/macos/scripts/tests/Rust.Tests.ps1 (1 hunks)
  • images/macos/scripts/tests/System.Tests.ps1 (1 hunks)
  • images/macos/scripts/tests/Xamarin.Tests.ps1 (1 hunks)
  • images/macos/toolsets/Readme.md (2 hunks)
Files skipped from review due to trivial changes (2)
  • images/macos/scripts/build/configure-preimagedata.sh
  • images/macos/scripts/helpers/utils.sh
Files skipped from review as they are similar to previous changes (3)
  • images/macos/scripts/build/configure-machine.sh
  • images/macos/scripts/build/install-rust.sh
  • images/macos/scripts/tests/Git.Tests.ps1
Additional comments not posted (26)
images/macos/scripts/build/install-aws-tools.sh (1)

13-15: Simplified installation process for AWS SAM CLI.

The removal of the OS-specific check simplifies the script and ensures the AWS SAM CLI is installed on all macOS versions, aligning with the goal of maintaining up-to-date tools.

images/macos/scripts/tests/PHP.Tests.ps1 (1)

Line range hint 6-17:
Enhanced test coverage by updating skip conditions.

The updated conditions for skipping tests now only exclude VenturaArm64 and SonomaArm64, allowing tests to run on more macOS versions. This change increases test coverage and flexibility.

images/macos/scripts/build/install-node.sh (1)

Line range hint 19-23:
Narrowed execution context for npm package installation.

The condition for installing global npm packages now applies only to Monterey, excluding Big Sur. Ensure this change aligns with the intended support strategy for different macOS versions.

Tools
Shellcheck

[error] 21-21: Double quote array expansions to avoid re-splitting elements.

(SC2068)

images/macos/scripts/tests/Rust.Tests.ps1 (1)

5-5: Confirm Rust test compatibility across all macOS versions.

By removing the skip condition, tests will now run on all macOS versions. Ensure that Rust and its dependencies are compatible with these versions to avoid test failures.

images/macos/scripts/build/install-git.sh (1)

14-20: Unconditional Git LFS installation is beneficial.

The script now installs Git LFS unconditionally, ensuring all users have access to large file support, which is a positive change.

images/macos/scripts/tests/System.Tests.ps1 (1)

39-39: Ensure consistent test coverage.

The test for "AutomationModeTool" now runs unconditionally. Verify that this change aligns with the testing strategy and does not introduce any unintended test failures across different macOS versions.

images/macos/scripts/build/install-python.sh (2)

11-11: Verify compatibility with removed is_BigSur condition.

The removal of the is_BigSur condition restricts Python 2 installation to Monterey systems. Ensure this change aligns with the supported macOS versions and does not exclude necessary environments.

Verification successful

No issues found with the removal of is_BigSur.

The search revealed no other references to is_BigSur in the codebase, suggesting that its removal does not impact other scripts. However, ensure that this change aligns with your project's macOS version support strategy.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the impact of removing the `is_BigSur` condition on Python 2 installation.

# Test: Search for references to `is_BigSur` in the codebase to understand its usage context.
rg --type shell $'is_BigSur'

Length of output: 57


Script:

#!/bin/bash
# Description: Verify the impact of removing the `is_BigSur` condition on Python 2 installation.

# Test: Search for references to `is_BigSur` in the codebase to understand its usage context.
rg --type sh $'is_BigSur'

Length of output: 24


36-36: Ensure close_finder_window is safe to run unconditionally.

The close_finder_window function now runs without condition checks. Verify that this does not cause issues in environments where the Finder window state is critical.

images/macos/scripts/tests/Android.Tests.ps1 (1)

60-60: Assess the impact of restricting tests to Monterey.

The condition now limits SDK tool tests to Monterey. Verify that this aligns with the intended support for macOS versions and does not exclude necessary environments.

Verification successful

Monterey-specific test conditions are intentional.

The use of $os.IsMonterey across multiple test scripts suggests a deliberate strategy to handle macOS Monterey-specific scenarios. Ensure this aligns with the intended support for macOS versions and does not inadvertently exclude necessary environments.

  • Files with Monterey-specific logic:
    • images/macos/scripts/tests/Xamarin.Tests.ps1
    • images/macos/scripts/tests/Android.Tests.ps1
    • images/macos/scripts/tests/Xcode.Tests.ps1
    • images/macos/scripts/tests/RubyGem.Tests.ps1
    • images/macos/scripts/docs-gen/Generate-SoftwareReport.ps1
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Assess the impact of restricting SDK tool tests to Monterey.

# Test: Search for references to `$os.IsMonterey` in the codebase to understand its usage context.
rg --type powershell $'IsMonterey'

Length of output: 68


Script:

#!/bin/bash
# Description: Assess the impact of restricting SDK tool tests to Monterey.

# Test: Search for references to `$os.IsMonterey` in PowerShell scripts to understand its usage context.
rg --glob '*.ps1' $'IsMonterey'

Length of output: 741

images/macos/scripts/tests/BasicTools.Tests.ps1 (6)

5-10: Run Azure CLI tests unconditionally.

The conditional skip for the Azure CLI test has been removed, which will enhance test coverage by ensuring the test runs on all supported macOS versions.


Line range hint 11-16:
Run Azure DevOps CLI tests unconditionally.

The conditional skip for the Azure DevOps CLI test has been removed, enhancing test coverage across all macOS versions.


138-143: Run Vagrant tests unconditionally.

The conditional skip for the Vagrant test has been removed, which will ensure the test runs on all supported macOS versions.


144-149: Run VirtualBox tests unconditionally.

The conditional skip for the VirtualBox test has been removed, ensuring broader test coverage.


Line range hint 150-155:
Run R tests unconditionally.

The conditional skip for the R test has been removed, which will enhance test coverage.


Line range hint 182-187:
Run ImageMagick tests unconditionally.

The conditional skip for the ImageMagick test has been removed, ensuring the test runs across all macOS versions.

images/macos/scripts/helpers/Common.Helpers.psm1 (1)

Line range hint 37-47:
Simplify OS version checks by removing Big Sur.

The removal of the IsBigSur property simplifies the OS version checks, focusing on more recent macOS versions.

images/macos/scripts/build/install-common-utils.sh (2)

45-60: Simplify AppleScript execution logic.

The retry logic for executing AppleScript has been streamlined, improving clarity and reducing complexity.


87-88: Install Azure DevOps extension unconditionally.

The removal of Big Sur-specific conditions for installing the Azure DevOps extension simplifies the installation process.

images/macos/scripts/tests/Common.Tests.ps1 (2)

126-126: Review VirtualBox test skip conditions.

The test for VirtualBox now skips only on macOS Ventura and Sonoma. Ensure that VirtualBox is indeed compatible with other macOS versions, including Big Sur.

Verification successful

VirtualBox test skip conditions verified

The test for VirtualBox is currently skipped only on macOS Ventura and Sonoma. There is no explicit condition for skipping on macOS Big Sur, suggesting that the test should run on Big Sur. Ensure that VirtualBox is indeed compatible with macOS Big Sur to avoid potential issues.

  • File: images/macos/scripts/tests/Common.Tests.ps1
  • Lines: 126
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify VirtualBox compatibility with macOS Big Sur.
# Test: Check if VirtualBox tests are executed for macOS Big Sur.
rg --type powershell -A 5 $'VirtualBox'

Length of output: 73


Script:

#!/bin/bash
# Find PowerShell files and search for the VirtualBox test conditions.
fd --extension ps1 --exec rg 'Describe "VirtualBox"' -A 5

Length of output: 241


46-46: Ensure comprehensive test coverage for AWS SAM CLI.

The removal of the skip condition for macOS Big Sur in the AWS SAM CLI test increases test coverage. Ensure that the CLI is compatible with all macOS versions being tested.

Verification successful

Ensure comprehensive test coverage for AWS SAM CLI.

The current test for AWS SAM CLI in Common.Tests.ps1 only verifies that the CLI is installed by checking the version command. There is no conditional logic that excludes any macOS versions, so the test should run on all versions. However, consider expanding the test to cover more functionality to ensure compatibility across different macOS versions.

  • File: images/macos/scripts/tests/Common.Tests.ps1
  • Current Test: Checks if sam --version returns a zero exit code.
  • Suggestion: Expand test cases to verify AWS SAM CLI functionality beyond installation.
Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify AWS SAM CLI compatibility across all macOS versions.
# Test: Check if AWS SAM CLI is installed and compatible with all macOS versions.
rg --type powershell -A 5 $'AWS SAM CLI'

Length of output: 76


Script:

#!/bin/bash
# Search for conditional logic related to macOS versions in the test script.
rg 'macOS' images/macos/scripts/tests/Common.Tests.ps1 -A 3 -B 3

# Search for test cases related to AWS SAM CLI in the test script.
rg 'AWS SAM CLI' images/macos/scripts/tests/Common.Tests.ps1 -A 5 -B 5

Length of output: 433

images/macos/toolsets/Readme.md (2)

9-10: Clarify the purpose of new properties in the Xcode configuration schema.

The install_runtimes and sha256 properties are well-documented, enhancing configurability and security. Ensure that these properties are consistently used across all relevant configurations.


27-28: Verify example JSON configuration for consistency.

The example JSON now includes the new properties. Ensure that all configurations using these properties are updated and validated for correctness.

Verification successful

JSON Configuration Consistency Verified

The install_runtimes and sha256 properties are consistently present across the JSON configurations, ensuring alignment with the updated example. No discrepancies were found.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify consistency of example JSON configurations with new properties.
# Test: Check for usage of `install_runtimes` and `sha256` in JSON configurations.
rg --type json -A 5 $'"install_runtimes"'

Length of output: 8134

images.CI/macos/anka/Anka.Helpers.psm1 (1)

142-142: Evaluate unconditional execution of Invoke-AnkaCommand.

The removal of the macOS version check simplifies the function. Ensure that this change does not affect compatibility with older macOS versions.

Verification successful

Unconditional execution of Invoke-AnkaCommand is generic and lacks macOS-specific handling. The Invoke-AnkaCommand function does not include any checks or handling for specific macOS versions, which suggests that compatibility is assumed or managed elsewhere in the codebase. Ensure that this assumption aligns with your deployment environment and requirements.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the impact of unconditional `Invoke-AnkaCommand` execution.
# Test: Check for any issues related to `Invoke-AnkaCommand` on older macOS versions.
rg --type powershell -A 5 $'Set-AnkaVMVideoController'

Length of output: 88


Script:

#!/bin/bash
# Search for the usage of `Invoke-AnkaCommand` in PowerShell scripts to check for any related conditions or comments.
rg 'Invoke-AnkaCommand' -A 5

Length of output: 4099


Script:

#!/bin/bash
# Search for the definition of `Invoke-AnkaCommand` to check for any macOS version handling.
ast-grep --lang powershell --pattern 'function Invoke-AnkaCommand { $$$ }'

Length of output: 197


Script:

#!/bin/bash
# Use `rg` to search for the definition of `Invoke-AnkaCommand` in the repository.
rg 'function Invoke-AnkaCommand' -A 10

Length of output: 769

images/macos/scripts/docs-gen/SoftwareReport.Xcode.psm1 (1)

239-239: Verify the impact of removing Big Sur checks.

The conditional logic now focuses solely on Monterey, which may affect users still using Big Sur. Ensure that this change aligns with the overall strategy for supporting macOS versions.

images/macos/scripts/tests/Xamarin.Tests.ps1 (1)

11-11: Verify test coverage after removing Big Sur checks.

The conditional logic now focuses solely on Monterey, which might affect test coverage for scenarios previously handled by Big Sur checks. Ensure that all necessary test scenarios are still covered.

images/macos/scripts/docs-gen/Generate-SoftwareReport.ps1 (1)

56-56: Verify compatibility and support strategy after removing Big Sur checks.

The script now omits Big Sur checks, which may impact compatibility for users on older macOS versions. Ensure that this change aligns with the intended support strategy and verify that all necessary tools are included for supported macOS versions.

Also applies to: 66-66, 77-77, 121-121, 126-126, 157-157, 159-160, 181-181, 183-183, 285-285

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 22143c7 and 8795612.

Files selected for processing (2)
  • images/windows/scripts/build/Install-AzureCosmosDbEmulator.ps1 (1 hunks)
  • images/windows/toolsets/toolset-2019.json (11 hunks)
Additional comments not posted (9)
images/windows/scripts/build/Install-AzureCosmosDbEmulator.ps1 (1)

8-8: Verify the updated checksum value.

Ensure that the new SHA256 checksum matches the expected value for the latest version of the Azure Cosmos DB Emulator binary to prevent installation issues.

images/windows/toolsets/toolset-2019.json (8)

9-10: Addition of Ruby version 3.2 is approved.

The addition of Ruby version "3.2" expands the supported versions, which is beneficial for compatibility with newer Ruby applications.


470-471: PostgreSQL version update to 14.12.1 is approved.

Updating PostgreSQL to version "14.12.1" ensures access to the latest security patches and features. Verify compatibility with existing databases.


87-87: SqlServer version specification is approved.

Specifying version "22.2.0" ensures compatibility and stability. Verify that this version is supported in all target environments.


155-157: NDK default version update to 27 is approved.

Updating the default NDK version ensures support for the latest Android development features. Verify compatibility with existing projects.


123-123: Azure CLI version update to 12.1.0 is approved.

The update likely includes improvements and new features. Verify compatibility with existing scripts and tools.


423-423: Addition of version argument for gitversion.portable is approved.

Specifying a version argument helps ensure consistent behavior across environments. Verify that this version is supported.


368-370: Docker and Compose version updates are approved.

Updating Docker to "26.1.3" and Compose to "2.27.1" likely includes security patches and new features. Verify compatibility with existing Dockerfiles and Compose files.

Verification successful

No Dockerfiles or Compose files found in the repository.

Since there are no Dockerfiles or Compose files present, there are no compatibility issues to verify with the updated versions of Docker and Compose. The update does not impact the current codebase.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify compatibility of Docker and Compose updates with existing configurations.

# Test: Check if existing Dockerfiles and Compose files work with the new versions.
docker --version
docker-compose --version

Length of output: 201


Script:

#!/bin/bash
# Locate Dockerfiles and Compose files in the repository
fd 'Dockerfile' --type f
fd 'docker-compose.yml' --type f
fd 'compose.yml' --type f

Length of output: 83


467-467: LLVM version update to 18 is approved.

Updating LLVM to version "18" ensures access to the latest features and optimizations. Verify compatibility with existing projects.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 8795612 and 5e6cc31.

Files selected for processing (4)
  • images/ubuntu/toolsets/toolset-2004.json (7 hunks)
  • images/ubuntu/toolsets/toolset-2204.json (5 hunks)
  • images/ubuntu/toolsets/toolset-2404.json (6 hunks)
  • images/windows/Windows2022-Readme.md (11 hunks)
Files skipped from review due to trivial changes (1)
  • images/ubuntu/toolsets/toolset-2004.json
Files skipped from review as they are similar to previous changes (2)
  • images/ubuntu/toolsets/toolset-2204.json
  • images/ubuntu/toolsets/toolset-2404.json
Additional comments not posted (8)
images/windows/Windows2022-Readme.md (8)

7-8: OS and Image Version Updates Approved.

The updates to the OS and image versions are appropriate and align with the goal of maintaining an up-to-date environment.


17-21: Language and Runtime Updates Approved.

The updates to Go, Julia, Kotlin, LLVM, and Node.js are correct and ensure that the environment is using the latest stable versions.


28-32: Package Management Tool Updates Approved.

The updates to Chocolatey, Composer, Helm, and NPM are consistent and ensure the use of the latest versions.


48-66: Development Tool Updates Approved.

The updates to Gradle, Docker, and Git are accurate and align with the goal of maintaining an up-to-date development environment.


208-208: Database Tool Update Approved.

The update to MongoDB version is correct and ensures the use of the latest stable version.


491-499: PowerShell and .NET Tool Updates Approved.

The updates to PowerShell and .NET Core SDK versions are correct and align with the goal of using the latest stable versions.


527-535: Android Tool Updates Approved.

The updates to the Android Emulator and NDK are correct and ensure the environment is using the latest versions.


550-554: Miscellaneous Updates Approved.

The updates to various tools and libraries are consistent with the goal of maintaining an up-to-date environment.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (3)
images/ubuntu/Ubuntu2404-Readme.md (3)

95-95: Consider hyphenating compound adjectives.

If "Open Source" is intended as a compound adjective modifying "Search Server," consider hyphenating it to "Open-Source."

- Sphinx Open Source Search Server 2.2.11
+ Sphinx Open-Source Search Server 2.2.11
Tools
LanguageTool

[uncategorized] ~95-~95: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...Pulumi 3.128.0 - Skopeo 1.13.3 - Sphinx Open Source Search Server 2.2.11 - yamllint 1.35.1 ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


160-160: Remove repeated words in database sections.

There are repeated words in the PostgreSQL and MySQL sections. Ensure clarity by removing duplicates.

- #### PostgreSQL
- #### MySQL

Also applies to: 168-168

Tools
LanguageTool

[duplication] ~160-~160: Possible typo: you repeated a word
Context: ...e ### Databases - sqlite3 3.45.1 #### PostgreSQL - PostgreSQL 16.4 ``` User: postgres PostgreSQL serv...

(ENGLISH_WORD_REPEAT_RULE)


120-120: Specify language in fenced code blocks.

Add a language identifier to the fenced code blocks for syntax highlighting and clarity.

- ```
+ ```bash

Also applies to: 162-162

Tools
Markdownlint

120-120: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 5e6cc31 and 3080249.

Files selected for processing (1)
  • images/ubuntu/Ubuntu2404-Readme.md (7 hunks)
Additional context used
LanguageTool
images/ubuntu/Ubuntu2404-Readme.md

[uncategorized] ~95-~95: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...Pulumi 3.128.0 - Skopeo 1.13.3 - Sphinx Open Source Search Server 2.2.11 - yamllint 1.35.1 ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[duplication] ~160-~160: Possible typo: you repeated a word
Context: ...e ### Databases - sqlite3 3.45.1 #### PostgreSQL - PostgreSQL 16.4 ``` User: postgres PostgreSQL serv...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~168-~168: Possible typo: you repeated a word
Context: ...ctl start postgresql.service' #### MySQL - MySQL 8.0.39-0ubuntu0.24.04.1 User: root ...

(ENGLISH_WORD_REPEAT_RULE)

Markdownlint
images/ubuntu/Ubuntu2404-Readme.md

120-120: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


162-162: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Additional comments not posted (4)
images/ubuntu/Ubuntu2404-Readme.md (4)

3-5: Announcements section updates look good.

The updates about Android NDK and Docker Compose v1 removal dates are clear and informative.


9-11: System information updates are appropriate.

The kernel, image, and systemd version updates are consistent with the latest releases.


23-39: Software version updates are accurate.

The updates to Julia, Node.js, Helm, and other software packages reflect the latest versions.


111-114: Java version updates are correct.

The JDK version updates reflect the latest available versions.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 3080249 and cc117fb.

Files selected for processing (1)
  • images/windows/toolsets/toolset-2019.json (11 hunks)
Files skipped from review as they are similar to previous changes (1)
  • images/windows/toolsets/toolset-2019.json

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between cc117fb and 85fb533.

Files selected for processing (1)
  • images/macos/macos-13-Readme.md (5 hunks)
Files skipped from review as they are similar to previous changes (1)
  • images/macos/macos-13-Readme.md

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 85fb533 and 474b80c.

Files selected for processing (1)
  • images/macos/macos-13-arm64-Readme.md (5 hunks)
Files skipped from review as they are similar to previous changes (1)
  • images/macos/macos-13-arm64-Readme.md

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 474b80c and cebb2a1.

Files selected for processing (1)
  • images/macos/macos-14-arm64-Readme.md (5 hunks)
Files skipped from review as they are similar to previous changes (1)
  • images/macos/macos-14-arm64-Readme.md

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Outside diff range, codebase verification and nitpick comments (2)
images/ubuntu/Ubuntu2004-Readme.md (2)

111-111: Consider using a hyphen for compound adjectives.

If "Sphinx Open Source Search Server" is intended as a compound adjective, consider using a hyphen.

- Sphinx Open Source Search Server 2.2.11
+ Sphinx-Open-Source Search Server 2.2.11
Tools
LanguageTool

[uncategorized] ~111-~111: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...128.0 - R 4.4.1 - Skopeo 1.5.0 - Sphinx Open Source Search Server 2.2.11 - SVN 1.13.0 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


144-144: Specify language for fenced code blocks.

Add a language identifier to the fenced code blocks for better syntax highlighting.

- ```
+ ```bash

Also applies to: 196-196

Tools
Markdownlint

144-144: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between cebb2a1 and b8153b8.

Files selected for processing (4)
  • images/ubuntu/Ubuntu2004-Readme.md (10 hunks)
  • images/ubuntu/Ubuntu2204-Readme.md (11 hunks)
  • images/windows/Windows2019-Readme.md (13 hunks)
  • images/windows/Windows2022-Readme.md (11 hunks)
Files skipped from review as they are similar to previous changes (1)
  • images/windows/Windows2019-Readme.md
Additional context used
LanguageTool
images/ubuntu/Ubuntu2004-Readme.md

[uncategorized] ~111-~111: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...128.0 - R 4.4.1 - Skopeo 1.5.0 - Sphinx Open Source Search Server 2.2.11 - SVN 1.13.0 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[duplication] ~194-~194: Possible typo: you repeated a word
Context: ...- MongoDB 5.0.28 - sqlite3 3.31.1 #### PostgreSQL - PostgreSQL 14.13 ``` User: postgres PostgreSQL ser...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~202-~202: Possible typo: you repeated a word
Context: ...ctl start postgresql.service' #### MySQL - MySQL 8.0.39-0ubuntu0.20.04.1 User: root ...

(ENGLISH_WORD_REPEAT_RULE)

images/ubuntu/Ubuntu2204-Readme.md

[uncategorized] ~107-~107: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...128.0 - R 4.4.1 - Skopeo 1.4.1 - Sphinx Open Source Search Server 2.2.11 - SVN 1.14.1 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[duplication] ~189-~189: Possible typo: you repeated a word
Context: ...e ### Databases - sqlite3 3.37.2 #### PostgreSQL - PostgreSQL 14.13 ``` User: postgres PostgreSQL ser...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~197-~197: Possible typo: you repeated a word
Context: ...ctl start postgresql.service' #### MySQL - MySQL 8.0.39-0ubuntu0.22.04.1 User: root ...

(ENGLISH_WORD_REPEAT_RULE)

Markdownlint
images/ubuntu/Ubuntu2004-Readme.md

144-144: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


196-196: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

images/ubuntu/Ubuntu2204-Readme.md

140-140: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


191-191: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Additional comments not posted (19)
images/ubuntu/Ubuntu2004-Readme.md (5)

9-10: Kernel and image version updates are correct.

The kernel version is updated to 5.15.0-1070-azure and the image version to 20240811.1.0. These updates are consistent with the ongoing maintenance of the system.


25-29: Language and runtime updates are correct.

Julia, Kotlin, and Node.js have been updated to their latest stable versions. These updates ensure users have access to the latest features and security improvements.


Line range hint 37-66:
Package and project management updates are correct.

Helm, Homebrew, and Gradle have been updated to their latest stable versions. These updates provide users with improved functionality and security.


81-113: Tool updates are correct.

Docker Compose, Git, and Terraform have been updated to their latest stable versions. These updates enhance compatibility and performance.

Tools
LanguageTool

[uncategorized] ~111-~111: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...128.0 - R 4.4.1 - Skopeo 1.5.0 - Sphinx Open Source Search Server 2.2.11 - SVN 1.13.0 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


3-3: Verify the announcement date for Android NDK removal.

The announcement states that Android NDK versions <=25 will be removed on August 19. Ensure this date aligns with the actual deprecation schedule.

images/ubuntu/Ubuntu2204-Readme.md (8)

3-3: Verify the announcement date for Android NDK removal.

The announcement states that Android NDK versions <=25 will be removed on August 19. Ensure this date aligns with the actual deprecation schedule.


9-10: Kernel and image version updates are correct.

The kernel version is updated to 6.5.0-1025-azure and the image version to 20240811.1.0. These updates are consistent with the ongoing maintenance of the system.


23-27: Language and runtime updates are correct.

Julia, Kotlin, and Node.js have been updated to their latest stable versions. These updates ensure users have access to the latest features and security improvements.


Line range hint 35-66:
Package and project management updates are correct.

Helm, Homebrew, and Gradle have been updated to their latest stable versions. These updates provide users with improved functionality and security.


79-109: Tool updates are correct.

Docker Compose, Git, and Terraform have been updated to their latest stable versions. These updates enhance compatibility and performance.

Tools
LanguageTool

[uncategorized] ~107-~107: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...128.0 - R 4.4.1 - Skopeo 1.4.1 - Sphinx Open Source Search Server 2.2.11 - SVN 1.14.1 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


107-107: Consider using a hyphen for compound adjectives.

If "Sphinx Open Source Search Server" is intended as a compound adjective, consider using a hyphen.

Tools
LanguageTool

[uncategorized] ~107-~107: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...128.0 - R 4.4.1 - Skopeo 1.4.1 - Sphinx Open Source Search Server 2.2.11 - SVN 1.14.1 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


189-189: Fix repeated word issue.

There is a repeated word in the PostgreSQL and MySQL sections.

Also applies to: 197-197

Tools
LanguageTool

[duplication] ~189-~189: Possible typo: you repeated a word
Context: ...e ### Databases - sqlite3 3.37.2 #### PostgreSQL - PostgreSQL 14.13 ``` User: postgres PostgreSQL ser...

(ENGLISH_WORD_REPEAT_RULE)


140-140: Specify language for fenced code blocks.

Add a language identifier to the fenced code blocks for better syntax highlighting.

Also applies to: 191-191

Tools
Markdownlint

140-140: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

images/windows/Windows2022-Readme.md (6)

3-3: Verify the announcement date for Android NDK removal.

The announcement states that Android NDK versions <=25 will be removed on August 19. Ensure this date aligns with the actual deprecation schedule.


7-8: OS and image version updates are correct.

The OS version is updated to 10.0.20348 Build 2582 and the image version to 20240811.1.0. These updates are consistent with the ongoing maintenance of the system.


17-21: Language and runtime updates are correct.

Go, Kotlin, and Node.js have been updated to their latest stable versions. These updates ensure users have access to the latest features and security improvements.


Line range hint 28-48:
Package and project management updates are correct.

Chocolatey, Composer, and Gradle have been updated to their latest stable versions. These updates provide users with improved functionality and security.


Line range hint 62-109:
Tool updates are correct.

Docker, Git, and Terraform have been updated to their latest stable versions. These updates enhance compatibility and performance.


527-535: Android and .NET Core updates are correct.

The Android Emulator, NDK, and .NET Core SDK have been updated to their latest stable versions. These updates ensure users have access to the latest features and security improvements.

Also applies to: 491-496


### Databases
- MongoDB 5.0.26
- MongoDB 5.0.28
- sqlite3 3.31.1

#### PostgreSQL
Copy link

Choose a reason for hiding this comment

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

Fix repeated word issue.

There is a repeated word in the PostgreSQL and MySQL sections.

- #### PostgreSQL - PostgreSQL 14.13
+ #### PostgreSQL 14.13

- #### MySQL - MySQL 8.0.39-0ubuntu0.20.04.1
+ #### MySQL 8.0.39-0ubuntu0.20.04.1

Also applies to: 202-202

Tools
LanguageTool

[duplication] ~194-~194: Possible typo: you repeated a word
Context: ...- MongoDB 5.0.28 - sqlite3 3.31.1 #### PostgreSQL - PostgreSQL 14.13 ``` User: postgres PostgreSQL ser...

(ENGLISH_WORD_REPEAT_RULE)

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between b8153b8 and 9bf0388.

Files selected for processing (1)
  • images/macos/toolsets/toolset-14.json (3 hunks)
Files skipped from review as they are similar to previous changes (1)
  • images/macos/toolsets/toolset-14.json

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 9bf0388 and 197b995.

Files selected for processing (1)
  • images/macos/macos-14-Readme.md (5 hunks)
Files skipped from review as they are similar to previous changes (1)
  • images/macos/macos-14-Readme.md

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 197b995 and 4e6e715.

Files selected for processing (1)
  • images/macos/macos-12-Readme.md (6 hunks)
Additional context used
Markdownlint
images/macos/macos-12-Readme.md

366-366: null
Bare URL used

(MD034, no-bare-urls)


369-369: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Additional comments not posted (4)
images/macos/macos-12-Readme.md (4)

6-8: OS and Image Version Updates Look Good.

The updates to the OS version and image version are consistent with the summary and reflect the latest changes.


13-35: Language and Runtime Updates Are Correct.

The updates to the .NET Core SDK, GCC, Python, Node.js, and Ruby versions are accurate and reflect the latest available versions.


366-366: Fix Bare URL in Environment Variables Section.

The bare URL should be formatted with markdown to avoid linting issues.

- | PARALLELS_DMG_URL | https://download.parallels.com/desktop/v19/19.4.1-54985/ParallelsDesktop-19.4.1-54985.dmg |
+ | PARALLELS_DMG_URL | [Parallels Desktop Download](https://download.parallels.com/desktop/v19/19.4.1-54985/ParallelsDesktop-19.4.1-54985.dmg) |
Tools
Markdownlint

366-366: null
Bare URL used

(MD034, no-bare-urls)


98-118: Miscellaneous Tools and Utilities Updates Are Accurate.

The updates to various tools and utilities, including AWS CLI, Azure CLI, and others, are consistent with the latest versions.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 4e6e715 and 59a0b37.

Files selected for processing (5)
  • images/ubuntu/toolsets/toolset-2004.json (7 hunks)
  • images/ubuntu/toolsets/toolset-2204.json (5 hunks)
  • images/ubuntu/toolsets/toolset-2404.json (6 hunks)
  • images/windows/toolsets/toolset-2019.json (11 hunks)
  • images/windows/toolsets/toolset-2022.json (6 hunks)
Files skipped from review due to trivial changes (1)
  • images/ubuntu/toolsets/toolset-2004.json
Files skipped from review as they are similar to previous changes (3)
  • images/ubuntu/toolsets/toolset-2204.json
  • images/ubuntu/toolsets/toolset-2404.json
  • images/windows/toolsets/toolset-2022.json
Additional comments not posted (9)
images/windows/toolsets/toolset-2019.json (9)

368-370: Verify Docker and Compose version compatibility.

Updating Docker to "26.1.3" and Compose to "2.27.1" likely includes new features and security patches. Ensure compatibility with existing Docker configurations.


123-123: Verify Azure CLI version "12.1.0" compatibility.

Updating the Azure CLI to version "12.1.0" is beneficial for accessing new features, but ensure compatibility with existing scripts and systems.


87-87: Verify SqlServer version "22.2.0" compatibility and support.

The addition of a specific version for SqlServer ensures consistency, but verify that this version is supported and compatible with your infrastructure.


423-423: Verify support for gitversion.portable version argument.

The addition of a version argument for gitversion.portable adds specificity. Ensure that this version argument is supported and functions as expected.


155-157: Verify compatibility with NDK version "27".

Updating the default NDK version to "27" may provide performance improvements, but ensure compatibility with existing Android projects.


250-250: Verify authenticity and purpose of the new signature.

The change in the signature field may imply a change in the integrity or source of the configuration. Verify the authenticity and purpose of the new signature.


470-470: Verify compatibility with PostgreSQL version "14.12.1".

Updating PostgreSQL to version "14.12.1" likely includes security patches and improvements. Ensure compatibility with existing databases and applications.

Verification successful

PostgreSQL version "14.12.1" is compatible with the existing setup.

The scripts across different platforms ensure that the PostgreSQL version specified in the toolset is correctly installed and tested. These scripts verify that both the client and server versions match the expected toolset version, maintaining compatibility.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify compatibility with PostgreSQL version "14.12.1".

# Test: Search for PostgreSQL usage in databases and applications. Expect: Compatibility with version "14.12.1".
rg --type sql --type json 'postgresql'

Length of output: 403


Script:

#!/bin/bash
# Search for PostgreSQL version dependencies or compatibility notes across the codebase.
rg 'postgresql.*version' -A 5

Length of output: 3812


9-10: Verify compatibility with Ruby 3.2.

Adding Ruby version "3.2" is a positive update, but ensure that all dependent systems and scripts are compatible with this version.


467-467: Verify compatibility with LLVM version "18".

Upgrading LLVM to version "18" is likely beneficial for accessing new features. Ensure compatibility with existing projects that use LLVM.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 59a0b37 and c634b8c.

Files selected for processing (9)
  • images/macos/scripts/build/configure-system.sh (1 hunks)
  • images/macos/scripts/build/install-common-utils.sh (3 hunks)
  • images/macos/scripts/docs-gen/Generate-SoftwareReport.ps1 (9 hunks)
  • images/macos/scripts/helpers/confirm-identified-developers-macos13.scpt (1 hunks)
  • images/macos/scripts/helpers/confirm-identified-developers-macos14.scpt (1 hunks)
  • images/macos/templates/macOS-13.anka.pkr.hcl (2 hunks)
  • images/macos/templates/macOS-14.anka.pkr.hcl (2 hunks)
  • images/macos/toolsets/toolset-13.json (3 hunks)
  • images/macos/toolsets/toolset-14.json (3 hunks)
Files skipped from review as they are similar to previous changes (5)
  • images/macos/scripts/build/install-common-utils.sh
  • images/macos/scripts/docs-gen/Generate-SoftwareReport.ps1
  • images/macos/templates/macOS-13.anka.pkr.hcl
  • images/macos/toolsets/toolset-13.json
  • images/macos/toolsets/toolset-14.json
Additional comments not posted (3)
images/macos/scripts/helpers/confirm-identified-developers-macos13.scpt (1)

7-34: Potential Issue: UI Automation Reliability.

UI automation scripts can be fragile due to changes in the UI layout or timing issues. Ensure this script is tested across different system configurations and UI states.

images/macos/scripts/helpers/confirm-identified-developers-macos14.scpt (1)

7-34: Potential Issue: UI Automation Reliability.

UI automation scripts can be fragile due to changes in the UI layout or timing issues. Ensure this script is tested across different system configurations and UI states.

images/macos/scripts/build/configure-system.sh (1)

14-15: Enhancement: Expand OS Version Checks.

The conditional logic now includes checks for SonomaX64 and VenturaX64, in addition to Monterey. This improves the script's adaptability to different macOS environments. Ensure that these functions (is_SonomaX64, is_VenturaX64) are defined and correctly implemented.

Comment on lines +1 to +5
# This AppleScript clicks "Allow" for "System Software from developer "Parallels International GmbH"
# Steps:
# - Open System Settings -> Privacy & Security
# - Click 'Allow' for 'System Software from developer "Parallels International GmbH'
# - Enter password for runner
Copy link

Choose a reason for hiding this comment

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

Security Concern: Hardcoded Developer Name.

The script contains a hardcoded developer name "Parallels International GmbH". Consider making this configurable to enhance flexibility and maintainability.

# Define developer name as a variable
set developerName to "Parallels International GmbH"

Comment on lines +1 to +5
# This AppleScript clicks "Allow" for "System Software from developer "Parallels International GmbH"
# Steps:
# - Open System Settings -> Privacy & Security
# - Click 'Allow' for 'System Software from developer "Parallels International GmbH'
# - Enter password for runner
Copy link

Choose a reason for hiding this comment

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

Security Concern: Hardcoded Developer Name.

The script contains a hardcoded developer name "Parallels International GmbH". Consider making this configurable to enhance flexibility and maintainability.

# Define developer name as a variable
set developerName to "Parallels International GmbH"

@@ -96,7 +96,7 @@ source "null" "template" {
ssh_host = "${var.source_vm_name}"
ssh_port = "${var.source_vm_port}"
ssh_username = "${var.vm_username}"
ssh_private_key_file = "${var.vm_password}"
ssh_password = "${var.vm_password}"
Copy link

Choose a reason for hiding this comment

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

Security Concern: Use of Password for SSH Authentication.

Switching from a private key to a password for SSH authentication can reduce security. Consider using SSH keys for stronger security and to avoid storing passwords in scripts.

# Consider reverting to using an SSH private key for enhanced security.
# ssh_private_key_file = "${var.vm_password}"

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between c634b8c and 1eae5ba.

Files selected for processing (5)
  • images/macos/templates/macOS-12.anka.pkr.hcl (2 hunks)
  • images/macos/templates/macOS-13.anka.pkr.hcl (3 hunks)
  • images/macos/templates/macOS-13.arm64.anka.pkr.hcl (2 hunks)
  • images/macos/templates/macOS-14.anka.pkr.hcl (3 hunks)
  • images/macos/templates/macOS-14.arm64.anka.pkr.hcl (2 hunks)
Files skipped from review as they are similar to previous changes (5)
  • images/macos/templates/macOS-12.anka.pkr.hcl
  • images/macos/templates/macOS-13.anka.pkr.hcl
  • images/macos/templates/macOS-13.arm64.anka.pkr.hcl
  • images/macos/templates/macOS-14.anka.pkr.hcl
  • images/macos/templates/macOS-14.arm64.anka.pkr.hcl

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 1eae5ba and 0a285c2.

Files selected for processing (1)
  • images/macos/scripts/build/install-actions-cache.sh (1 hunks)
Additional comments not posted (1)
images/macos/scripts/build/install-actions-cache.sh (1)

15-15: Ensure the API token is securely managed.

The addition of the $API_PAT parameter to the resolve_github_release_asset_url function enhances security by allowing authenticated requests. Ensure that the API token is securely stored and managed to prevent unauthorized access.

Verification successful

API token usage appears secure, but verify storage practices.

The API_PAT is used correctly in conditional checks and for authenticated requests in shell scripts. However, ensure that the token is securely stored and accessed in the environment to prevent unauthorized access. Verify that environment variables or secure vaults are used for storing the token.

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of the API token within the repository to ensure it is securely managed.

# Test: Search for the API token usage. Expect: Proper handling and storage of the token.
rg --type shell 'API_PAT'

Length of output: 55


Script:

#!/bin/bash
# Correct the search for API_PAT in shell scripts by identifying shell script files and searching within them.

# Find all shell script files and search for API_PAT within them.
fd -e sh -x rg 'API_PAT' {}

Length of output: 442

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (3)
images/ubuntu/Ubuntu2404-Readme.md (3)

167-167: Address potential duplication in MySQL section.

The static analysis tool suggests a possible duplication in the MySQL section. Ensure that the formatting is correct and there are no repeated words.

Tools
LanguageTool

[duplication] ~167-~167: Possible typo: you repeated a word
Context: ...ctl start postgresql.service' #### MySQL - MySQL 8.0.39-0ubuntu0.24.04.1 User: root ...

(ENGLISH_WORD_REPEAT_RULE)


119-119: Specify language for fenced code block.

Add a language identifier to the fenced code block for better readability and consistency.

- ```
+ ```bash
Tools
Markdownlint

119-119: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


161-161: Specify language for fenced code block.

Add a language identifier to the fenced code block for better readability and consistency.

- ```
+ ```bash
Tools
Markdownlint

161-161: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 0a285c2 and 36cf63a.

Files selected for processing (1)
  • images/ubuntu/Ubuntu2404-Readme.md (7 hunks)
Additional context used
LanguageTool
images/ubuntu/Ubuntu2404-Readme.md

[uncategorized] ~94-~94: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...Pulumi 3.129.0 - Skopeo 1.13.3 - Sphinx Open Source Search Server 2.2.11 - yamllint 1.35.1 ...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[duplication] ~159-~159: Possible typo: you repeated a word
Context: ...e ### Databases - sqlite3 3.45.1 #### PostgreSQL - PostgreSQL 16.4 ``` User: postgres PostgreSQL serv...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~167-~167: Possible typo: you repeated a word
Context: ...ctl start postgresql.service' #### MySQL - MySQL 8.0.39-0ubuntu0.24.04.1 User: root ...

(ENGLISH_WORD_REPEAT_RULE)

Markdownlint
images/ubuntu/Ubuntu2404-Readme.md

119-119: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


161-161: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Additional comments not posted (3)
images/ubuntu/Ubuntu2404-Readme.md (3)

3-3: Announcement update looks good.

The new announcement regarding the removal of Android NDK versions is clear and informative.


8-10: System information updates are accurate.

The kernel, image, and systemd version updates are correct and align with the latest changes.


22-23: Software updates are comprehensive and well-documented.

The README accurately reflects the updated versions of various software packages, ensuring users have the latest tools and libraries.

Also applies to: 30-33, 38-38, 57-57, 62-63, 66-66, 68-68, 71-71, 76-76, 81-82, 88-88, 92-92, 96-96, 100-100, 105-105, 110-112, 117-117, 124-124, 126-126, 130-131, 139-140, 153-153, 160-160, 168-168, 180-181, 185-186, 192-192, 202-203, 214-222, 228-231, 235-306

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (2)
images/ubuntu/Ubuntu2004-Readme.md (2)

110-110: Consider hyphenating compound adjectives.

If "Open Source" is intended as a compound adjective modifying "Search Server," consider using a hyphen.

- Sphinx Open Source Search Server 2.2.11
+ Sphinx Open-Source Search Server 2.2.11
Tools
LanguageTool

[uncategorized] ~110-~110: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...129.0 - R 4.4.1 - Skopeo 1.5.0 - Sphinx Open Source Search Server 2.2.11 - SVN 1.13.0 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


195-195: Specify language in fenced code blocks.

Add a language identifier to the fenced code block for better readability.

- ```
+ ```bash
Tools
Markdownlint

195-195: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 36cf63a and 17a8ea1.

Files selected for processing (1)
  • images/ubuntu/Ubuntu2004-Readme.md (10 hunks)
Additional context used
LanguageTool
images/ubuntu/Ubuntu2004-Readme.md

[uncategorized] ~110-~110: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...129.0 - R 4.4.1 - Skopeo 1.5.0 - Sphinx Open Source Search Server 2.2.11 - SVN 1.13.0 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[duplication] ~193-~193: Possible typo: you repeated a word
Context: ...- MongoDB 5.0.28 - sqlite3 3.31.1 #### PostgreSQL - PostgreSQL 14.13 ``` User: postgres PostgreSQL ser...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~201-~201: Possible typo: you repeated a word
Context: ...ctl start postgresql.service' #### MySQL - MySQL 8.0.39-0ubuntu0.20.04.1 User: root ...

(ENGLISH_WORD_REPEAT_RULE)

Markdownlint
images/ubuntu/Ubuntu2004-Readme.md

143-143: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


195-195: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Additional comments not posted (7)
images/ubuntu/Ubuntu2004-Readme.md (7)

3-3: LGTM!

The announcement about the removal of Android NDK versions is clear and informative.


8-9: LGTM!

The updates to the kernel and image versions are consistent with routine maintenance.


24-32: LGTM!

The updates to software packages like Julia, Kotlin, Node.js, and Swift are consistent with the AI-generated summary.


36-43: LGTM!

The updates to package management tools like Helm, Homebrew, Miniconda, and Pipx are consistent with the AI-generated summary.


64-67: LGTM!

The updates to project management tools like Gradle, Lerna, and Sbt are consistent with the AI-generated summary.


72-114: LGTM!

The updates to tools like AzCopy, Bazel, and Docker Compose are consistent with the AI-generated summary.

Tools
LanguageTool

[uncategorized] ~110-~110: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...129.0 - R 4.4.1 - Skopeo 1.5.0 - Sphinx Open Source Search Server 2.2.11 - SVN 1.13.0 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


190-202: LGTM!

The updates to MongoDB and MySQL are consistent with the AI-generated summary.

Tools
LanguageTool

[duplication] ~193-~193: Possible typo: you repeated a word
Context: ...- MongoDB 5.0.28 - sqlite3 3.31.1 #### PostgreSQL - PostgreSQL 14.13 ``` User: postgres PostgreSQL ser...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~201-~201: Possible typo: you repeated a word
Context: ...ctl start postgresql.service' #### MySQL - MySQL 8.0.39-0ubuntu0.20.04.1 User: root ...

(ENGLISH_WORD_REPEAT_RULE)

Markdownlint

195-195: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (1)
images/ubuntu/Ubuntu2204-Readme.md (1)

188-188: Fix repeated words in database section.

There are repeated words in the PostgreSQL and MySQL sections.

Use this diff to fix the repeated words:

- #### PostgreSQL - PostgreSQL 14.13
+ #### PostgreSQL 14.13

- #### MySQL - MySQL 8.0.39-0ubuntu0.22.04.1
+ #### MySQL 8.0.39-0ubuntu0.22.04.1

Also applies to: 196-196

Tools
LanguageTool

[duplication] ~188-~188: Possible typo: you repeated a word
Context: ...e ### Databases - sqlite3 3.37.2 #### PostgreSQL - PostgreSQL 14.13 ``` User: postgres PostgreSQL ser...

(ENGLISH_WORD_REPEAT_RULE)

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 17a8ea1 and 69f706a.

Files selected for processing (1)
  • images/ubuntu/Ubuntu2204-Readme.md (11 hunks)
Additional context used
LanguageTool
images/ubuntu/Ubuntu2204-Readme.md

[uncategorized] ~106-~106: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...129.0 - R 4.4.1 - Skopeo 1.4.1 - Sphinx Open Source Search Server 2.2.11 - SVN 1.14.1 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[duplication] ~188-~188: Possible typo: you repeated a word
Context: ...e ### Databases - sqlite3 3.37.2 #### PostgreSQL - PostgreSQL 14.13 ``` User: postgres PostgreSQL ser...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~196-~196: Possible typo: you repeated a word
Context: ...ctl start postgresql.service' #### MySQL - MySQL 8.0.39-0ubuntu0.22.04.1 User: root ...

(ENGLISH_WORD_REPEAT_RULE)

Markdownlint
images/ubuntu/Ubuntu2204-Readme.md

139-139: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


190-190: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

Additional comments not posted (13)
images/ubuntu/Ubuntu2204-Readme.md (13)

3-3: Informational update approved.

The announcement regarding the removal of Android NDK versions <=25 is clear and informative.


8-9: Kernel and Image version updates approved.

The updates to the kernel and image versions are appropriate for maintaining a modern environment.


22-30: Language version updates approved.

The updates to Julia, Kotlin, Node.js, and Swift versions are beneficial for maintaining a secure and functional environment.


34-37: Package management tool updates approved.

The updates to Helm, Homebrew, and Npm versions are necessary for compatibility and feature access.


62-62: Gradle version update approved.

The update to Gradle version ensures compatibility with the latest project management features.


68-108: Tool updates approved.

The updates to Ansible, Docker Compose, and other tools are important for maintaining compatibility and functionality.

Tools
LanguageTool

[uncategorized] ~106-~106: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...129.0 - R 4.4.1 - Skopeo 1.4.1 - Sphinx Open Source Search Server 2.2.11 - SVN 1.14.1 - Ter...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


114-125: CLI tool updates approved.

The updates to various CLI tools ensure they are up-to-date with the latest features and security patches.


137-137: Composer version update approved.

The update to Composer version ensures compatibility with the latest PHP tools.


144-146: Haskell tool updates approved.

The updates to Cabal and GHCup versions ensure the tools are current and compatible.


150-158: Rust tool updates approved.

The updates to Cargo and Rust versions are necessary for a modern Rust development environment.


164-171: Browser and driver updates approved.

The updates to browser and driver versions ensure compatibility with the latest web standards and features.


197-197: MySQL version update approved.

The update to MySQL version is appropriate for maintaining a modern database environment.


281-294: Cached Docker image updates approved.

The updates to cached Docker images ensure that the latest versions are available for use.

kishorekumar-anchala and others added 30 commits May 22, 2025 13:57
* Bug: Fully remove `fwupd` from ubuntu images

We're running on VMs in Azure and the fwupd package is not needed.

Leaving it enable means periodic refreshes show in network traffic and firewall logs.

* Update check method

* Simplify test
* Add Mozila Firfox to macOS 13,14 and 15 arm64 images.

* move the firefox script next to google chrome installer

---------

Co-authored-by: Suresh kumar <[email protected]>
… images. (#12249)

Co-authored-by: Suresh kumar <[email protected]>
Co-authored-by: Erik Bershel <[email protected]>
This avoids the output containing
the preset vendor value.
Fix fwupd intergration test on Ubuntu 22.04
…t 17 installation in Postgresql (#12247)

* [Windows] Update AzureCosmosDbEmulator signature

* [Windows] Removing VC reddist installation in Postgress
Co-authored-by: Image generation service account. <[email protected]>
Co-authored-by: Actions service account <[email protected]>
Co-authored-by: Image generation service account. <[email protected]>
Co-authored-by: Actions service account <[email protected]>
Co-authored-by: Image generation service account. <[email protected]>
Co-authored-by: Actions service account <[email protected]>
Co-authored-by: Image generation service account. <[email protected]>
Co-authored-by: Actions service account <[email protected]>
Co-authored-by: Image generation service account. <[email protected]>
Co-authored-by: Actions service account <[email protected]>
Co-authored-by: Image generation service account. <[email protected]>
Co-authored-by: Actions service account <[email protected]>
…erged #12247 (#12264)

* [Windows] Remove VCRedist from Toolsets

[Windows] Update AzureCosmosDbEmulator signature and Removing VSredist 17 installation in Postgresql (#12247)

* [Windows] Remove VCRedist from Toolsets

[Windows] Update AzureCosmosDbEmulator signature and Removing VSredist 17 installation in Postgresql (#12247)

* Setting first version following other tools

* Setting first version following other tools

* Setting first version following other tools
Co-authored-by: Image generation service account. <[email protected]>
Co-authored-by: Actions service account <[email protected]>
Co-authored-by: Image generation service account. <[email protected]>
Co-authored-by: Actions service account <[email protected]>
Co-authored-by: Image generation service account. <[email protected]>
Co-authored-by: Actions service account <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.