mirror of
				https://github.com/jakeswenson/BitBetter.git
				synced 2025-10-31 04:43:25 +00:00 
			
		
		
		
	Improve build and scripts (#30)
* Use absolute path rather than relative path in scripts * Remove src/bitBetter/.keys/cert.cert * Build licenseGen in Docker This way we don't have to install dotnet sdk on the host * Build bitBetter in Docker This way we don't have to install dotnet sdk on the host * Change DIR in run.sh to point to the project root * Replace echo in Dockerfiles by set -x and set -e * Use same Dockerfile for api and identity images * Update README.md * Update CircleCI config The Docker Executor can't mount volume. https://support.circleci.com/hc/en-us/articles/360007324514 https://circleci.com/docs/2.0/executor-types/#using-machine * Make scripts work with sh * Remove the container used to build bitBetter
This commit is contained in:
		
							parent
							
								
									5d01d3c661
								
							
						
					
					
						commit
						3e44d7347b
					
				|  | @ -1,15 +1,12 @@ | ||||||
| version: 2 | version: 2 | ||||||
| jobs: | jobs: | ||||||
|   build: |   build: | ||||||
|     docker: |     machine: true | ||||||
|       - image: microsoft/dotnet:2-sdk |  | ||||||
|     steps: |     steps: | ||||||
|       - checkout |       - checkout | ||||||
|       - run: |       - run: | ||||||
|           name: Print the Current Time |           name: Print the Current Time | ||||||
|           command: date |           command: date | ||||||
|       - setup_remote_docker |  | ||||||
|       - run: { name: 'Get docker', command: 'curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh' } |  | ||||||
|       - run: |       - run: | ||||||
|           name: Generate Keys |           name: Generate Keys | ||||||
|           command: ./.keys/generate-keys.sh |           command: ./.keys/generate-keys.sh | ||||||
|  |  | ||||||
|  | @ -3,15 +3,18 @@ | ||||||
| # Check for openssl | # Check for openssl | ||||||
| command -v openssl >/dev/null 2>&1 || { echo >&2 "openssl required but not found.  Aborting."; exit 1; } | command -v openssl >/dev/null 2>&1 || { echo >&2 "openssl required but not found.  Aborting."; exit 1; } | ||||||
| 
 | 
 | ||||||
|  | DIR=`dirname "$0"` | ||||||
|  | DIR=`exec 2>/dev/null;(cd -- "$DIR") && cd -- "$DIR"|| cd "$DIR"; unset PWD; /usr/bin/pwd || /bin/pwd || pwd` | ||||||
|  | 
 | ||||||
| # Remove any existing key files | # Remove any existing key files | ||||||
| [ ! -e cert.pem ]  || rm cert.pem | [ ! -e "$DIR/cert.pem" ]  || rm "$DIR/cert.pem" | ||||||
| [ ! -e key.pem ]   || rm key.pem | [ ! -e "$DIR/key.pem" ]   || rm "$DIR/key.pem" | ||||||
| [ ! -e cert.cert ] || rm cert.cert | [ ! -e "$DIR/cert.cert" ] || rm "$DIR/cert.cert" | ||||||
| [ ! -e cert.pfx ]  || rm cert.pfx | [ ! -e "$DIR/cert.pfx" ]  || rm "$DIR/cert.pfx" | ||||||
| 
 | 
 | ||||||
| # Generate new keys | # Generate new keys | ||||||
| openssl	req -x509 -newkey rsa:4096 -keyout .keys/key.pem -out .keys/cert.cert -days 36500 -subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'  -outform DER -passout pass:test | openssl	req -x509 -newkey rsa:4096 -keyout "$DIR/key.pem" -out "$DIR/cert.cert" -days 36500 -subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'  -outform DER -passout pass:test | ||||||
| openssl x509 -inform DER -in .keys/cert.cert -out .keys/cert.pem | openssl x509 -inform DER -in "$DIR/cert.cert" -out "$DIR/cert.pem" | ||||||
| openssl pkcs12 -export -out .keys/cert.pfx -inkey .keys/key.pem -in .keys/cert.pem -passin pass:test -passout pass:test | openssl pkcs12 -export -out "$DIR/cert.pfx" -inkey "$DIR/key.pem" -in "$DIR/cert.pem" -passin pass:test -passout pass:test | ||||||
| 
 | 
 | ||||||
| ls | ls | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
									
									
									
									
								
							|  | @ -22,7 +22,6 @@ The following instructions are for unix-based systems (Linux, BSD, macOS), it is | ||||||
| Aside from docker, which you also need for Bitwarden, BitBetter requires the following: | Aside from docker, which you also need for Bitwarden, BitBetter requires the following: | ||||||
| 
 | 
 | ||||||
| * openssl (probably already installed on most Linux or WSL systems) | * openssl (probably already installed on most Linux or WSL systems) | ||||||
| * dotnet-sdk-2.1 (install instructions can be found [here](https://dotnet.microsoft.com/download/linux-package-manager/rhel/sdk-2.1.604)) |  | ||||||
| 
 | 
 | ||||||
| ## Setting up BitBetter | ## Setting up BitBetter | ||||||
| With your pre-requisites installed, begin the installation of BitBetter by downloading it through Github or using the git command: | With your pre-requisites installed, begin the installation of BitBetter by downloading it through Github or using the git command: | ||||||
|  | @ -31,15 +30,6 @@ With your pre-requisites installed, begin the installation of BitBetter by downl | ||||||
| git clone https://github.com/jakeswenson/BitBetter.git | git clone https://github.com/jakeswenson/BitBetter.git | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| First, we need to add the correct version of Newtonsoft.Json to the license generator and the BitBetter docker directories. |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| cd BitBetter/src/licenseGen/ |  | ||||||
| dotnet add package Newtonsoft.Json --version 12.0.1  |  | ||||||
| 
 |  | ||||||
| cd ../bitBetter |  | ||||||
| dotnet add package Newtonsoft.Json --version 12.0.1  |  | ||||||
| ``` |  | ||||||
| ## Building BitBetter | ## Building BitBetter | ||||||
| 
 | 
 | ||||||
| Now that you've set up your build environment, you can **run the main build script** to generate a modified version of the `bitwarden/api` and `bitwarden/identity` docker images. | Now that you've set up your build environment, you can **run the main build script** to generate a modified version of the `bitwarden/api` and `bitwarden/identity` docker images. | ||||||
|  |  | ||||||
							
								
								
									
										26
									
								
								build.sh
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								build.sh
									
									
									
									
									
								
							|  | @ -1,24 +1,18 @@ | ||||||
| #!/bin/bash | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | DIR=`dirname "$0"` | ||||||
|  | DIR=`exec 2>/dev/null;(cd -- "$DIR") && cd -- "$DIR"|| cd "$DIR"; unset PWD; /usr/bin/pwd || /bin/pwd || pwd` | ||||||
| 
 | 
 | ||||||
| # If there aren't any keys, generate them first. | # If there aren't any keys, generate them first. | ||||||
| [ -e ./.keys/cert.cert ] || ./.keys/generate-keys.sh | [ -e "$DIR/.keys/cert.cert" ] || "$DIR/.keys/generate-keys.sh" | ||||||
| 
 | 
 | ||||||
| [ -e ./src/bitBetter/api/.keys ]  || mkdir ./src/bitBetter/api/.keys | [ -e "$DIR/src/bitBetter/.keys" ] || mkdir "$DIR/src/bitBetter/.keys" | ||||||
| [ -e ./src/bitBetter/identity/.keys ]  || mkdir ./src/bitBetter/identity/.keys |  | ||||||
| 
 | 
 | ||||||
| cp .keys/cert.cert ./src/bitBetter/api/.keys | cp "$DIR/.keys/cert.cert" "$DIR/src/bitBetter/.keys" | ||||||
| cp .keys/cert.cert ./src/bitBetter/identity/.keys |  | ||||||
| 
 | 
 | ||||||
| cd ./src/bitBetter | docker run --rm -v "$DIR/src/bitBetter:/bitBetter" -w=/bitBetter mcr.microsoft.com/dotnet/core/sdk:2.1 sh build.sh | ||||||
| 
 | 
 | ||||||
| dotnet restore | docker build --build-arg BITWARDEN_TAG=bitwarden/api -t bitbetter/api "$DIR/src/bitBetter" # --squash | ||||||
| dotnet publish | docker build --build-arg BITWARDEN_TAG=bitwarden/identity -t bitbetter/identity "$DIR/src/bitBetter" # --squash | ||||||
| 
 | 
 | ||||||
| cp -r bin/ api/ |  | ||||||
| cp -r bin/ identity/ |  | ||||||
| 
 | 
 | ||||||
| cd ./api |  | ||||||
| docker build --pull . -t bitbetter/api # --squash |  | ||||||
| 
 |  | ||||||
| cd ../identity |  | ||||||
| docker build --pull . -t bitbetter/identity # --squash |  | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										11
									
								
								src/bitBetter/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/bitBetter/Dockerfile
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | ||||||
|  | ARG BITWARDEN_TAG | ||||||
|  | FROM ${BITWARDEN_TAG} | ||||||
|  | 
 | ||||||
|  | COPY bin/Debug/netcoreapp2.0/publish/* /bitBetter/ | ||||||
|  | COPY ./.keys/cert.cert /newLicensing.cer | ||||||
|  | 
 | ||||||
|  | RUN set -e; set -x; \ | ||||||
|  |     dotnet /bitBetter/bitBetter.dll && \ | ||||||
|  |     mv /app/Core.dll /app/Core.orig.dll && \ | ||||||
|  |     mv /app/modified.dll /app/Core.dll && \ | ||||||
|  |     rm -rf /bitBetter && rm -rf /newLicensing.cer | ||||||
|  | @ -1,12 +0,0 @@ | ||||||
| FROM bitwarden/api |  | ||||||
| 
 |  | ||||||
| COPY bin/Debug/netcoreapp2.0/publish/* /bitBetter/ |  | ||||||
| COPY ./.keys/cert.cert /newLicensing.cer |  | ||||||
| 
 |  | ||||||
| RUN dotnet /bitBetter/bitBetter.dll && \ |  | ||||||
|     echo "modified dll" && \ |  | ||||||
|     mv /app/Core.dll /app/Core.orig.dll && \ |  | ||||||
|     mv /app/modified.dll /app/Core.dll && \ |  | ||||||
|     echo "replaced dll" && \ |  | ||||||
|     rm -rf /bitBetter && rm -rf /newLicensing.cer && \ |  | ||||||
|     echo "cleaned up" |  | ||||||
							
								
								
									
										8
									
								
								src/bitBetter/build.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								src/bitBetter/build.sh
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | set -e | ||||||
|  | set -x | ||||||
|  | 
 | ||||||
|  | dotnet add package Newtonsoft.Json --version 12.0.1 | ||||||
|  | dotnet restore | ||||||
|  | dotnet publish | ||||||
|  | @ -1,12 +0,0 @@ | ||||||
| FROM bitwarden/identity |  | ||||||
| 
 |  | ||||||
| COPY bin/Debug/netcoreapp2.0/publish/* /bitBetter/ |  | ||||||
| COPY ./.keys/cert.cert /newLicensing.cer |  | ||||||
| 
 |  | ||||||
| RUN dotnet /bitBetter/bitBetter.dll && \ |  | ||||||
|     echo "modified dll" && \ |  | ||||||
|     mv /app/Core.dll /app/Core.orig.dll && \ |  | ||||||
|     mv /app/modified.dll /app/Core.dll && \ |  | ||||||
|     echo "replaced dll" && \ |  | ||||||
|     rm -rf /bitBetter && rm -rf /newLicensing.cer && \ |  | ||||||
|     echo "cleaned up" |  | ||||||
|  | @ -1,5 +1,17 @@ | ||||||
|  | FROM mcr.microsoft.com/dotnet/core/sdk:2.1 as build | ||||||
|  | 
 | ||||||
|  | WORKDIR /licenseGen | ||||||
|  | 
 | ||||||
|  | COPY . /licenseGen | ||||||
|  | 
 | ||||||
|  | RUN set -e; set -x; \ | ||||||
|  | 	dotnet add package Newtonsoft.Json --version 12.0.1 \ | ||||||
|  | 	&& dotnet restore \ | ||||||
|  | 	&& dotnet publish | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| FROM bitbetter/api | FROM bitbetter/api | ||||||
| 
 | 
 | ||||||
| COPY bin/Debug/netcoreapp2.0/publish/* /app/ | COPY --from=build /licenseGen/bin/Debug/netcoreapp2.0/publish/* /app/ | ||||||
| 
 | 
 | ||||||
| ENTRYPOINT [ "dotnet", "/app/licenseGen.dll", "--core", "/app/Core.dll", "--cert", "/cert.pfx" ] | ENTRYPOINT [ "dotnet", "/app/licenseGen.dll", "--core", "/app/Core.dll", "--cert", "/cert.pfx" ] | ||||||
|  | @ -1,11 +1,6 @@ | ||||||
| #!/bin/bash | #!/bin/sh | ||||||
| 
 | 
 | ||||||
| script_dir=`cd $(dirname $0); pwd` | DIR=`dirname "$0"` | ||||||
| 
 | DIR=`exec 2>/dev/null;(cd -- "$DIR") && cd -- "$DIR"|| cd "$DIR"; unset PWD; /usr/bin/pwd || /bin/pwd || pwd` | ||||||
| cd $script_dir |  | ||||||
| 
 |  | ||||||
| dotnet restore |  | ||||||
| dotnet publish |  | ||||||
| 
 |  | ||||||
| docker build . -t bitbetter/licensegen # --squash |  | ||||||
| 
 | 
 | ||||||
|  | docker build -t bitbetter/licensegen "$DIR" # --squash | ||||||
|  |  | ||||||
|  | @ -1,18 +1,19 @@ | ||||||
| #!/bin/bash | #!/bin/sh | ||||||
| 
 | 
 | ||||||
| script_dir=`cd $(dirname $0); pwd` | DIR=`dirname "$0"` | ||||||
|  | DIR=`exec 2>/dev/null;(cd -- "$DIR") && cd -- "$DIR"|| cd "$DIR"; unset PWD; /usr/bin/pwd || /bin/pwd || pwd` | ||||||
| 
 | 
 | ||||||
| # Grab the absolute path to the default pfx location | # Grab the absolute path to the default pfx location | ||||||
| cert_path=`cd ./.keys; ls -d -1 $PWD/cert.pfx` | cert_path="$DIR/.keys/cert.pfx" | ||||||
| 
 | 
 | ||||||
| if [ "$#" -lt "1" ]; then | if [ "$#" -lt "1" ]; then | ||||||
|     echo "USAGE: $0 <ABSOLUTE PATH TO CERT.PFX> [License Gen args...]" |     echo "USAGE: $0 <ABSOLUTE PATH TO CERT.PFX> [License Gen args...]" | ||||||
|     exit 1 |     exit 1 | ||||||
| elif [ "$#" -ge "2" ]; then | elif [ "$#" -ge "2" ]; then | ||||||
|     # If a cert path is provided manually, override the default |     # If a cert path is provided manually, override the default | ||||||
|     cert_path=$1 |     cert_path="$1" | ||||||
|     shift |     shift | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| docker run -it -v "$cert_path:/cert.pfx" bitbetter/licensegen "$@" | docker run -it --rm -v "$cert_path:/cert.pfx" bitbetter/licensegen "$@" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user