mirror of
https://github.com/jakeswenson/BitBetter.git
synced 2023-10-10 13:36:57 +02: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