Files
stacks-puppet-node/docs/ci-release.md
wileyj 8a7a371227 Update github action CI workflow (#3199)
* Updating Github Action

- build all release images from binaries
- create checksum of binary artifacts for release
- adds clippy and crate advisory actions
- update all dockerfiles to use ramdisk for building
- separate actions to relevant files
- adds arm64 binaries/docker image
- update all debian builds to use bullseye (latest debian)

* only run btc int tests on default branch

* enable btc int test on develop

* Feat/update ci (#38)

* Updating Github Action

- build all release images from binaries
- create checksum of binary artifacts for release
- adds clippy and crate advisory actions
- update all dockerfiles to use ramdisk for building
- separate actions to relevant files
- adds arm64 binaries/docker image
- update all debian builds to use bullseye (latest debian)

* only run btc int tests on default branch

* final action test

disabled a lot of the long-running tests

* Update ci.yml

* Update ci.yml

* Update bitcoin-tests.yml

* Update bitcoin-tests.yml

* run on push to master (merge)

* Update Github Actions

- build all release images from binaries
- create checksum of binary artifacts for release
- adds clippy and crate advisory actions
- update all dockerfiles to use ramdisk for building
- separate actions to relevant files
- adds arm64 binaries/docker image
- update all debian builds to use bullseye (latest debian)

* adding  build features to dockerfiles

* update repo org to stacks-network

missed a ref to wileyj forked repo

* addressing comments in pr 3199

see https://github.com/stacks-network/stacks-blockchain/pull/3199 for changes requested

* cleaning up docker tags

prevent overwriting of docker image branch tags

* disabling audit workflow

disabling this workflow until we can test further

* Adding a release file

* Update to trigger logic

Updating the logic of how/when builds and releases happen based on comments in PR.
Updated the RELEASING.md file to reflect these changes

* chore: delete circle.yml

CircleCI hasn't been used in 11+ months.

Fixes #3072

* switch repo&owner to var

remove hardcoded value in favor or `GITHUB_REPOSITORY`

* use local workflows

* fix: don't assume that the bitcoin node always gives a non-zero number of headers

* fix: add unit test and change log entry

* fix: Exclude benchmarks from compilation

* fix: Resolve conflicts and the remaining two errors

* clean: remove benchmark files

* fix: use explicit version number

* minor update to reconcile diffs

since some files were renamed, some minor changes had to be made manually here, i.e. fail_ci_if_error: false

* hardcode some vals for testing

* revert

* use org/repo locations for jobs

testing the locally built packages/docker images is successful, this reverts those changes need for testing the resulting artifacts

* Moving file to docs dir

* continue build if unit-tests fail

use current settings from master branch

* 3199 - minor updates for recent upstream changes

---------

Co-authored-by: Diwaker Gupta <15990+diwakergupta@users.noreply.github.com>
Co-authored-by: Jude Nelson <judecn@gmail.com>
Co-authored-by: Stjepan Golemac <stjepan.golemac@gmail.com>
2023-06-06 13:43:41 -07:00

6.0 KiB

Releases

All releases are built via a Github Actions workflow named CI, and is responsible for building binary archives, checksums, and resulting docker images. This workflow will also trigger any tests that need to be run, like integration tests.

  1. Releases are only created if a tag is manually provided when the ci workflow is triggered.
  2. Pushing a new feature branch: Nothing is triggered automatically. PR's are required, or the ci workflow can be triggered manually on a specific branch to build a docker image for the specified branch.

The following workflow steps are currently disabled:

  • Clippy
  • Net-test
  • Crate audit

TL;DR

  1. A PR will produce a single image built from source on Debian with glibc with 2 tags:
    • stacks-blockchain:<branch-name>
    • stacks-blockchain:<pr-number>
  2. A merged PR from develop to the default branch will produce a single image built from source on Debian with glibc:
    • stacks-blockchain:<default-branch-name>
  3. An untagged build of any branch will produce a single image built from source on Debian with glibc:
    • stacks-blockchain:<branch-name>
  4. A tagged release on a non-default branch will produce 2 versions of the docker image (along with all binary archives):
    • An Alpine image for several architectures tagged with:
      • stacks-blockchain:<x.x.x.x.x>
    • An Debian image for several architectures tagged with:
      • stacks-blockchain:<x.x.x.x.x-debian>
  5. A tagged release on the default branch will produce 2 versions of the docker image (along with all binary archives):
    • An Alpine image for several architectures tagged with:
      • stacks-blockchain:<x.x.x.x.x>
      • stacks-blockchain:<latest>
    • An Debian image for several architectures tagged with:
      • stacks-blockchain:<x.x.x.x.x-debian>
      • stacks-blockchain:<latest-debian>

Release workflow:

  1. Create a feature branch: feat/112-fix-something
  2. PR feat/112-fix-something to the develop branch
    1. CI Workflow is automatically triggered, resulting in a pushed docker image tagged with the branch name and PR number
  3. PR develop to the default branch
    1. CI Workflow is automatically triggered, resulting in a pushed docker image tagged with the branch name and PR number
  4. Merge develop branch to the default branch
    1. CI Workflow is triggered, resulting in a pushed docker image tagged with the default branch name
  5. CI workflow is manually triggered on non-default branch with a version, i.e. 2.1.0.0.0-rc0
    1. Github release for the manually input version is created with binaries
    2. Docker image pushed with tags of the input version and branch
  6. CI workflow is manually triggered on default branch with a version, i.e. 2.1.0.0.0
    1. Github release for the manually input version is created with binaries
    2. Docker image pushed with tags of the input version and latest

PR a branch to develop:

ex: Branch is named feat/112-fix-something and the PR is numbered 112

  • Steps executed:
    • Rust Format
    • Integration Tests
    • Leaked credential test
    • Docker image is built from source on a debian distribution and pushed with the branch name and PR number as tags
    • ex:
      • stacks-blockchain:feat-112-fix-something
      • stacks-blockchain:pr-112
  • Steps not executed:
    • No binaries are built
    • No github release
    • No docker images built from binary artifacts

Merging a branch to develop:

Nothing is triggered automatically

PR develop to master branches:

ex: Branch is named develop and the PR is numbered 113

  • Steps executed:
    • Rust format
    • Integration tests
    • Leaked credential test
    • Docker image is built from source on a debian distribution and pushed with the branch name and PR number as tags
    • ex:
      • stacks-blockchain:develop
      • stacks-blockchain:pr-113
  • Steps not executed:
    • No binaries are built
    • No github release
    • No docker images built from binary artifacts

Merging a PR from develop to master:

  • Steps executed:
    • Rust format
    • Integration tests
    • Leaked credential test
    • Docker image is built from source on a debian distribution and pushed with the branch name as a tag
    • ex:
      • stacks-blockchain:master
  • Steps not executed:
    • No binaries are built
    • No github release
    • No docker images built from binary artifacts

Manually triggering workflow without tag (any branch):

  • Steps executed:
    • Rust format
    • Integration tests
    • Leaked credential test
    • Docker image is built from source on a debian distribution and pushed with the branch name as a tag
    • ex:
      • stacks-blockchain:<branch name>
  • Steps not executed:
    • No binaries are built
    • No github release
    • No docker images built from binary artifacts

Manually triggering workflow with tag on a non-default branch (i.e. tag of 2.1.0.0.0-rc0):

  • Steps executed:
    • Rust format
    • Integration tests
    • Leaked credential test
    • Binaries built for specified architectures
      • Archive and checksum files added to github release
    • Github release (with artifacts/checksum) is created using the manually input tag
    • Docker image built from binaries on debian/alpine distributions and pushed with the provided input tag and latest
    • ex:
      • stacks-blockchain:2.1.0.0.0-rc0
  • Steps not executed:
    • No docker images built from source

Manually triggering workflow with tag on default branch (i.e. tag of 2.1.0.0.0):

  • Steps executed:
    • Rust format
    • Integration tests
    • Leaked credential test
    • Binaries built for specified architectures
      • Archive and checksum files added to github release
    • Github release (with artifacts/checksum) is created using the manually input tag
    • Docker image built from binaries on debian/alpine distributions and pushed with the provided input tag and latest
    • ex:
      • stacks-blockchain:2.1.0.0.0-debian
      • stacks-blockchain:latest-debian
      • stacks-blockchain:2.1.0.0.0
      • stacks-blockchain:latest
  • Steps not executed:
    • No docker images built from source