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 GitHub
parent a19598fec1
commit ee78b4fe52
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
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" ]
@ -35,6 +97,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"
@ -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')