Skip to content

ci: run make check on every change and publish releases with gh - #25

Merged
nabil1440 merged 2 commits into
blockers/16-makefilefrom
blockers/7-ci
Sep 22, 2026
Merged

nabil1440 merged 2 commits into
blockers/16-makefilefrom
blockers/7-ci

Conversation

@nabil1440

@nabil1440 nabil1440 commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Change

  • ci.yml runs make check and make release on each pull request and on each push to develop and main.
    • The repository is public. Thus, these runs do not use the organization's GitHub Actions minutes.
    • The trigger includes all pull requests, because stacked pull requests target each other and not develop.
  • build.yml (the release workflow) is now one job:
    1. It makes sure that the tag commit is on main. If it is not, the release stops.
    2. It runs make check.
    3. It runs make release with the tag as VERSION.
    4. It runs gh release create with the two archives and checksums.txt. The release title is the tag.
  • A tag with a pre-release suffix (for example v0.2.0-rc.1) becomes a pre-release. /releases/latest does not return a pre-release, thus installed CLIs do not update to it.
  • A pre-release tag can come from any branch. Only a tag without a suffix must be on main.
  • make dev-version shows <next minor version>-dev.<short commit>, for example v0.2.0-dev.1a2b3c4. make dev-release tags the commit with it and pushes the tag. Then CI publishes the pre-release.
  • make dev-release refuses uncommitted changes and commits that are not pushed. It also refuses a commit if its release workflow would publish the tag as a full release.
  • The workflows use actions/checkout@v7 and actions/setup-go@v7. This PR removes the archived create-release and upload-release-asset actions.
  • This PR removes build.sh, because no workflow calls it now.
  • The README documents CI, the release steps, dev pre-releases and how to install a dev pre-release on a test server.

Caution

CAUTION: DO NOT CHANGE THE NAMES OR THE CONTENTS OF THE RELEASE ASSETS. IF YOU CHANGE THEM, THE INSTALLED CLIS CANNOT RUN fly update.

  • This PR keeps the asset names fly-linux-<arch>.tar.gz and the binary names fly-linux-<arch> in the archives.

Tests

  • actionlint finds no problems in the two workflows.
  • A bash test of the release steps with gh replaced by a stub:
    • A tag on origin/main passes the tag check. The top of this stack stops with the error.
    • v0.2.0 gives a release. v0.2.0-rc.1 gives a pre-release.
  • gh release create --help shows each flag that the workflow uses.
  • make check passes on this branch.
  • make dev-version shows v0.2.0-dev.<sha>, and DEV_BASE changes the version part.
  • make dev-release refuses uncommitted changes and a commit that is not pushed. The check of the release workflow refuses the lower layers of this stack and accepts this layer.
  • The CI run on this pull request is the first real test of ci.yml.

The first real test of the release workflow is the next tag on main.

Closes #7

@nabil1440
nabil1440 added this pull request to stack #24 September 22, 2026 04:16
- ci.yml: run make check and make release on every pull request and
  on pushes to develop and main. GitHub Actions are free for this
  public repository.
- build.yml (release): one job on actions/checkout@v7 and
  actions/setup-go@v7. It checks that the tag is on main, runs
  make check, builds with make release VERSION=<tag> and publishes
  with gh release create: both archives plus checksums.txt, titled
  with the tag. A tag with a pre-release suffix becomes a pre-release,
  so installed CLIs do not update to it.
- Remove the archived create-release and upload-release-asset actions
  and the build.sh wrapper, which nothing calls now.
- README: document CI and the release steps.

Asset names and the archive layout are unchanged.

Closes #7
- make dev-version prints <next minor>-dev.<short commit>, for example
  v0.2.0-dev.1a2b3c4. DEV_BASE overrides the version part.
- make dev-release tags HEAD with it and pushes the tag. It refuses
  uncommitted changes, commits that are not pushed, and commits whose
  release workflow would publish the tag as a full release.
- The Release workflow allows pre-release tags from any branch. It
  publishes them as pre-releases, so /releases/latest (and so
  fly update and install.sh) never returns them. Release tags without
  a suffix must still be on main.
- README: document dev pre-releases and how to install one on a
  test server.

Part of #7
@nabil1440
nabil1440 merged commit 36260f0 into develop Sep 22, 2026
2 of 3 checks passed
@nabil1440
nabil1440 deleted the blockers/7-ci branch September 22, 2026 06:44
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.

enhancement(ci): add checks for pull requests and replace the archived release actions

1 participant