Repo created
This commit is contained in:
parent
75dc487a7a
commit
39c29d175b
6317 changed files with 388324 additions and 2 deletions
57
gradle-remote
Executable file
57
gradle-remote
Executable file
|
|
@ -0,0 +1,57 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This script serves as a drop-in replacement for running Gradle tasks locally.
|
||||
# It automates the process of building a Gradle project on a remote server by synchronizing local files,
|
||||
# executing specified Gradle tasks remotely, and copying all build outputs back to your local machine.
|
||||
|
||||
# Disclaimer
|
||||
echo "Please note that this script is quite basic and not recommended for use with public build servers."
|
||||
echo "Since rsync transfers all files from the developer's machine, including potentially sensitive information"
|
||||
echo "like secrets or configuration files, it should be used with care."
|
||||
|
||||
if ! [ -f build.gradle.kts ]; then
|
||||
echo "No build.gradle.kts found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
remote=$GRADLE_REMOTE_SSH
|
||||
if [ -z "$remote" ]; then
|
||||
echo "\$GRADLE_REMOTE_SSH is not set, please set it to a valid SSH login on your build server"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
remote_dir=$GRADLE_REMOTE_DIR
|
||||
if [ -z "$remote_dir" ]; then
|
||||
echo "\$GRADLE_REMOTE_DIR is not set, please set it to the directory where the project should be copied on the remote server"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
remote_project_dir="$remote_dir/$(basename "$(dirname "$PWD")")_$(basename "$PWD")"
|
||||
|
||||
set -e
|
||||
|
||||
# Define rsync exclusions
|
||||
exclusions=(
|
||||
--exclude .git/
|
||||
--exclude .github/
|
||||
--exclude .gradle/
|
||||
--exclude .idea/
|
||||
--exclude .kotlin/
|
||||
--exclude .signing/
|
||||
--exclude metadata
|
||||
--exclude build/
|
||||
)
|
||||
|
||||
# Define rsync inclusions
|
||||
inclusions=(
|
||||
--include .gradle/gradle.properties
|
||||
)
|
||||
|
||||
# Copy the project to the remote server, excluding specified paths but including gradle properties
|
||||
rsync -irc "${exclusions[@]}" "${inclusions[@]}" --delete . "$remote:$remote_project_dir"
|
||||
|
||||
# Run the gradle command on the remote
|
||||
ssh -t "$remote" "cd $remote_project_dir && ./gradlew $*"
|
||||
|
||||
# Copy the build directory back
|
||||
rsync --delete -ircuq "$remote:$remote_project_dir/build" . | (grep -v '/$' || true)
|
||||
Loading…
Add table
Add a link
Reference in a new issue