Skip to content

Set up complete CI/CD for monorepo#11

Merged
rianjs merged 3 commits into
mainfrom
feature/complete-cicd-pipeline
Jan 29, 2026
Merged

Set up complete CI/CD for monorepo#11
rianjs merged 3 commits into
mainfrom
feature/complete-cicd-pipeline

Conversation

@rianjs

@rianjs rianjs commented Jan 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Implements the full CI/CD pipeline for the atlassian-cli monorepo with path filtering, independent release tracks, and multi-platform builds.

Workflows Created

Workflow Purpose Trigger
ci.yml Build, test, lint with path filtering Push/PR
auto-release-cfl.yml Auto-create cfl release tags Push to main (cfl code + feat:/fix:)
auto-release-jtk.yml Auto-create jtk release tags Push to main (jtk code + feat:/fix:)
release-cfl.yml Full cfl release pipeline Tag push cfl-v*
release-jtk.yml Full jtk release pipeline Tag push jtk-v*
chocolatey-publish-cfl.yml Manual Chocolatey publish workflow_dispatch
chocolatey-publish-jtk.yml Manual Chocolatey publish workflow_dispatch
winget-publish-cfl.yml Manual Winget publish workflow_dispatch
winget-publish-jtk.yml Manual Winget publish workflow_dispatch
test-chocolatey.yml Test Chocolatey packaging Push/PR to packaging/**
test-winget.yml Test Winget manifests Push/PR to packaging/**

GoReleaser Configs

  • .goreleaser-cfl.yml and .goreleaser-jtk.yml at repo root
  • Builds for darwin/linux/windows on amd64/arm64
  • Generates .deb, .rpm packages via nfpms
  • Updates Homebrew tap automatically

Packaging Updates

  • All Chocolatey and Winget URLs updated to point to atlassian-cli repo
  • Tag format: {tool}-v{version} (e.g., cfl-v0.9.150, jtk-v0.1.75)

Test plan

  • CI workflow runs with path filtering on this PR
  • GoReleaser configs validate (will test on first release)
  • Chocolatey test workflow passes
  • Winget test workflow passes

Required Secrets (for releases)

Before first release, ensure these secrets are configured:

  • TAP_GITHUB_TOKEN - PAT to push tags + update Homebrew tap
  • CHOCOLATEY_API_KEY - Chocolatey API key
  • WINGET_GITHUB_TOKEN - PAT for Winget PR submissions

Closes #10

Workflows:
- ci.yml: Path-filtered build/test/lint for each tool
- auto-release-{cfl,jtk}.yml: Auto-create tags on feat:/fix: commits
- release-{cfl,jtk}.yml: GoReleaser builds triggered by tags
- chocolatey-publish-{cfl,jtk}.yml: Manual Chocolatey publishing
- winget-publish-{cfl,jtk}.yml: Manual Winget publishing
- test-chocolatey.yml: Validate Chocolatey packaging
- test-winget.yml: Validate Winget manifests

GoReleaser:
- .goreleaser-cfl.yml / .goreleaser-jtk.yml at repo root
- Builds for darwin/linux/windows on amd64/arm64
- Generates .deb, .rpm packages
- Updates Homebrew tap automatically

Packaging updates:
- All URLs point to atlassian-cli repo
- Tag format: {tool}-v{version} (e.g., cfl-v0.9.150)
- Use golangci-lint-action@v7 for golangci-lint v2 support
- Fix PowerShell variable initialization in chocolatey tests
- Use pre-installed winget on windows-latest runners
Copy manifests to temp dir with test values to avoid README.md
being picked up by winget validate.
@rianjs rianjs merged commit 8d6a368 into main Jan 29, 2026
9 checks passed
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.

Set up complete CI/CD for monorepo (Windows, Linux, macOS, multi-arch)

1 participant