Skip to content

Add GitHub Actions release/snapshot workflows (JFrog Pipelines EOL migration) - #455

Open
agrasth wants to merge 3 commits into
masterfrom
gha-release-snapshot-workflows
Open

Add GitHub Actions release/snapshot workflows (JFrog Pipelines EOL migration)#455
agrasth wants to merge 3 commits into
masterfrom
gha-release-snapshot-workflows

Conversation

@agrasth

@agrasth agrasth commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Summary

JFrog Pipelines is EOL, so this ports the two pipelines defined under release/ to GitHub Actions workflows:

  • .github/workflows/release.yml ports release/pipelines.release.yml (release_java_client): manual (workflow_dispatch) release that bumps gradle.properties, tags and pushes master, publishes to Artifactory (ecosys-oss-release-local), distributes a release bundle, publishes to Maven Central, then bumps dev to the next development version.
  • .github/workflows/snapshot.yml ports release/pipelines.snapshot.yml (create_artifactory_java_client_snapshot): runs on every push to dev (matching the javaClientSnapshotGit GitRepo resource in release/pipelines.resources.yml, which tracks dev) plus manual workflow_dispatch, and publishes a snapshot build to Artifactory (ecosys-oss-snapshot-local) and JFrog Distribution.

Every step from both pipeline scripts was ported faithfully (env vars, jf config, gradle invocations, git tagging/branch juggling, release-bundle create/distribute, Maven Central publish).

Branch determination

release/pipelines.resources.yml shows the javaClientReleaseGit resource tracks master, and the release script itself does an explicit git checkout master as its first git operation (it only touches dev at the very end, to bump the next development version). So master is the pipeline's actual release target and is what release.yml checks out and pushes to. The snapshot pipeline's resource (javaClientSnapshotGit) tracks dev, so snapshot.yml triggers on push to dev and checks that out. This PR is based on master, matching the release pipeline's real operating branch (and GitHub's configured default branch).

Deliberate behavior change

Both workflows use jfrog/setup-jfrog-cli@v4 to install the JFrog CLI instead of the pipeline's curl -fL https://install-cli.jfrog.io | sh. The snapshot pipeline's env -i PATH=$PATH HOME=$HOME ... wrapper around the gradle build was also dropped — it existed to reset the pipeline container's environment and isn't needed on a clean ubuntu-latest runner.

Judgment calls

  • Added git config user.name / user.email in release.yml before committing — the JFrog Pipelines image had this preconfigured; GitHub-hosted runners don't.
  • NEXT_VERSION, NEXT_DEVELOPMENT_VERSION, and AUDIT_FAIL (previously pipeline run-time variables) became workflow_dispatch inputs on release.yml.
  • Added a .gradle cache step in snapshot.yml mirroring the pipeline's restore_cache_files/add_cache_files gradle cache.

Required secrets

JFrog Pipelines integration GitHub secret(s)
il_automation IL_AUTOMATION_TOKEN
ecosys_entplus_deployer ARTIFACTORY_URL, ARTIFACTORY_USER, ARTIFACTORY_APIKEY
mvn_central MVN_CENTRAL_USER, MVN_CENTRAL_PASSWORD, MVN_CENTRAL_SIGNING_KEY, MVN_CENTRAL_SIGNING_PASSWORD

Not run yet — needs secrets added first.

…gration)

Ports release/pipelines.release.yml (release_java_client) and
release/pipelines.snapshot.yml (create_artifactory_java_client_snapshot)
to .github/workflows, since JFrog Pipelines is EOL.
Move the run: step bodies of release.yml and snapshot.yml into
.github/scripts/release.sh and .github/scripts/snapshot.sh so the same
logic can be executed locally by exporting the documented env vars,
not just from GitHub Actions. Non-shell steps (checkout, setup-java,
setup-jfrog-cli, cache) are unchanged; behavior is preserved exactly.
The /api/system/encrypt call triggered by --user/--password returns 403
on this instance even though the same credential works fine otherwise
(confirmed via direct ping test). --access-token skips that call.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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