mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-21 10:14:26 +08:00
build.sh supports building package
This commit is contained in:
@@ -57,18 +57,9 @@ ezBookkeeping will listen at port 8080 as default. Then you can visit http://<YO
|
|||||||
|
|
||||||
Make sure you have [Golang](https://golang.org/), [GCC](http://gcc.gnu.org/), [Node.js](https://nodejs.org/) and [NPM](https://www.npmjs.com/) installed. Then download the source code, and follow these steps:
|
Make sure you have [Golang](https://golang.org/), [GCC](http://gcc.gnu.org/), [Node.js](https://nodejs.org/) and [NPM](https://www.npmjs.com/) installed. Then download the source code, and follow these steps:
|
||||||
|
|
||||||
# Build backend binary file
|
$ ./build.sh package -f ezbookkeeping.tar.gz
|
||||||
$ ./build.sh backend
|
|
||||||
|
|
||||||
# Build frontend static files
|
All the files will be packaged in `ezbookkeeping.tar.gz`.
|
||||||
$ ./build.sh frontend
|
|
||||||
|
|
||||||
# Copy files to target path
|
|
||||||
$ cp ezbookkeeping <target>/ezbookkeeping
|
|
||||||
$ cp -R dist <target>/public
|
|
||||||
$ cp -R conf <target>/conf
|
|
||||||
|
|
||||||
All the files will be placed in `<target>` directory.
|
|
||||||
|
|
||||||
You can also build docker image, make sure you have [docker](https://www.docker.com/) installed, then follow these steps:
|
You can also build docker image, make sure you have [docker](https://www.docker.com/) installed, then follow these steps:
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ RELEASE_TYPE="unknown"
|
|||||||
VERSION=""
|
VERSION=""
|
||||||
COMMIT_HASH=""
|
COMMIT_HASH=""
|
||||||
BUILD_UNIXTIME=""
|
BUILD_UNIXTIME=""
|
||||||
|
PACKAGE_FILENAME=""
|
||||||
DOCKER_TAG=""
|
DOCKER_TAG=""
|
||||||
|
|
||||||
echo_red() {
|
echo_red() {
|
||||||
@@ -32,17 +33,19 @@ Usage:
|
|||||||
Types:
|
Types:
|
||||||
backend Build backend binary file
|
backend Build backend binary file
|
||||||
frontend Build frontend files
|
frontend Build frontend files
|
||||||
|
package Build package archive
|
||||||
docker Build docker image
|
docker Build docker image
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-r, --release Build release (The script will use environment variable "RELEASE_BUILD" to detect whether this is release building by default)
|
-r, --release Build release (The script will use environment variable "RELEASE_BUILD" to detect whether this is release building by default)
|
||||||
|
-f, --file Package file name (For "package" type only)
|
||||||
-t, --tag Docker tag (For "docker" type only)
|
-t, --tag Docker tag (For "docker" type only)
|
||||||
-h, --help Show help
|
-h, --help Show help
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
parse_args() {
|
parse_args() {
|
||||||
if [ "$1" = "backend" ] || [ "$1" = "frontend" ] || [ "$1" = "docker" ]; then
|
if [ "$1" = "backend" ] || [ "$1" = "frontend" ] || [ "$1" = "package" ] || [ "$1" = "docker" ]; then
|
||||||
TYPE="$1"
|
TYPE="$1"
|
||||||
shift 1
|
shift 1
|
||||||
fi
|
fi
|
||||||
@@ -52,6 +55,10 @@ parse_args() {
|
|||||||
--release | -r)
|
--release | -r)
|
||||||
RELEASE="1"
|
RELEASE="1"
|
||||||
;;
|
;;
|
||||||
|
--file | -f)
|
||||||
|
PACKAGE_FILENAME="$2"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
--tag | -t)
|
--tag | -t)
|
||||||
DOCKER_TAG="$2"
|
DOCKER_TAG="$2"
|
||||||
shift
|
shift
|
||||||
@@ -90,6 +97,8 @@ check_type_dependencies() {
|
|||||||
check_dependency "go gcc"
|
check_dependency "go gcc"
|
||||||
elif [ "$TYPE" = "frontend" ]; then
|
elif [ "$TYPE" = "frontend" ]; then
|
||||||
check_dependency "node npm"
|
check_dependency "node npm"
|
||||||
|
elif [ "$TYPE" = "package" ]; then
|
||||||
|
check_dependency "go gcc node npm tar"
|
||||||
elif [ "$TYPE" = "docker" ]; then
|
elif [ "$TYPE" = "docker" ]; then
|
||||||
check_dependency "docker"
|
check_dependency "docker"
|
||||||
fi
|
fi
|
||||||
@@ -129,6 +138,35 @@ build_frontend() {
|
|||||||
npm run build -- "$frontend_build_arguments"
|
npm run build -- "$frontend_build_arguments"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
build_package() {
|
||||||
|
package_file_name="$VERSION";
|
||||||
|
|
||||||
|
if [ "$RELEASE" = "0" ]; then
|
||||||
|
package_file_name="$package_file_name-$(date '+%Y%m%d')"
|
||||||
|
fi
|
||||||
|
|
||||||
|
package_file_name="ezbookkeeping-$package_file_name-$(arch).tar.gz"
|
||||||
|
|
||||||
|
if [ -n "$PACKAGE_FILENAME" ]; then
|
||||||
|
package_file_name="$PACKAGE_FILENAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Building package archive \"$package_file_name\" ($RELEASE_TYPE)..."
|
||||||
|
|
||||||
|
build_backend
|
||||||
|
build_frontend
|
||||||
|
|
||||||
|
rm -rf package
|
||||||
|
mkdir package
|
||||||
|
cp ezbookkeeping package/
|
||||||
|
cp -R dist package/public
|
||||||
|
cp -R conf package/conf
|
||||||
|
|
||||||
|
cd package || { echo_red "Error: Build Failed"; exit 1; }
|
||||||
|
tar cvzf "../$package_file_name" .
|
||||||
|
cd - || return
|
||||||
|
}
|
||||||
|
|
||||||
build_docker() {
|
build_docker() {
|
||||||
docker_tag="$VERSION"
|
docker_tag="$VERSION"
|
||||||
|
|
||||||
@@ -161,6 +199,8 @@ main() {
|
|||||||
build_backend
|
build_backend
|
||||||
elif [ "$TYPE" = "frontend" ]; then
|
elif [ "$TYPE" = "frontend" ]; then
|
||||||
build_frontend
|
build_frontend
|
||||||
|
elif [ "$TYPE" = "package" ]; then
|
||||||
|
build_package
|
||||||
elif [ "$TYPE" = "docker" ]; then
|
elif [ "$TYPE" = "docker" ]; then
|
||||||
build_docker
|
build_docker
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user