Skip to content

Commit 1e8d1b5

Browse files
added GHA stub to trigger checking
Signed-off-by: Matt Peterson <[email protected]>
1 parent 95ecf20 commit 1e8d1b5

File tree

4 files changed

+228
-0
lines changed

4 files changed

+228
-0
lines changed

.github/workflows/release-push-image.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,14 @@ env:
4343
REGISTRY: ghcr.io
4444

4545
jobs:
46+
check-gradle:
47+
name: Gradle
48+
uses: ./.github/workflows/zxc-verify-gradle-build-determinism.yaml
49+
with:
50+
ref: ${{ github.event.inputs.ref || '' }}
51+
java-distribution: ${{ inputs.java-distribution || 'temurin' }}
52+
java-version: ${{ inputs.java-version || '21.0.4' }}
53+
4654
publish:
4755
runs-on: block-node-linux-medium
4856

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
#!/usr/bin/env bash
2+
set -o pipefail
3+
set +e
4+
5+
readonly RELEASE_LIB_PATH="hedera-node/data/lib"
6+
readonly RELEASE_APPS_PATH="hedera-node/data/apps"
7+
8+
GROUP_ACTIVE="false"
9+
10+
function fail {
11+
printf '%s\n' "$1" >&2 ## Send message to stderr. Exclude >&2 if you don't want it that way.
12+
if [[ "${GROUP_ACTIVE}" == "true" ]]; then
13+
end_group
14+
fi
15+
exit "${2-1}" ## Return a code specified by $2 or 1 by default.
16+
}
17+
18+
function start_group {
19+
if [[ "${GROUP_ACTIVE}" == "true" ]]; then
20+
end_group
21+
fi
22+
23+
GROUP_ACTIVE="true"
24+
printf "::group::%s\n" "${1}"
25+
}
26+
27+
function end_group {
28+
GROUP_ACTIVE="false"
29+
printf "::endgroup::\n"
30+
}
31+
32+
function log {
33+
local message="${1}"
34+
shift
35+
# shellcheck disable=SC2059
36+
printf "${message}" "${@}"
37+
}
38+
39+
function log_line {
40+
local message="${1}"
41+
shift
42+
# shellcheck disable=SC2059
43+
printf "${message}\n" "${@}"
44+
}
45+
46+
function start_task {
47+
local message="${1}"
48+
shift
49+
# shellcheck disable=SC2059
50+
printf "${message} .....\t" "${@}"
51+
}
52+
53+
function end_task {
54+
printf "%s\n" "${1:-DONE}"
55+
}
56+
57+
start_group "Configuring Environment"
58+
# Access workflow environment variables
59+
export GITHUB_WORKSPACE GITHUB_SHA GITHUB_OUTPUT MANIFEST_PATH
60+
61+
start_task "Initializing Temporary Directory"
62+
TEMP_DIR="$(mktemp -d)" || fail "ERROR (Exit Code: ${?})" "${?}"
63+
trap 'rm -rf "${TEMP_DIR}"' EXIT
64+
end_task "DONE (Path: ${TEMP_DIR})"
65+
66+
# start_task "Resolving the GITHUB_WORKSPACE path"
67+
# # Ensure GITHUB_WORKSPACE is provided or default to the repository root
68+
# if [[ -z "${GITHUB_WORKSPACE}" || ! -d "${GITHUB_WORKSPACE}" ]]; then
69+
# GITHUB_WORKSPACE="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../../../" && pwd)"
70+
# fi
71+
# end_task "DONE (Path: ${GITHUB_WORKSPACE})"
72+
#
73+
# start_task "Resolving the GITHUB_OUTPUT path"
74+
# # Ensure GITHUB_OUTPUT is provided or default to the repository root
75+
# if [[ -z "${GITHUB_OUTPUT}" ]]; then
76+
# GITHUB_OUTPUT="${TEMP_DIR}/workflow-output.txt"
77+
# fi
78+
# end_task "DONE (Path: ${GITHUB_OUTPUT})"
79+
#
80+
# start_task "Resolving the GITHUB_SHA hash"
81+
# if [[ -z "${GITHUB_SHA}" ]]; then
82+
# GITHUB_SHA="$(git rev-parse HEAD | tr -d '[:space:]')" || fail "ERROR (Exit Code: ${?})" "${?}"
83+
# fi
84+
# end_task "DONE (Commit: ${GITHUB_SHA})"
85+
#
86+
# start_task "Resolving the MANIFEST_PATH variable"
87+
# if [[ -z "${MANIFEST_PATH}" ]]; then
88+
# MANIFEST_PATH="${GITHUB_WORKSPACE}/.manifests/gradle"
89+
# fi
90+
# end_task "DONE (Path: ${MANIFEST_PATH})"
91+
#
92+
# start_task "Ensuring the MANIFEST_PATH location is present"
93+
# if [[ ! -d "${MANIFEST_PATH}" ]]; then
94+
# mkdir -p "${MANIFEST_PATH}" || fail "ERROR (Exit Code: ${?})" "${?}"
95+
# fi
96+
# end_task
97+
#
98+
# start_task "Checking for the sha256sum command"
99+
# if command -v sha256sum >/dev/null 2>&1; then
100+
# SHA256SUM="$(command -v sha256sum)" || fail "ERROR (Exit Code: ${?})" "${?}"
101+
# else
102+
# fail "ERROR (Exit Code: ${?})" "${?}"
103+
# fi
104+
# end_task "DONE (Found: ${SHA256SUM})"
105+
#
106+
# start_task "Checking for prebuilt libraries"
107+
# ls -al "${GITHUB_WORKSPACE}/${RELEASE_LIB_PATH}"/*.jar >/dev/null 2>&1 || fail "ERROR (Exit Code: ${?})" "${?}"
108+
# end_task "FOUND (Path: ${GITHUB_WORKSPACE}/${RELEASE_LIB_PATH}/*.jar)"
109+
#
110+
# start_task "Checking for prebuilt applications"
111+
# ls -al "${GITHUB_WORKSPACE}/${RELEASE_APPS_PATH}"/*.jar >/dev/null 2>&1 || fail "ERROR (Exit Code: ${?})" "${?}"
112+
# end_task "FOUND (Path: ${GITHUB_WORKSPACE}/${RELEASE_APPS_PATH}/*.jar)"
113+
end_group
114+
115+
#start_group "Generating Library Hashes (${GITHUB_WORKSPACE}/${RELEASE_LIB_PATH}/*.jar)"
116+
# pushd "${GITHUB_WORKSPACE}/${RELEASE_LIB_PATH}" >/dev/null 2>&1 || fail "PUSHD ERROR (Exit Code: ${?})" "${?}"
117+
# ${SHA256SUM} -b -- *.jar | sort -k 2 | tee -a "${TEMP_DIR}"/libraries.sha256
118+
# popd >/dev/null 2>&1 || fail "POPD ERROR (Exit Code: ${?})" "${?}"
119+
#end_group
120+
#
121+
#start_group "Generating Application Hashes (${GITHUB_WORKSPACE}/${RELEASE_APPS_PATH}/*.jar)"
122+
# pushd "${GITHUB_WORKSPACE}/${RELEASE_APPS_PATH}" >/dev/null 2>&1 || fail "PUSHD ERROR (Exit Code: ${?})" "${?}"
123+
# ${SHA256SUM} -b -- *.jar | sort -k 2 | tee -a "${TEMP_DIR}"/applications.sha256
124+
# popd >/dev/null 2>&1 || fail "POPD ERROR (Exit Code: ${?})" "${?}"
125+
#end_group
126+
#
127+
#start_group "Generating Final Release Manifests"
128+
#
129+
# start_task "Generating the manifest archive"
130+
# tar -czf "${TEMP_DIR}/manifest.tar.gz" -C "${TEMP_DIR}" libraries.sha256 applications.sha256 >/dev/null 2>&1 || fail "TAR ERROR (Exit Code: ${?})" "${?}"
131+
# end_task
132+
#
133+
# start_task "Copying the manifest files"
134+
# cp "${TEMP_DIR}/manifest.tar.gz" "${MANIFEST_PATH}/${GITHUB_SHA}.tar.gz" || fail "COPY ERROR (Exit Code: ${?})" "${?}"
135+
# cp "${TEMP_DIR}/libraries.sha256" "${MANIFEST_PATH}/libraries.sha256" || fail "COPY ERROR (Exit Code: ${?})" "${?}"
136+
# cp "${TEMP_DIR}/applications.sha256" "${MANIFEST_PATH}/applications.sha256" || fail "COPY ERROR (Exit Code: ${?})" "${?}"
137+
# end_task "DONE (Path: ${MANIFEST_PATH}/${GITHUB_SHA}.tar.gz)"
138+
#
139+
# start_task "Setting Step Outputs"
140+
# {
141+
# printf "path=%s\n" "${MANIFEST_PATH}"
142+
# printf "file=%s\n" "${MANIFEST_PATH}/${GITHUB_SHA}.tar.gz"
143+
# printf "name=%s\n" "${GITHUB_SHA}.tar.gz"
144+
# printf "applications=%s\n" "${MANIFEST_PATH}/applications.sha256"
145+
# printf "libraries=%s\n" "${MANIFEST_PATH}/libraries.sha256"
146+
# } >> "${GITHUB_OUTPUT}"
147+
# end_task
148+
#end_group
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
##
2+
# Copyright (C) 2023-2024 Hedera Hashgraph, LLC
3+
#
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
##
16+
name: "ZXC: Verify Gradle Build Determinism"
17+
18+
on:
19+
workflow_call:
20+
inputs:
21+
ref:
22+
description: "The branch, tag, or commit to checkout:"
23+
type: string
24+
required: false
25+
default: ""
26+
java-distribution:
27+
description: "Java JDK Distribution:"
28+
type: string
29+
required: false
30+
default: "temurin"
31+
java-version:
32+
description: "Java JDK Version:"
33+
type: string
34+
required: false
35+
default: "21.0.4"
36+
37+
# workflow_dispatch:
38+
# inputs:
39+
# version:
40+
# description: 'Release tag:'
41+
# type: string
42+
# required: false
43+
44+
defaults:
45+
run:
46+
shell: bash
47+
48+
permissions:
49+
contents: read
50+
packages: write
51+
52+
jobs:
53+
publish:
54+
runs-on: block-node-linux-medium

