Skip to content

docs(workflows): [INFRA-437] add multi-ecosystem examples and CI/CD documentation#183

Open
arrowplum wants to merge 23 commits intomainfrom
chore/add-npm-and-java-to-example-workflows
Open

docs(workflows): [INFRA-437] add multi-ecosystem examples and CI/CD documentation#183
arrowplum wants to merge 23 commits intomainfrom
chore/add-npm-and-java-to-example-workflows

Conversation

@arrowplum
Copy link
Copy Markdown
Contributor

@arrowplum arrowplum commented Mar 25, 2026

Summary

  • Add npm and Java/Maven support to example workflows alongside existing C and .NET coverage
  • Extract release bundle lifecycle steps into reusable composite actions
  • Add CI/CD documentation for both composable and orchestrated pipeline approaches

Jira

https://aerospike.atlassian.net/browse/INFRA-437

Changes

Example workflows

  • Add NpmHelloWorld and JavaHelloWorld test apps under execute-build/test_apps/
  • Wire npm and Java build jobs into example_artifacts-cicd.yaml, example_composable-matrix.yaml, and example_reusable-integration.yaml
  • Add deb/rpm packaging via public FPM container in composable matrix example

Composite actions

Adding the bundling behaviour in the example workflow highlit a bunch of custom steps that could be extracted into actions. Collect and promote were two that even though fairly trivial had been done in user's own workflows.

  • collect-build-artifacts: merge per-matrix GitHub artifacts into a single artifact
  • create-release-bundle: create a JFrog release bundle from build specs
  • delete-release-bundle: check for and delete existing bundle versions before re-deploy
  • promote-release-bundle: promote a bundle to a target environment
  • reusable_create-release-bundle.yaml now delegates to the composite action

Tests

  • Add bats tests for npm package upload routing (scoped and unscoped)
  • Add bats tests for Java/Maven JAR uploads and metadata extraction
  • Add all-architecture DEB package fixture and validation

Documentation

  • CICD-composable.md: composable workflow guide with build-info architecture and matrix patterns
  • CICD-standard.md: orchestrated workflow guide with matrix-json usage and ecosystem setup

Test plan

  • Run dispatch on example workflows (also run automatically on push to main)
  • bats .github/workflows/deploy-artifacts/tests/bats/ passes locally

@arrowplum arrowplum requested a review from a team as a code owner March 25, 2026 02:11
… actions

Add delete-release-bundle, create-release-bundle, and
promote-release-bundle composite actions. Collapse three
separate jobs into a single release-bundle job in the
example workflow. Reusable workflow delegates to the
composite action.
Comment on lines +106 to +115
# Our internal FPM containers require separate OIDC auth (see INFRA-430).
# The fpm-extra matrix field embeds the distro identifier so deploy-artifacts
# can identify the deb codename (see get_codename_for_deb in package_utils.sh).
# Output follows Aerospike package naming guidelines.
docker run --rm \
-v "$PWD/build:/work" -w /work \
tenzer/fpm \
-s dir -t "$PKG_TYPE" -n hi -v "$VERSION" -a native \
${{ matrix.fpm-extra }} \
--prefix /usr/bin \
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

See comment. Needs to shift to our own build container once oidc is working.

@arrowplum arrowplum changed the title chore(workflows): add npm and Java builds to example workflows INFRA-437: Add multi-ecosystem examples and CI/CD documentation Mar 27, 2026
@arrowplum arrowplum changed the title INFRA-437: Add multi-ecosystem examples and CI/CD documentation docs(workflows): [INFRA-437] add multi-ecosystem examples and CI/CD documentation Mar 27, 2026
--bundle-name "${{ inputs.jf-bundle-name }}" \
--version "${{ inputs.version }}" \
$dry_run_arg
uses: ./shared-workflows/.github/actions/create-release-bundle
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Should you still use ${{ inputs.gh-checkout-path }} here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No one of the restrictions with extracting them to actions was that we can't have that path be dynamic (apparently)

version: ${{ inputs.version }}
jf-project: ${{ inputs.jf-project }}
dry-run: ${{ inputs.dry-run }}
entrypoint-path: shared-workflows/.github/workflows/create-release-bundle/entrypoint.sh
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Same here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Same here

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.

2 participants