dev: self host local build for other arch cpu (#3358)

handled x86_64 along with amd64
This commit is contained in:
Manish Gupta 2024-01-17 19:03:57 +05:30 committed by sriram veeraghanta
parent 4b0d85591e
commit 4ab64b6905
3 changed files with 143 additions and 23 deletions

26
deploy/selfhost/build.yml Normal file
View File

@ -0,0 +1,26 @@
version: "3.8"
services:
web:
image: ${DOCKERHUB_USER:-local}/plane-frontend:${APP_RELEASE:-latest}
build:
context: .
dockerfile: ./web/Dockerfile.web
space:
image: ${DOCKERHUB_USER:-local}/plane-space:${APP_RELEASE:-latest}
build:
context: ./
dockerfile: ./space/Dockerfile.space
api:
image: ${DOCKERHUB_USER:-local}/plane-backend:${APP_RELEASE:-latest}
build:
context: ./apiserver
dockerfile: ./Dockerfile.api
proxy:
image: ${DOCKERHUB_USER:-local}/plane-proxy:${APP_RELEASE:-latest}
build:
context: ./nginx
dockerfile: ./Dockerfile

View File

@ -65,8 +65,8 @@ x-app-env : &app-env
services: services:
web: web:
<<: *app-env <<: *app-env
platform: linux/amd64 image: ${DOCKERHUB_USER:-makeplane}/plane-frontend:${APP_RELEASE:-latest}
image: makeplane/plane-frontend:${APP_RELEASE:-latest} pull_policy: ${PULL_POLICY:-always}
restart: unless-stopped restart: unless-stopped
command: /usr/local/bin/start.sh web/server.js web command: /usr/local/bin/start.sh web/server.js web
deploy: deploy:
@ -77,8 +77,8 @@ services:
space: space:
<<: *app-env <<: *app-env
platform: linux/amd64 image: ${DOCKERHUB_USER:-makeplane}/plane-space:${APP_RELEASE:-latest}
image: makeplane/plane-space:${APP_RELEASE:-latest} pull_policy: ${PULL_POLICY:-always}
restart: unless-stopped restart: unless-stopped
command: /usr/local/bin/start.sh space/server.js space command: /usr/local/bin/start.sh space/server.js space
deploy: deploy:
@ -90,8 +90,8 @@ services:
api: api:
<<: *app-env <<: *app-env
platform: linux/amd64 image: ${DOCKERHUB_USER:-makeplane}/plane-backend:${APP_RELEASE:-latest}
image: makeplane/plane-backend:${APP_RELEASE:-latest} pull_policy: ${PULL_POLICY:-always}
restart: unless-stopped restart: unless-stopped
command: ./bin/takeoff command: ./bin/takeoff
deploy: deploy:
@ -102,8 +102,8 @@ services:
worker: worker:
<<: *app-env <<: *app-env
platform: linux/amd64 image: ${DOCKERHUB_USER:-makeplane}/plane-backend:${APP_RELEASE:-latest}
image: makeplane/plane-backend:${APP_RELEASE:-latest} pull_policy: ${PULL_POLICY:-always}
restart: unless-stopped restart: unless-stopped
command: ./bin/worker command: ./bin/worker
depends_on: depends_on:
@ -113,8 +113,8 @@ services:
beat-worker: beat-worker:
<<: *app-env <<: *app-env
platform: linux/amd64 image: ${DOCKERHUB_USER:-makeplane}/plane-backend:${APP_RELEASE:-latest}
image: makeplane/plane-backend:${APP_RELEASE:-latest} pull_policy: ${PULL_POLICY:-always}
restart: unless-stopped restart: unless-stopped
command: ./bin/beat command: ./bin/beat
depends_on: depends_on:
@ -125,6 +125,7 @@ services:
plane-db: plane-db:
<<: *app-env <<: *app-env
image: postgres:15.2-alpine image: postgres:15.2-alpine
pull_policy: if_not_present
restart: unless-stopped restart: unless-stopped
command: postgres -c 'max_connections=1000' command: postgres -c 'max_connections=1000'
volumes: volumes:
@ -133,6 +134,7 @@ services:
plane-redis: plane-redis:
<<: *app-env <<: *app-env
image: redis:6.2.7-alpine image: redis:6.2.7-alpine
pull_policy: if_not_present
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- redisdata:/data - redisdata:/data
@ -140,6 +142,7 @@ services:
plane-minio: plane-minio:
<<: *app-env <<: *app-env
image: minio/minio image: minio/minio
pull_policy: if_not_present
restart: unless-stopped restart: unless-stopped
command: server /export --console-address ":9090" command: server /export --console-address ":9090"
volumes: volumes:
@ -148,8 +151,8 @@ services:
# Comment this if you already have a reverse proxy running # Comment this if you already have a reverse proxy running
proxy: proxy:
<<: *app-env <<: *app-env
platform: linux/amd64 image: ${DOCKERHUB_USER:-makeplane}/plane-proxy:${APP_RELEASE:-latest}
image: makeplane/plane-proxy:${APP_RELEASE:-latest} pull_policy: ${PULL_POLICY:-always}
ports: ports:
- ${NGINX_PORT}:80 - ${NGINX_PORT}:80
depends_on: depends_on:

View File

@ -3,13 +3,75 @@
BRANCH=master BRANCH=master
SCRIPT_DIR=$PWD SCRIPT_DIR=$PWD
PLANE_INSTALL_DIR=$PWD/plane-app PLANE_INSTALL_DIR=$PWD/plane-app
export APP_RELEASE=$BRANCH
export DOCKERHUB_USER=makeplane
export PULL_POLICY=always
USE_GLOBAL_IMAGES=1
function install(){ RED='\033[0;31m'
echo YELLOW='\033[1;33m'
echo "Installing on $PLANE_INSTALL_DIR" GREEN='\033[0;32m'
NC='\033[0m' # No Color
function buildLocalImage() {
if [ "$1" == "--force-build" ]; then
DO_BUILD="1"
elif [ "$1" == "--skip-build" ]; then
DO_BUILD="2"
else
printf "\n" >&2
printf "${YELLOW}You are on ${ARCH} cpu architecture. ${NC}\n" >&2
printf "${YELLOW}Since the prebuilt ${ARCH} compatible docker images are not available for, we will be running the docker build on this system. ${NC} \n" >&2
printf "${YELLOW}This might take ${YELLOW}5-30 min based on your system's hardware configuration. \n ${NC} \n" >&2
printf "\n" >&2
printf "${GREEN}Select an option to proceed: ${NC}\n" >&2
printf " 1) Build Fresh Images \n" >&2
printf " 2) Skip Building Images \n" >&2
printf " 3) Exit \n" >&2
printf "\n" >&2
read -p "Select Option [1]: " DO_BUILD
until [[ -z "$DO_BUILD" || "$DO_BUILD" =~ ^[1-3]$ ]]; do
echo "$DO_BUILD: invalid selection." >&2
read -p "Select Option [1]: " DO_BUILD
done
echo "" >&2
fi
if [ "$DO_BUILD" == "1" ] || [ "$DO_BUILD" == "" ];
then
REPO=https://github.com/makeplane/plane.git
CURR_DIR=$PWD
PLANE_TEMP_CODE_DIR=$(mktemp -d)
git clone $REPO $PLANE_TEMP_CODE_DIR --branch $BRANCH --single-branch
cp $PLANE_TEMP_CODE_DIR/deploy/selfhost/build.yml $PLANE_TEMP_CODE_DIR/build.yml
cd $PLANE_TEMP_CODE_DIR
if [ "$BRANCH" == "master" ];
then
APP_RELEASE=latest
fi
docker compose -f build.yml build --no-cache >&2
# cd $CURR_DIR
# rm -rf $PLANE_TEMP_CODE_DIR
echo "build_completed"
elif [ "$DO_BUILD" == "2" ];
then
printf "${YELLOW}Build action skipped by you in lieu of using existing images. ${NC} \n" >&2
echo "build_skipped"
elif [ "$DO_BUILD" == "3" ];
then
echo "build_exited"
else
printf "INVALID OPTION SUPPLIED" >&2
fi
}
function install() {
echo "Installing Plane.........."
download download
} }
function download(){ function download() {
cd $SCRIPT_DIR cd $SCRIPT_DIR
TS=$(date +%s) TS=$(date +%s)
if [ -f "$PLANE_INSTALL_DIR/docker-compose.yaml" ] if [ -f "$PLANE_INSTALL_DIR/docker-compose.yaml" ]
@ -36,6 +98,21 @@ function download(){
rm $PLANE_INSTALL_DIR/temp.yaml rm $PLANE_INSTALL_DIR/temp.yaml
fi fi
if [ $USE_GLOBAL_IMAGES == 0 ]; then
local res=$(buildLocalImage)
# echo $res
if [ "$res" == "build_exited" ];
then
echo
echo "Install action cancelled by you. Exiting now."
echo
exit 0
fi
else
docker compose -f $PLANE_INSTALL_DIR/docker-compose.yaml pull
fi
echo "" echo ""
echo "Latest version is now available for you to use" echo "Latest version is now available for you to use"
echo "" echo ""
@ -43,22 +120,22 @@ function download(){
echo "" echo ""
} }
function startServices(){ function startServices() {
cd $PLANE_INSTALL_DIR cd $PLANE_INSTALL_DIR
docker compose up -d docker compose up -d --quiet-pull
cd $SCRIPT_DIR cd $SCRIPT_DIR
} }
function stopServices(){ function stopServices() {
cd $PLANE_INSTALL_DIR cd $PLANE_INSTALL_DIR
docker compose down docker compose down
cd $SCRIPT_DIR cd $SCRIPT_DIR
} }
function restartServices(){ function restartServices() {
cd $PLANE_INSTALL_DIR cd $PLANE_INSTALL_DIR
docker compose restart docker compose restart
cd $SCRIPT_DIR cd $SCRIPT_DIR
} }
function upgrade(){ function upgrade() {
echo "***** STOPPING SERVICES ****" echo "***** STOPPING SERVICES ****"
stopServices stopServices
@ -69,10 +146,10 @@ function upgrade(){
echo "***** PLEASE VALIDATE AND START SERVICES ****" echo "***** PLEASE VALIDATE AND START SERVICES ****"
} }
function askForAction(){ function askForAction() {
echo echo
echo "Select a Action you want to perform:" echo "Select a Action you want to perform:"
echo " 1) Install" echo " 1) Install (${ARCH})"
echo " 2) Start" echo " 2) Start"
echo " 3) Stop" echo " 3) Stop"
echo " 4) Restart" echo " 4) Restart"
@ -115,6 +192,20 @@ function askForAction(){
fi fi
} }
# CPU ARCHITECHTURE BASED SETTINGS
ARCH=$(uname -m)
if [ $ARCH == "amd64" ] || [ $ARCH == "x86_64" ];
then
USE_GLOBAL_IMAGES=1
DOCKERHUB_USER=makeplane
PULL_POLICY=always
else
USE_GLOBAL_IMAGES=0
DOCKERHUB_USER=myplane
PULL_POLICY=never
fi
# REMOVE SPECIAL CHARACTERS FROM BRANCH NAME
if [ "$BRANCH" != "master" ]; if [ "$BRANCH" != "master" ];
then then
PLANE_INSTALL_DIR=$PWD/plane-app-$(echo $BRANCH | sed -r 's@(\/|" "|\.)@-@g') PLANE_INSTALL_DIR=$PWD/plane-app-$(echo $BRANCH | sed -r 's@(\/|" "|\.)@-@g')