Files
plane/deployments/aio/community/build.sh
Manish Gupta 6d01622663 [INFRA-208] Reorganize deployment structure and update build workflows (#7391)
* 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>
2025-07-14 14:38:43 +05:30

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 "$@"