Skip to content

#2255: Extract MSI build logic into shell script - #2262

Open
Caylipp wants to merge 2 commits into
devonfw:mainfrom
Caylipp:feature/2255-extract-msi-build-script
Open

#2255: Extract MSI build logic into shell script#2262
Caylipp wants to merge 2 commits into
devonfw:mainfrom
Caylipp:feature/2255-extract-msi-build-script

Conversation

@Caylipp

@Caylipp Caylipp commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

This PR fixes #2255

No macOS PKG build exists in the current workflows, so this PR only extracts the Windows MSI build.

Implemented changes:

  • Add windows-installer/build-msi.sh
  • Replace the inline MSI build logic in nightly-build.yml
  • Replace the inline MSI build logic in release.yml
  • Keep the workflows focused on orchestration

Testing instructions

Please add conscise, understandable instructions on how a reviewer can test/verify the functionality of your contribution here:

  1. Validated the shell script syntax with:
    bash -n windows-installer/build-msi.sh

Checklist for this PR

Make sure everything is checked before merging this PR. For further info please also see
our DoD.

  • When running mvn clean test locally all tests pass and build is successful
  • PR title is of the form #«issue-id»: «brief summary» (e.g. #921: fixed setup.bat). If no issue ID exists, title only.
  • PR top-level comment summarizes what has been done and contains link to addressed issue(s)
  • PR and issue(s) have suitable labels
  • Issue is set to In Progress and assigned to you or there is no issue (might happen for very small PRs)
  • You followed all coding conventions
  • You have added the issue implemented by your PR in CHANGELOG.adoc unless issue is labeled
    with internal
  • You have formulated clear instructions on how to test your contribution under "Testing instructions"

@github-project-automation github-project-automation Bot moved this to 🆕 New in IDEasy board Aug 4, 2026
@Caylipp Caylipp self-assigned this Aug 4, 2026
@Caylipp Caylipp added enhancement New feature or request bash bash, zsh, git-bash (integration, scripts) internal Nothing to be added to CHANGELOG, only internal story workflow GitHub actions (CI,CD,update urls/CVEs) labels Aug 4, 2026
@Caylipp Caylipp moved this from 🆕 New to Team Review in IDEasy board Aug 4, 2026
@QuangAnhLe

Copy link
Copy Markdown

Hi @Caylipp, thanks for contribution, a few things that stand:

what 's good: :)

  1. Correct refactor for DRY principle. The exact same 15-line block was duplicated in both workflows. Calling ./windows-installer/build-msi.sh from both is the right move.
  2. Proper set -euo pipefail. Fail-fast, no undefined variables, pipe failures caught.
  3. Directory resolution via BASH_SOURCE[0]. The script correctly resolves the repo root relative to its own location, so it works regardless of the caller's working
    directory.
  4. Workflow YAML is significantly cleaner. From 15 lines of inline script to a single run: ./windows-installer/build-msi.sh.
  5. -f documentation/pom.xml is more robust than cd documentation && mvn ... && cd .. since it doesn't depend on the working directory.
    The two substantive items are:
  6. The * → . copy behavior change (likely harmless but worth a quick verification that no dotfiles in cli/target/package/ should be excluded).
  7. Non-idempotent dotnet tool install — not a blocker for CI (fresh runners each run), but makes the script harder to run locally for iteration. If the goal is developer-friendliness, adding idempotency guards would help.

@Caylipp

Caylipp commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Hi @Caylipp, thanks for contribution, a few things that stand:

what 's good: :)

  1. Correct refactor for DRY principle. The exact same 15-line block was duplicated in both workflows. Calling ./windows-installer/build-msi.sh from both is the right move.
  2. Proper set -euo pipefail. Fail-fast, no undefined variables, pipe failures caught.
  3. Directory resolution via BASH_SOURCE[0]. The script correctly resolves the repo root relative to its own location, so it works regardless of the caller's working
    directory.
  4. Workflow YAML is significantly cleaner. From 15 lines of inline script to a single run: ./windows-installer/build-msi.sh.
  5. -f documentation/pom.xml is more robust than cd documentation && mvn ... && cd .. since it doesn't depend on the working directory.
    The two substantive items are:
  6. The * → . copy behavior change (likely harmless but worth a quick verification that no dotfiles in cli/target/package/ should be excluded).
  7. Non-idempotent dotnet tool install — not a blocker for CI (fresh runners each run), but makes the script harder to run locally for iteration. If the goal is developer-friendliness, adding idempotency guards would help.

Thanks! I restored the original copy behavior and added a guard to avoid reinstalling WiX when it is already available.

@coveralls

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 31005868133

Coverage increased (+0.04%) to 72.624%

Details

  • Coverage increased (+0.04%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 17252
Covered Lines: 13068
Line Coverage: 75.75%
Relevant Branches: 7649
Covered Branches: 5016
Branch Coverage: 65.58%
Branches in Coverage %: Yes
Coverage Strength: 3.22 hits per line

💛 - Coveralls

@Caylipp Caylipp removed their assignment Aug 6, 2026
@QuangAnhLe

Copy link
Copy Markdown

add CHANGELOG.adoc

@QuangAnhLe QuangAnhLe moved this from Team Review to 👀 In review in IDEasy board Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bash bash, zsh, git-bash (integration, scripts) enhancement New feature or request internal Nothing to be added to CHANGELOG, only internal story workflow GitHub actions (CI,CD,update urls/CVEs)

Projects

Status: 👀 In review

Development

Successfully merging this pull request may close these issues.

Refactor build logic from GitHub Workflows into dedicated shell scripts

3 participants