summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Dockerfile2
-rwxr-xr-xbin/docker-test12
-rwxr-xr-xrun.sh97
3 files changed, 55 insertions, 56 deletions
diff --git a/Dockerfile b/Dockerfile
index ce53878..ad0598b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -23,6 +23,6 @@ RUN bash /root/install.sh
FROM tools-builder
ENV LM_HOME=/opt/license-management
-COPY --from=gem-builder /opt/license-management/*.gem $LM_HOME/
+COPY --from=gem-builder /opt/license-management/*.gem $LM_HOME/pkg/
COPY run.sh /
ENTRYPOINT ["/run.sh"]
diff --git a/bin/docker-test b/bin/docker-test
index e6f02ad..cfaf049 100755
--- a/bin/docker-test
+++ b/bin/docker-test
@@ -1,12 +1,18 @@
#!/bin/sh
-set -e
+set -eu
cd "$(dirname "$0")/.."
PROJECT_PATH="$1"
+echo "Scanning $PROJECT_PATH"
-if [ -z "$LM_HOME" ]; then
+if [ -n "${LM_HOME:-}" ]; then
+ gem build ./*.gemspec
+ mkdir -p pkg/
+ mv *.gem pkg/
+ ./run.sh analyze "$PROJECT_PATH"
+else
export IMAGE_NAME=${IMAGE_NAME:-$(basename "$PWD"):latest}
docker run --rm \
@@ -17,6 +23,4 @@ if [ -z "$LM_HOME" ]; then
--env MAVEN_CLI_OPTS \
--volume "$PROJECT_PATH":/code \
"$IMAGE_NAME" analyze /code
-else
- /run.sh analyze "$PROJECT_PATH"
fi
diff --git a/run.sh b/run.sh
index beae705..32db315 100755
--- a/run.sh
+++ b/run.sh
@@ -5,12 +5,11 @@ set -euo pipefail
BUNDLE_JOBS="$(nproc)"
export BUNDLE_JOBS
export BUNDLE_PATH="vendor/bundle"
-export BUNDLE_WITHOUT="development test"
+export BUNDLE_WITHOUT="development:test"
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export HISTFILESIZE=0
export HISTSIZE=0
export LICENSE_FINDER_CLI_OPTS=${LICENSE_FINDER_CLI_OPTS:-'--no-debug'}
-export LICENSE_FINDER_PYTHON_VERSION="--python-version=3"
export LM_REPORT_FILE='gl-license-management-report.json'
export PREPARE="--prepare-no-fail"
export RUBY_GC_HEAP_INIT_SLOTS=800000
@@ -18,51 +17,41 @@ export RUBY_GC_MALLOC_LIMIT=79000000
export RUBY_HEAP_FREE_MIN=100000
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
export RUBY_HEAP_SLOTS_INCREMENT=400000
-
-if [[ -n ${LM_PYTHON_VERSION:-} ]]; then
- MAJOR_VERSION=$(echo "$LM_PYTHON_VERSION" | cut -d'.' -f1)
- switch_to python "$MAJOR_VERSION"
- python --version
- pip --version
- export LICENSE_FINDER_PYTHON_VERSION="--python-version=$MAJOR_VERSION"
-fi
-
-switch_to java "adopt-openjdk-${LM_JAVA_VERSION:-8}"
-# shellcheck source=/dev/null
-. "$ASDF_DATA_DIR/plugins/java/set-java-home.sh"
+export LM_DEBUG=${LM_DEBUG:-}
function debug_env() {
pwd
ls -alh
env | sort
asdf current
+
+ # ruby
ruby -v
gem --version
bundle --version
+ bundle config
+
+ # python
+ python --version
+ pip --version
}
function scan_project() {
- prepare="$1"
- gem install --quiet --silent "$LM_HOME/*.gem"
+ gem install --quiet --silent "$LM_HOME/pkg/*.gem"
license_management ignored_groups add development
license_management ignored_groups add test
- options=("${prepare}" '--format=json' "--save=${LM_REPORT_FILE}" "${LICENSE_FINDER_PYTHON_VERSION}" "${LICENSE_FINDER_CLI_OPTS}")
- echo license_management report "${options[@]}"
- license_management report "${options[@]}"
+ echo license_management report "$@"
+ license_management report "$@"
+}
+
+function prepare_ruby() {
+ [[ -f Gemfile ]] && bundle install
}
function prepare_javascript() {
if [ -f package.json ]; then
- if [ -f package-lock.json ] && [ ! -f yarn.lock ] ; then
- echo "Installing npm packages with npm ci"
- npm ci
- PREPARE="--no-prepare"
- fi
- if [ ! -d node_modules ]; then
- echo "Installing yarn packages"
- yarn install --ignore-engines --ignore-scripts
- PREPARE="--no-prepare"
- fi
+ [[ -f package-lock.json ]] && [[ ! -f yarn.lock ]] && npm ci
+ [[ ! -d node_modules ]] && yarn install --ignore-engines --ignore-scripts
fi
}
@@ -71,40 +60,32 @@ function prepare_golang() {
if [[ ( ! -f glide.lock ) && ( ! -f vendor/manifest ) && (! -f Gopkg.lock ) && (! -f go.mod ) ]]; then
# Only install deps if not using glide, govendor or dep
# Symlink the project into GOPATH to allow fetching dependencies.
- ln -sf "$(realpath "$project_path")" /gopath/src/app
+ ln -sf "$(realpath "$PWD")" /gopath/src/app
pushd /gopath/src/app > /dev/null
go get || true
- PREPARE="--no-prepare"
fi
fi
}
function prepare_java() {
- if [ -f pom.xml ]; then
- mvn install "${MAVEN_CLI_OPTS:--DskipTests}"
- PREPARE="--no-prepare"
- fi
- if [ -f build.gradle ] && [ ! -f gradlew ] ; then
- gradle build "${GRADLE_CLI_OPTS:"-x test"}"
- PREPARE="--no-prepare"
- fi
+ [[ -f pom.xml ]] && mvn install "${MAVEN_CLI_OPTS:--DskipTests}"
+ [[ -f build.gradle ]] && [[ ! -f gradlew ]] && gradle build "${GRADLE_CLI_OPTS:"-x test"}"
}
function prepare_dotnet() {
- if [[ $(ls ./*.sln 2> /dev/null) ]]; then
- LICENSE_FINDER_CLI_OPTS="--recursive=true $LICENSE_FINDER_CLI_OPTS"
- fi
+ [[ $(ls ./*.sln 2> /dev/null) ]] && LICENSE_FINDER_CLI_OPTS="--recursive=true $LICENSE_FINDER_CLI_OPTS"
}
function prepare_project() {
- project_path=$1
- cd "$project_path"
- if [[ -z "${SETUP_CMD-}" ]]; then
+ cd "$1"
+ if [[ -z ${SETUP_CMD:-} ]]; then
asdf install
- prepare_javascript
- prepare_golang
- prepare_java
- prepare_dotnet
+
+ prepare_ruby || true
+ prepare_javascript || true
+ prepare_golang || true
+ prepare_java || true
+ prepare_dotnet || true
else
echo "Running '${SETUP_CMD}' to install project dependencies..."
"${SETUP_CMD[@]}"
@@ -112,6 +93,20 @@ function prepare_project() {
fi
}
+function major_version_from() {
+ echo "$1" | cut -d'.' -f1
+}
+
+switch_to python "$(major_version_from "${LM_PYTHON_VERSION:-3}")"
+
+switch_to java "adopt-openjdk-${LM_JAVA_VERSION:-8}"
+# shellcheck source=/dev/null
+. "$ASDF_DATA_DIR/plugins/java/set-java-home.sh"
+
prepare_project "$2"
-debug_env
-scan_project "$PREPARE"
+[[ -n $LM_DEBUG ]] && debug_env
+scan_project "$PREPARE" \
+ --format=json \
+ --save="${LM_REPORT_FILE}" \
+ --python-version="$(major_version_from "$(python --version | awk '{ print $2 }')")" \
+ $LICENSE_FINDER_CLI_OPTS