Skip to content

feat: Implement Nightly Build CI #24

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 1 commit into
base: main
Choose a base branch
from
Open

Conversation

sht2017
Copy link
Contributor

@sht2017 sht2017 commented Jun 4, 2025

This PR introduces a GitHub Actions workflow (nightly-build.yml) to automate the creation of nightly builds and pre-releases for the EverythingCmdPal project.

Key Features of the Workflow:

  • Scheduled & Manual Trigger:
    • Runs automatically every day at 00:00 UTC.
    • Can also be triggered manually via workflow_dispatch.
  • Multi-Architecture Builds:
    • Compiles the solution for both ARM64 and x64 platforms.
    • Generates .msix application packages for each architecture.
  • Self-Signing Mechanism:
    • Dynamically generates a temporary self-signed certificate (CN=${{env.CERT_CN}}) valid for 2 days during each workflow run.
    • Signs the .msix packages using this generated certificate and signtool.exe.
  • Automated Installer Script (install.bat):
    • A batch script is created and included in the release assets to simplify installation. This script:
      • Detects the user's system architecture (x64 or ARM64).
      • Requests administrator privileges (necessary for certificate and MSIX installation).
      • Temporarily installs the included public.cer to the LocalMachine\Root certificate store.
      • Installs the appropriate .msix package for the detected architecture.
      • Important: Cleans up by removing the temporarily installed certificate from the LocalMachine\Root store after the installation attempt (success or failure).
  • Artifact Packaging:
    • Bundles the ARM64.msix, x64.msix, public.cer, and the install.bat script into a single .zip archive (e.g., build-YYYYMMDD-nightly.zip).
  • Release Management:
    • Cleanup: Automatically deletes any previous GitHub pre-releases tagged with a *-nightly suffix to keep the releases section tidy.
    • New Pre-release: Creates a new GitHub pre-release tagged with the current date and -nightly (e.g., 20230101-nightly).
    • The release notes include the build time, commit, and branch name.
    • Uploads the generated .zip archive to this pre-release.
  • Permissions: The workflow requests contents: write permission to manage releases and tags.

Purpose:

This automation aims to provide users and testers with easy access to the latest development versions of EverythingCmdPal. The included installer script handles the temporary trust establishment required for installing packages signed with a self-signed certificate, offering a more streamlined testing experience.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant