Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

ci: cross-compile release binaries and simplify PR testings #1218

Merged
merged 34 commits into from
Oct 2, 2023

Conversation

CharlieMc0
Copy link
Member

Description

Sets up goreleaser for cross compiling build and some other release automation. Builds linux, mac, and windows binaries.

goreleaser can handle announcements to our various social channels as well but is not current being used for that.

Reduce the number of steps and checks in the PR testing workflow. More improvements to Smoke Tests speed and stability will come in a future PR

Type of change

CI Change

How Has This Been Tested?

Tested locally with make release-dry-run

  • Tested CCTX in localnet
  • Tested in development environment
  • Go unit tests
  • Go integration tests
  • Tested via GitHub Actions

Explanation about Goreleaser vs Makefile

Goreleaser does not directly replace a Makefile. It serves a different purpose:

  • Makefile - Used to define build tasks and workflows for a project during development. Common tasks are compiling, testing, linting, installing, cleaning up etc.
  • Goreleaser - Automates the release process including building binaries, archiving, creating checksums, publishing releases etc. Meant for release management.
    So Goreleaser complements a Makefile rather than replaces it. Here is a typical workflow using both:
    During Development
  • Use Makefile for managing build, test, lint cycles
  • Tweak config locally and test with goreleaser --snapshot --skip-publish
    Release Time
  • Update CHANGELOG, README, version info
  • Commit changes and push tag
  • Goreleaser picks up tag, builds binaries, archives, publishes releases
    The Makefile is useful for developers working on the project. Goreleaser streamlines the release process and packaging.
    Some key differences:
  • Makefile builds locally, Goreleaser containers/CI
  • Makefile simpler targets, Goreleaser full release automation
  • Makefile flexible, custom logic, Goreleaser config based
    So in summary, Goreleaser does not replace a Makefile but rather complements it by handling releases and packaging. The Makefile is still useful for day-to-day development workflows.

@CharlieMc0 CharlieMc0 added the ci Changes to CI pipeline or github actions label Oct 2, 2023
Copy link
Member

@lumtis lumtis left a comment

Choose a reason for hiding this comment

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

LGTM

@CharlieMc0 CharlieMc0 merged commit 70ed79b into zeta-chain:develop Oct 2, 2023
11 of 12 checks passed
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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants