Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 0 additions & 54 deletions .github/workflows/re-release.yml

This file was deleted.

111 changes: 66 additions & 45 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,20 @@ name: Release ScyllaDB Java Driver
on:
workflow_dispatch:
inputs:
dryrun:
dry-run:
type: boolean
description: 'dryrun: run without publishing the package'
default: true
description: 'dry-run: run without pushing SCM changes to upstream'
default: false

skip-tests:
type: boolean
description: 'skip-tests: do not run tests while releasing'
default: false

target-tag:
type: string
description: 'target-tag: tag or branch name to release. Use to re-release tagged releases'
default: scylla-4.x

jobs:
release:
Expand All @@ -20,53 +30,64 @@ jobs:
MVNCMD: mvn -B -X -ntp

steps:
- name: Checkout Repository
uses: actions/checkout@v5
- name: Checkout Repository
uses: actions/checkout@v4

- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: '8'
distribution: 'temurin'
server-id: ossrh
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
server-username: OSSRH_USERNAME
server-password: OSSRH_PASSWORD
- name: Checkout Code One Commit Before ${{ inputs.version_tag }}
if: inputs.target-tag != 'scylla-4.x'
env:
RELEASE_TARGET_TAG: ${{ inputs.version_tag }}
run: make checkout-one-commit-before

- name: Configure Git user
run: |
git config user.name "ScyllaDB Promoter"
git config user.email "[email protected]"
- name: Set up Java
uses: actions/setup-java@v5
with:
java-version: '11'
distribution: 'temurin'
server-id: central
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
server-username: SONATYPE_TOKEN_USERNAME
server-password: SONATYPE_TOKEN_PASSWORD
cache: maven

- name: Clean project
run: $MVNCMD clean
- name: Configure Git user
run: |
git config user.name "ScyllaDB Promoter"
git config user.email "[email protected]"

- name: Clean release
run: $MVNCMD release:clean
- name: Prepare release
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
RELEASE_SKIP_TESTS: ${{ inputs.skip-tests }}
run: make release-prepare

