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

Improve: Consolidate artifact build process for all environments & Add Workflow for preparing release branch #4256

Merged

Commits on Jul 3, 2023

  1. Prepare CMakeLists.txt for unified builds

    - Remove CI_BUILD Cmake variable.
    - Convert CI_TAG from ENV variable to CMake variable
    - CI_VERSION_PRE_RELEASE can be set in non CI builds
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    0bb682b View commit details
    Browse the repository at this point in the history
  2. Prepare build.sh and node Dockerfile for unified builds

    - add CI_TAG and CI_VERSION_PRE_RELEASE to build.sh
    - add useful ARG with default values to Dockerfile so they can be passed to the build.sh script
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    50d7093 View commit details
    Browse the repository at this point in the history
  3. Prepare WIndows for unified builds

    - remove CI_BUILD
    - convert DCI_TAG from ENV to CMake variable
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    dd56958 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    f25d684 View commit details
    Browse the repository at this point in the history
  5. Make docker builds and deploys more modular

    - Remove dependency on the workflow name
    - COnvert $GITHUB_WORKFLOW to $NETWORK
    - Create smaller functions with limited scope
    - Create similar deploy functions for docker and github container registries (hub.docker and ghcr)
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    b86b65b View commit details
    Browse the repository at this point in the history
  6. Create unified workflow to build TEST BETA and LIVE artifacts

    - Remove old workflows
    - Create 1 workflow for all environments (Network Matrix)
    - Keep current build logic (build scripts still differ per OS)
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    02afcb6 View commit details
    Browse the repository at this point in the history
  7. Remove hardcoded repo from build and deploy scripts

    - skip hub.docker deploys if DOCKER_PASSWORD is not provided
    - Create DOCKER_HUB variable which defaults to nanocurrency (backwards compatible)
    - Create DOCKER_USER variable which defaults to nanoreleaseteam (backwards compatible)
    
    - create S3_BUCKET_NAME variable that defaults to repo.nano.org if not provided (backwards compatible)
    - only use S3_BUILD_DIRECTORY if provided
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    847427e View commit details
    Browse the repository at this point in the history
  8. Make workflow repository agnostic

    Convert nanocurrency/nano-env image to self built ghcr.io/${{ github.repository }} image
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    e958a40 View commit details
    Browse the repository at this point in the history
  9. Fix CI_TAG usage

    - convert ref to CI_TAG
    - use CI_TAG in aws deploys
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    bacd496 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    f6e5955 View commit details
    Browse the repository at this point in the history
  11. Fix docker login

    - add possibility to specify registry
    - use ghcr.io instead of variable for ghcr_image_name
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    f4dd847 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    ea96554 View commit details
    Browse the repository at this point in the history
  13. Use config variables instead of secrets for non secret variables

    - vars.S3_BUCKET_NAME
    - vars.S3_BUILD_DIRECTORY
    - vars.DOCKER_REGISTRY
    - vars.DOCKER_USER
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    3ef0689 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    79ad3dd View commit details
    Browse the repository at this point in the history
  15. Make tag generation branch agnostic

    The goal is to simplify tag generation process and commit the version_pre_release into CMakeLists.txt for each tag.
    If a user checks out a specific tag and builds it, the version_pre_release is set correctly.
    
    - remove workflow_dispatch inputs. It operates on the selected branch.
    - The cronjob is executed on develop branch only.
    - replace ci/actions/dev-build-tag-gen.sh with ci/actions/generate_next_git_tag.sh
    - generate_next_git_tag.sh is branch agnostic and operates on  ${{ github.ref }}
    - generate_next_git_tag.sh succeeds even if no new tag is generated
    - the workflow only executes the build jobs if a new tag was created (if: ${{ needs.prepare_build.outputs.TAG_CREATED == 'true' }})
    - generate_next_git_tag.sh uses V${current_version_major}.${current_version_minor}${branch_name} for tags.
    - for "develop" branch_name is converted to DB --> (e.g V26.0DB1)
    - generate_next_git_tag.sh uses a -c flag that is responsible to update CMakeLists.txt with correct version_pre_release, create and push the tag to origin.
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    0381beb View commit details
    Browse the repository at this point in the history
  16. Remove CI_VERSION_PRE_RELEASE as it has been committed to CMakeLists.…

    …txt in the tag used to build the node
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    2c936ef View commit details
    Browse the repository at this point in the history
  17. Use the new prepare scripts

    - use the new prepare scripts (Linux, MacOS & Windows)
    - remove the need the dependency on nano-env:gcc
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    14bf659 View commit details
    Browse the repository at this point in the history
  18. Make usage of nano-env:rhel explicit

    - Build the nano-env docker image in the current workflow
    - Use the locally built image.
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    b390221 View commit details
    Browse the repository at this point in the history
  19. Fix typo in default BUILD_TYPE

    - Remove duplicate BUILD_TYPE
    - move SANITIZER to ci/build-node.sh ARGs
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    06cf680 View commit details
    Browse the repository at this point in the history
  20. Make sure the existing_tags ending is numeric

    - fixes a bug when we have 2 similar branches with tags (e.g. some-branch and some-branch-2)
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    a30b304 View commit details
    Browse the repository at this point in the history
  21. Remove --global for git config

    Prevent modification of global git settings on a developer machine
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    f22ba6a View commit details
    Browse the repository at this point in the history
  22. Handling release branches differently.

    - refactored script by making it more modular
    - script expects releases to be made from a branch called `releases/v{Major}`
    - add -i flag to indicate wether or not to increment the generated tag
    - -i increments version_minor for release branches: tag --> V{Major}.{Minor + increment}
    - -i increments version_pre_release for all other non-release branches: tag --> V{Major}.{Minor}{branch_name}{pre_release + increment}
    - -o outputs either `version_pre_release` or `version_minor` depending on the branch
    
    Prevent incrementing if no tag exists yet
    
    - make sure V{Major}.0 is created even if the user forgets to set increment to 0
    
    Make tag_created=true explicit
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    77ca7cb View commit details
    Browse the repository at this point in the history
  23. Prevent output file from being created when -o is not provided

    - by redefining local output=$1 it is set to 0 instead of "" and a file called 0 was created
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    e4c150b View commit details
    Browse the repository at this point in the history
  24. Configuration menu
    Copy the full SHA
    2f6ee01 View commit details
    Browse the repository at this point in the history
  25. Add increment input to the workflow and force push if tag is unchanged

    - increment is 1 by default
    - if increment is 0, an existing tag will be updated (origin push -f).
    
    fixup! Add increment input to the workflow
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    aa49010 View commit details
    Browse the repository at this point in the history
  26. Allow tag creation without file changes

    - the first tag of a releases/ branch creates no changes
    - a tag run with increment=0 creates no changes
    in both cases we want to create the tag (again)
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    105fd39 View commit details
    Browse the repository at this point in the history
  27. feat: implement workflow to prepare for a new major software release

    - Checks out the repository based on github.ref.
    - Extracts and sets current major and minor versions from CMakeLists.txt of github.ref.
    - Fetches the default branch name and sets it as an output.
    - Checks for existence of a corresponding release branch. If present, the workflow aborts, if not, it continues and sets the new release branch name.
    - Increments the major version in CMakeLists.txt on the default branch, commits this change, and pushes it back.
    - Checks out a new release branch, sets the pre-release version to 0 in CMakeLists.txt, commits this change, and pushes the new branch to the repository.
    
    fix: Configure git and fix output variables
    
    Change the order of steps to make the flow more natural
    
    Fix curl DEFAULT_BRANCH
    
    fix
    
    fix
    gr0vity-dev committed Jul 3, 2023
    Configuration menu
    Copy the full SHA
    2085d64 View commit details
    Browse the repository at this point in the history

Commits on Jul 11, 2023

  1. Configuration menu
    Copy the full SHA
    b7e979a View commit details
    Browse the repository at this point in the history
  2. Remove increment input from workflow

    - Autodetect if we need to increment the version or not on the release branch
    Expected behaviour :
    - Running the workflow multiple times without a new commit will rebuild and republish the same artifacts
    - Running the workflow after a new commit was made to the releases branch will increment version_minor by 1
      - the version_minor is updated in CMakeLists.txt and committed to the release branch
      - a new tag is created and pushed with the incremented version_minor
    - Make logic for both release and other branches more obvious
    
     --> TODO?: instead of force pushing, we could remove -f option if branch or tag already exist
    gr0vity-dev committed Jul 11, 2023
    Configuration menu
    Copy the full SHA
    2a4fed7 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e6d115e View commit details
    Browse the repository at this point in the history

Commits on Jul 16, 2023

  1. Configuration menu
    Copy the full SHA
    e61ea84 View commit details
    Browse the repository at this point in the history
  2. Apply suggestions from PR review (2/2)

    Convert if/else into case..in
    gr0vity-dev committed Jul 16, 2023
    Configuration menu
    Copy the full SHA
    148ec83 View commit details
    Browse the repository at this point in the history