Skip to content

Conversation

@lumtis
Copy link
Member

@lumtis lumtis commented Oct 13, 2025

Description

Closes #4260

zetae2e release is currently associated with zetaclientd for simplification since we should always do zetaclientd release associated with new zetacored release, even in the new workflow.

Note: not removing the older publish release for now in case we still need it for a patch. This will be addresses in Remove legacy publish release workflow

Summary by CodeRabbit

  • New Features

    • Official release artifacts for ZetaCore and ZetaClient across Linux, macOS, and Windows (amd64/arm64).
    • Automatic changelogs, checksums, and provenance attestations attached to releases.
    • Support for pre-releases and robust tag handling.
  • Chores

    • Added automated release workflows for publishing and follow-up TypeScript publishing.
    • Introduced Makefile targets for snapshot and full releases to streamline builds.
    • Adjusted version propagation in the release pipeline for consistency.

@github-actions github-actions bot added the ci Changes to CI pipeline or github actions label Oct 13, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 13, 2025

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. 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

Walkthrough

Adds separate GitHub Actions workflows and Goreleaser configs to independently build and publish ZetaClient and ZetaCore releases. Updates the existing unified release workflow to adjust version environment handling. Extends the Makefile with new snapshot and release targets for each component and shared validation.

Changes

Cohort / File(s) Summary of changes
Separate release workflows
.github/workflows/publish-release-zetaclient.yml, .github/workflows/publish-release-zetacore.yml
New workflows to publish ZetaClient and ZetaCore independently. Include input handling, branch checks, optional snapshot builds, tag (create/recreate) logic, GitHub release creation, artifact publishing via Makefile targets, provenance attestation, and cleanup. ZetaClient flow triggers a dependent TypeScript publish job.
Existing release workflow tweak
.github/workflows/publish-release.yml
Refactors version export: introduces VERSION_INPUT env and uses it to set GITHUB_TAG_VERSION; overall flow unchanged.
Goreleaser configs
.goreleaser-zetaclient.yaml, .goreleaser-zetacore.yaml
Add dedicated release configs. Define environments, pre-hooks, build matrices (OS/arch), build tags, ldflags with version/commit/time metadata, archives, checksums, changelog filters, snapshot/release settings.
Makefile release targets
Makefile
Adds targets: release-snapshot-zetacore, release-snapshot-zetaclient, release-zetacore, release-zetaclient, release-build-only, release. Include validation via .release-env and per-component Goreleaser invocations.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Dev as Developer
  participant GH as GitHub Actions
  participant Repo as Repo
  participant Make as Makefile
  participant GHRel as GitHub Release
  participant Prov as Attest Provenance

  Dev->>GH: Dispatch publish-release-zetaclient (version, skip flags)
  GH->>GH: Job: log (echo inputs)
  GH->>Repo: Job: check-branch (detect release/zetaclient/*)
  alt skip_checks != true
    GH->>Repo: Job: check-goreleaser (snapshot build)
  else
    Note over GH: Snapshot skipped
  end
  alt skip_release != true
    GH->>Repo: Job: publish-release (checkout)
    GH->>GH: Extract release notes (changelog-current.md)
    GH->>GH: Set VERSION_INPUT -> GITHUB_TAG_VERSION
    GH->>Repo: Create tag (delete/recreate if exists)
    GH->>GHRel: Create GitHub release (notes, tag)
    GH->>Make: make release-zetaclient
    Make-->>GHRel: Upload artifacts
    GH->>Prov: Generate attestations
    Prov-->>GHRel: Upload attestation bundle
    GH->>GH: Cleanup workspace
    GH->>GH: Job: publish-typescript (reusable workflow)
  else
    Note over GH: Release skipped
  end
Loading
sequenceDiagram
  autonumber
  actor Dev as Developer
  participant GH as GitHub Actions
  participant Repo as Repo
  participant Make as Makefile
  participant GHRel as GitHub Release
  participant Prov as Attest Provenance

  Dev->>GH: Dispatch publish-release-zetacore (version, skip flags)
  GH->>GH: Job: log (echo inputs)
  GH->>Repo: Job: check-branch (detect release/zetacore/*)
  alt skip_checks != true
    GH->>Repo: Job: check-goreleaser (snapshot build)
  else
    Note over GH: Snapshot skipped
  end
  alt skip_release != true
    GH->>Repo: Job: publish-release (checkout)
    GH->>GH: Extract release notes (changelog-current.md)
    GH->>GH: Set VERSION_INPUT -> GITHUB_TAG_VERSION
    GH->>Repo: Create tag (delete/recreate if exists)
    GH->>GHRel: Create GitHub release (notes, tag)
    GH->>Make: make release-zetacore
    Make-->>GHRel: Upload artifacts
    GH->>Prov: Generate attestations
    Prov-->>GHRel: Upload attestation bundle
    GH->>GH: Cleanup workspace
  else
    Note over GH: Release skipped
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Pre-merge checks and finishing touches

❌ Failed checks (3 warnings)
Check name Status Explanation Resolution
Linked Issues Check ⚠️ Warning The changes correctly introduce separate release workflows for ZetaClient and ZetaCore with branch filtering and shared CI steps in accordance with issue #4260, but they do not include the additional consensus-breaking change checks for ZetaClient releases that the linked issue specifically requires. Add the consensus-breaking change detection step or job to the publish-release-zetaclient workflow as described in issue #4260 to ensure full compliance with the linked requirements.
Out of Scope Changes Check ⚠️ Warning This pull request also introduces new Goreleaser configuration files, Makefile targets, and updates to the existing publish-release workflow, which are not specified in the objectives of issue #4260 that focus solely on creating separate CI workflows for ZetaClient and ZetaCore. Consider splitting unrelated configuration changes into a separate pull request or explicitly updating the PR objectives to include the Goreleaser and Makefile modifications.
Description Check ⚠️ Warning The pull request description provides a summary and references the related issue, but it omits the required “How Has This Been Tested?” section with test checkboxes and lacks any information on dependencies as mandated by the repository’s description template. Please add a “# How Has This Been Tested?” section with the appropriate test checkboxes and details of the testing procedures, and include any dependencies or prerequisites required for this change to fully comply with the template.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The title succinctly conveys the introduction of separate release workflows for ZetaClient and ZetaCore, aligning directly with the main change implemented in this pull request.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@lumtis lumtis added the no-changelog Skip changelog CI check label Oct 13, 2025
@lumtis lumtis marked this pull request as ready for review October 13, 2025 14:31
@lumtis lumtis requested review from a team as code owners October 13, 2025 14:31
Copy link
Contributor

@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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 83626eb and 901e14e.

📒 Files selected for processing (6)
  • .github/workflows/publish-release-zetaclient.yml (1 hunks)
  • .github/workflows/publish-release-zetacore.yml (1 hunks)
  • .github/workflows/publish-release.yml (1 hunks)
  • .goreleaser-zetaclient.yaml (1 hunks)
  • .goreleaser-zetacore.yaml (1 hunks)
  • Makefile (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: start-e2e-test / e2e
  • GitHub Check: build-and-test
  • GitHub Check: build
  • GitHub Check: gosec
  • GitHub Check: analyze (go)

Copy link
Contributor

@kingpinXD kingpinXD left a comment

Choose a reason for hiding this comment

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

lgtm

@lumtis lumtis requested review from kingpinXD and skosito October 20, 2025 08:53
lumtis and others added 2 commits October 20, 2025 20:45
Co-authored-by: semgrep-code-zeta-chain[bot] <181804379+semgrep-code-zeta-chain[bot]@users.noreply.github.com>
Co-authored-by: semgrep-code-zeta-chain[bot] <181804379+semgrep-code-zeta-chain[bot]@users.noreply.github.com>
@lumtis lumtis added this pull request to the merge queue Oct 21, 2025
Merged via the queue into develop with commit bff8ce6 Oct 21, 2025
48 checks passed
@lumtis lumtis deleted the ci/zetaclient-release branch October 21, 2025 07:28
lumtis added a commit that referenced this pull request Oct 29, 2025
…4329)

* publish release actions

* gorelease new files

* fix security warning

* fix coderabbit comments

* reorganize workflow

* Update .github/workflows/release-template.yml

Co-authored-by: semgrep-code-zeta-chain[bot] <181804379+semgrep-code-zeta-chain[bot]@users.noreply.github.com>

* Update .github/workflows/release-template.yml

Co-authored-by: semgrep-code-zeta-chain[bot] <181804379+semgrep-code-zeta-chain[bot]@users.noreply.github.com>

---------

Co-authored-by: semgrep-code-zeta-chain[bot] <181804379+semgrep-code-zeta-chain[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Changes to CI pipeline or github actions no-changelog Skip changelog CI check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create a CI actions to perform ZetaClient and ZetaCore releases separately

5 participants