- name: Prepare release
env:
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: make release-prepare
- name: Perform release
if: inputs.dry-run == false
env:
RELEASE_SKIP_TESTS: ${{ inputs.skip-tests }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
SONATYPE_TOKEN_USERNAME: ${{ secrets.SONATYPE_TOKEN_USERNAME }}
SONATYPE_TOKEN_PASSWORD: ${{ secrets.SONATYPE_TOKEN_PASSWORD }}
run: make release

- name: Perform release
env:
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
if: ${{ github.event.inputs.dryrun == false }}
run: make release
- name: Perform release dry-run
if: inputs.dry-run == true
env:
RELEASE_SKIP_TESTS: ${{ inputs.skip-tests }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
SONATYPE_TOKEN_USERNAME: ${{ secrets.SONATYPE_TOKEN_USERNAME }}
SONATYPE_TOKEN_PASSWORD: ${{ secrets.SONATYPE_TOKEN_PASSWORD }}
run: make release-dry-run

- name: Perform dry-run release
env:
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
if: ${{ github.event.inputs.dryrun == true }}
run: make release-dry-run
- name: Upload release logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: maven-stdout
path: /tmp/java-driver-release-logs/*.log

- name: Push changes to SCM
if: ${{ github.event.inputs.dryrun == false }}
run: |
git status && git log -3
git push origin --follow-tags -v
- name: Push changes to SCM
if: ${{ inputs.dry-run == false && inputs.target-tag == 'scylla-4.x' }}
run: |
git status && git log -3
git push origin --follow-tags -v
2 changes: 0 additions & 2 deletions .github/workflows/[email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ on:
- "docs/**"
- .github/workflows/docs-pages.yml
- .github/workflows/docs-pr.yml
- .github/workflows/re-release.yml
- .github/workflows/release.yml
- "*.md"
- "*.sh"
Expand All @@ -20,7 +19,6 @@ on:
- "docs/**"
- .github/workflows/docs-pages.yml
- .github/workflows/docs-pr.yml
- .github/workflows/re-release.yml
- .github/workflows/release.yml
- "*.md"
- "*.sh"
Expand Down
48 changes: 32 additions & 16 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,15 @@ CCM_SCYLLA_VERSION ?= master

SCYLLA_EXT_OPTS ?= --smp=2 --memory=4G
MVNCMD ?= mvn -B -X -ntp
GPG_PASSPHRASE ?=
OSSRH_USERNAME ?=

MAVEN_GPG_PASSPHRASE ?=
SONATYPE_TOKEN_USERNAME ?=
SONATYPE_TOKEN_PASSWORD ?=

MAVEN_OPTS ?=

RELEASE_SKIP_TESTS ?=

ifeq (${CCM_CONFIG_DIR},)
CCM_CONFIG_DIR = ~/.ccm
endif
Expand Down Expand Up @@ -153,6 +158,14 @@ resolve-scylla-version: .prepare-get-version
fi
echo "$${SCYLLA_VERSION_RESOLVED}" >${SCYLLA_VERSION_FILE}

checkout-one-commit-before:
@if [[ "${RELEASE_TARGET_TAG}" == 3.* ]]; then
echo "Checking out one commit before ${RELEASE_TARGET_TAG}"
git fetch --prune --unshallow || git fetch --prune || true
git checkout ${RELEASE_TARGET_TAG}~1
git tag -d ${RELEASE_TARGET_TAG}
fi

download-cassandra: .prepare-scylla-ccm resolve-cassandra-version
@if [[ -z "$${CASSANDRA_VERSION_RESOLVED}" ]]; then
CASSANDRA_VERSION_RESOLVED=$$(cat '${CASSANDRA_VERSION_FILE}')
Expand Down Expand Up @@ -180,42 +193,44 @@ download-scylla: .prepare-scylla-ccm resolve-scylla-version
rm -rf /tmp/download.ccm

.require-release-prepare-env:
@if [[ -z "${GPG_PASSPHRASE}" ]]; then
echo "GPG_PASSPHRASE is empty"
@if [[ -z "${MAVEN_GPG_PASSPHRASE}" ]]; then
echo "MAVEN_GPG_PASSPHRASE is empty"
exit 1
fi

.require-release-env:
@if [[ -z "${GPG_PASSPHRASE}" ]]; then
echo "GPG_PASSPHRASE is empty"
@if [[ -z "${MAVEN_GPG_PASSPHRASE}" ]]; then
echo "MAVEN_GPG_PASSPHRASE is empty"
exit 1
fi
if [[ -z "${OSSRH_USERNAME}" ]]; then
echo "OSSRH_USERNAME is empty"
if [[ -z "${SONATYPE_TOKEN_USERNAME}" ]]; then
echo "SONATYPE_TOKEN_USERNAME is empty"
exit 1
fi
if [[ -z "${OSSRH_PASSWORD}" ]]; then
echo "OSSRH_PASSWORD is empty"
if [[ -z "${SONATYPE_TOKEN_PASSWORD}" ]]; then
echo "SONATYPE_TOKEN_PASSWORD is empty"
exit 1
fi

release-prepare: .require-release-prepare-env
@if [[ -n "${RELEASE_SKIP_TESTS}" ]]; then
@if [[ "${RELEASE_SKIP_TESTS}" == "true" ]] || [[ "${RELEASE_SKIP_TESTS}" == "1" ]]; then
export MAVEN_OPTS="${MAVEN_OPTS} -DskipTests=true -DskipITs=true"
fi
$(MVNCMD) release:prepare -DpushChanges=false -Dgpg.passphrase=${GPG_PASSPHRASE}
$(MVNCMD) release:prepare -DpushChanges=false -Dxml-format.skip=true

release: .require-release-env
@if [[ -n "${RELEASE_SKIP_TESTS}" ]]; then
@if [[ "${RELEASE_SKIP_TESTS}" == "true" ]] || [[ "${RELEASE_SKIP_TESTS}" == "1" ]]; then
export MAVEN_OPTS="${MAVEN_OPTS} -DskipTests=true -DskipITs=true"
fi
$(MVNCMD) release:perform -Drelease.autopublish=true -Dgpg.passphrase=${GPG_PASSPHRASE} > >(tee /tmp/logs-stdout.log) 2> >(tee /tmp/logs-stderr.log)
mkdir /tmp/java-driver-release-logs/ 2>/dev/null || true
$(MVNCMD) release:perform -Drelease.autopublish=true > >(tee /tmp/java-driver-release-logs/stdout.log) 2> >(tee /tmp/java-driver-release-logs/stderr.log)

release-dry-run: .require-release-env
@if [[ -n "${RELEASE_SKIP_TESTS}" ]]; then
@if [[ "${RELEASE_SKIP_TESTS}" == "true" ]] || [[ "${RELEASE_SKIP_TESTS}" == "1" ]]; then
export MAVEN_OPTS="${MAVEN_OPTS} -DskipTests=true -DskipITs=true"
fi
$(MVNCMD) release:perform -Dgpg.passphrase=${GPG_PASSPHRASE} > >(tee /tmp/logs-stdout.log) 2> >(tee /tmp/logs-stderr.log)
mkdir /tmp/java-driver-release-logs/ 2>/dev/null || true
$(MVNCMD) release:perform > >(tee /tmp/java-driver-release-logs/stdout.log) 2> >(tee /tmp/java-driver-release-logs/stderr.log)

compile-all: .install-guava-shaded
mvn -B compile test-compile -Dfmt.skip=true -Dclirr.skip=true -Danimal.sniffer.skip=true
Expand Down Expand Up @@ -264,6 +279,7 @@ clean:
find -name 'pom.xml.next' -delete
find -name 'target' -exec rm -rf {} +
find -name 'dependency-reduced-pom.xml' -exec rm -f {} +
rm -f release.properties 2>/dev/null
for dir in driver-core driver-examples driver-extras driver-mapping driver-tests driver-dist testing; do
rm -rf $$dir 2>/dev/null
done
Original file line number Diff line number Diff line change
Expand Up @@ -147,17 +147,23 @@ default Map<String, String> getStringMap(
}

/**
* @return a size in bytes. This is separate from {@link #getLong(DriverOption)}, in case
* implementations want to allow users to provide sizes in a more human-readable way, for
* example "256 MB".
* This is separate from {@link #getLong(DriverOption)}, in case implementations want to allow
* users to provide sizes in a more human-readable way, for example "256 MB".
*
* @return a size in bytes
*/
long getBytes(@NonNull DriverOption option);

default long getBytes(@NonNull DriverOption option, long defaultValue) {
return isDefined(option) ? getBytes(option) : defaultValue;
}

/** @see #getBytes(DriverOption) */
/**
* Returns a list of sizes in bytes.
*
* @see #getBytes(DriverOption)
* @return list of sizes
*/
@NonNull
List<Long> getBytesList(DriverOption option);

Expand Down
Loading
Loading