buildSrc/src/main/kotlin/com.hedera.block.conventions.gradle.kts

+18
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,25 @@ plugins {
3131

3232
group = "com.hedera.block"
3333

34+
val javaVersionMajor = JavaVersion.VERSION_21
35+
val javaVersionPatch = "0.4"
36+
37+
val currentJavaVersionMajor = JavaVersion.current()
3438
val currentJavaVersion = providers.systemProperty("java.version").get()
39+
val expectedJavaVersion = "$javaVersionMajor.$javaVersionPatch"
40+
41+
if (currentJavaVersion != expectedJavaVersion) {
42+
val message =
43+
"Gradle runs with Java $currentJavaVersion. This project works best running with Java $expectedJavaVersion. " +
44+
"\n - From commandline: change JAVA_HOME and/or PATH to point at Java $expectedJavaVersion installation." +
45+
"\n - From IntelliJ: change 'Gradle JVM' in 'Gradle Settings' to point at Java $expectedJavaVersion installation."
46+
47+
if (currentJavaVersionMajor.ordinal < javaVersionMajor.ordinal) { // fail if version is too old
48+
throw (RuntimeException(message))
49+
} else {
50+
logger.lifecycle("WARN: $message")
51+
}
52+
}
3553

3654
java {
3755
sourceCompatibility = JavaVersion.VERSION_21

0 commit comments

Comments
 (0)