mirror of
https://github.com/makeplane/plane
synced 2025-08-07 19:59:33 +00:00
* refactor: reorganize deployment structure and update build workflows - Restructure deployment directories from deploy/ to deployments/ - Move selfhost files to deployments/cli/community/ - Add new AIO community deployment setup - Update GitHub Actions workflows for new directory structure - Add Caddy proxy configuration for CE deployment - Remove deprecated AIO build files and workflows - Update build context paths in install scripts * chore: update Dockerfile and supervisor configuration - Changed `apk add` command in Dockerfile to use `--no-cache` for better image size management. - Updated `build.sh` to ensure proper directory navigation with quotes around `dirname "$0"`. - Modified `supervisor.conf` to set `stderr_logfile_maxbytes` to 50MB and added `stderr_logfile_backups` for better log management across multiple services. * chore: consistent node and python version --------- Co-authored-by: sriramveeraghanta <veeraghanta.sriram@gmail.com>
156 lines
4.0 KiB
Bash
Executable File
156 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
DIST_DIR=${DIST_DIR:-./dist}
|
|
CPU_ARCH=$(uname -m)
|
|
IMAGE_NAME=${IMAGE_NAME:-makeplane/plane-aio-community}
|
|
|
|
|
|
# loop though all flags and set the variables
|
|
for arg in "$@"; do
|
|
case $arg in
|
|
--release)
|
|
APP_RELEASE_VERSION="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
--release=*)
|
|
APP_RELEASE_VERSION="${arg#*=}"
|
|
shift
|
|
;;
|
|
--image-name)
|
|
IMAGE_NAME="$2"
|
|
shift
|
|
shift
|
|
;;
|
|
--image-name=*)
|
|
IMAGE_NAME="${arg#*=}"
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
|
|
if [ -z "$APP_RELEASE_VERSION" ]; then
|
|
echo ""
|
|
echo "Usage: "
|
|
echo " ./build.sh [flags]"
|
|
echo ""
|
|
echo "Flags:"
|
|
echo " --release=<APP_RELEASE_VERSION> required (e.g. v0.27.1)"
|
|
echo ""
|
|
echo "Example: ./build.sh --release=v0.27.1 --platform=linux/amd64"
|
|
exit 1
|
|
fi
|
|
|
|
# Install yq if not present
|
|
if ! command -v yq &> /dev/null; then
|
|
echo "Installing yq..."
|
|
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_${CPU_ARCH}
|
|
sudo chmod +x /usr/local/bin/yq
|
|
fi
|
|
|
|
cd $(dirname "$0")
|
|
|
|
string_replace(){
|
|
local file="$1"
|
|
local search="$2"
|
|
local replace="$3"
|
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
sed -i '' "s|$search|$replace|g" "$file"
|
|
else
|
|
sed -i "s|$search|$replace|g" "$file"
|
|
fi
|
|
}
|
|
remove_line(){
|
|
local file="$1"
|
|
local line="$2"
|
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
sed -i '' '/'$line'/d' "$file"
|
|
else
|
|
sed -i '/'$line'/d' "$file"
|
|
fi
|
|
}
|
|
|
|
update_env_file(){
|
|
local file="$1"
|
|
local key="$2"
|
|
local value="$3"
|
|
|
|
# if key is in file, replace it
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
sed -i '' 's|^'$key'=.*|'$key'='$value'|' "$file"
|
|
else
|
|
sed -i 's|^'$key'=.*|'$key'='$value'|' "$file"
|
|
fi
|
|
|
|
# if key not in file, add it
|
|
if ! grep -q "^$key=" "$file"; then
|
|
echo "$key=$value" >> "$file"
|
|
fi
|
|
}
|
|
|
|
build_dist_files(){
|
|
cp ./variables.env $DIST_DIR/plane.env
|
|
cp ../../../apps/proxy/Caddyfile.ce $DIST_DIR/Caddyfile
|
|
|
|
echo "" >> $DIST_DIR/plane.env
|
|
echo "" >> $DIST_DIR/plane.env
|
|
|
|
# update the plane.env file with the APP_RELEASE_VERSION
|
|
update_env_file $DIST_DIR/plane.env "APP_RELEASE_VERSION" "$APP_RELEASE_VERSION"
|
|
update_env_file $DIST_DIR/plane.env "APP_RELEASE" "$APP_RELEASE_VERSION"
|
|
update_env_file $DIST_DIR/plane.env "APP_VERSION" "$APP_RELEASE_VERSION"
|
|
|
|
update_env_file $DIST_DIR/plane.env "API_BASE_URL" "http://localhost:3004"
|
|
update_env_file $DIST_DIR/plane.env "SITE_ADDRESS" ":80"
|
|
|
|
# remove this line containing `plane-minio:9000`
|
|
remove_line $DIST_DIR/Caddyfile "plane-minio:9000" ""
|
|
|
|
# in caddyfile, update `reverse_proxy /spaces/* space:3000` to `reverse_proxy /spaces/* space:3002`
|
|
string_replace $DIST_DIR/Caddyfile "web:3000" "localhost:3001"
|
|
string_replace $DIST_DIR/Caddyfile "space:3000" "localhost:3002"
|
|
string_replace $DIST_DIR/Caddyfile "admin:3000" "localhost:3003"
|
|
string_replace $DIST_DIR/Caddyfile "api:8000" "localhost:3004"
|
|
string_replace $DIST_DIR/Caddyfile "live:3000" "localhost:3005"
|
|
|
|
|
|
# print docker build command
|
|
echo "------------------------------------------------"
|
|
echo "Run the following command to build the image:"
|
|
echo "------------------------------------------------"
|
|
echo ""
|
|
echo "docker build -t $IMAGE_NAME \\"
|
|
echo " -f $(pwd)/Dockerfile \\"
|
|
echo " --build-arg PLANE_VERSION=$APP_RELEASE_VERSION \\"
|
|
echo " $(pwd)"
|
|
echo ""
|
|
echo "------------------------------------------------"
|
|
}
|
|
|
|
|
|
main(){
|
|
# check if the dist directory exists
|
|
echo ""
|
|
if [ -d "$DIST_DIR" ]; then
|
|
echo "Cleaning existing dist directory..."
|
|
rm -rf $DIST_DIR
|
|
fi
|
|
echo "Creating dist directory..."
|
|
mkdir -p $DIST_DIR
|
|
echo ""
|
|
|
|
build_dist_files
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: Failed to build docker image"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
main "$@"
|
|
|