Verified Commit f805c95c authored by mo's avatar mo
Browse files

Update README instructions to run tests in docker container

parent 00533637
......@@ -4,7 +4,7 @@
[![coverage report](https://gitlab.com/gitlab-org/security-products/license-management/badges/master/coverage.svg)](https://gitlab.com/gitlab-org/security-products/license-management/commits/master)
GitLab tool for detecting licenses of the dependencies used by the provided source.
It is currently based on [License Finder](https://gitlab.com/gitlab-org/security-products/license-management)
It is currently based on [License Finder][license_finder]
only, but this may change in the future.
## How to use
......@@ -25,48 +25,41 @@ only, but this may change in the future.
### Running the application
License Management is a Docker image, you can build it like any Docker image like so in the
project root:
License Management is a Docker image. You can build it like this from the project root:
```sh
docker build -t license-management .
$ ./bin/docker-build
```
You can then run License Management on some target directory:
```sh
docker run --rm --volume "/path/to/my/project":/code license-management analyze /code
$ docker run --rm --volume "/path/to/my/project":/code license-management analyze /code
```
You can run the tests from your host machine using the following command:
You can run the tests from inside a docker container:
```sh
./bin/test
```
It is much more efficient to run the tests from inside the docker container:
```sh
./bin/docker-build
./bin/docker-shell
cd /opt/license-management/
./bin/test
$ ./bin/docker-build
$ ./bin/docker-shell
$ cd /opt/license-management/
$ ./bin/test
```
If you need to debug any specific issues you can do this from within the docker container by
following these steps:
```sh
./bin/docker-build
./bin/docker-shell
cd /opt/license-management/
enable_dev_mode
bundle open license_finder
$ ./bin/docker-build
$ ./bin/docker-shell
$ cd /opt/license-management/
$ enable_dev_mode
$ bundle open license_finder
```
The `docker-shell` script will mount the current project as a volume into `/opt/license-management`.
This allows you edit code from your host machine using your preferred editor and
see the affects of those changes from within the running docker container.
This allows you to edit code from your host machine using your preferred editor and
see the affect of those changes from within the running docker container.
### Updating the SPDX index
......@@ -119,12 +112,6 @@ The License Management tool can be customized with environments variables for so
Inject the required environment variables to the docker command using the [`--env` option flag](https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file)
or its shorthand form (`--env MY_SETTING_VAR`) if the configuration comes from an external environment.
*Caution:* if you supply the `MAVEN_CLI_OPTS` for a Maven project, don't forget to append `-DskipTests` to save time by skipping the test suite.
*Tip:* in case you still need to run tests during license management check, supply `MAVEN_CLI_OPTS=-DskipTests=false`
to the docker command.
## Versioning and release process
1. Create a new entry in the `.gitlab/release.yml` file for the new version to release.
......@@ -147,19 +134,24 @@ Please check the [Release Process documentation](https://gitlab.com/gitlab-org/s
## Upgrading to the latest version of LicenseFinder
1. Check for the latest version of `LicenseFinder` at [https://rubygems.org/gems/license_finder](https://rubygems.org/gems/license_finder)
1. Check the version of the `license_finder` gem that is currently being used in the [`Gemfile.lock`](https://gitlab.com/gitlab-org/security-products/license-management/-/blob/master/Gemfile.lock)
1. Check for the latest version of `LicenseFinder` at [https://rubygems.org/gems/license_finder][license_finder]
1. Check the version of the `license_finder` gem that is currently being used in the [`Gemfile.lock`][gemfile_lock]
1. If an update is available, create a new branch
1. Bump the license management version in [CHANGELOG.md](https://gitlab.com/gitlab-org/security-products/license-management/-/blob/master/CHANGELOG.md) and in [version.rb](https://gitlab.com/gitlab-org/security-products/license-management/-/blob/master/lib/license/management/version.rb)
1. Update the `license_finder` version constraint in the [gemspec](https://gitlab.com/gitlab-org/security-products/license-management/-/blob/master/license-management.gemspec).
1. Bump the license management version in [CHANGELOG.md][changelog] and in [version.rb][version_rb]
1. Update the `license_finder` version constraint in the [gemspec][gemspec]
1. Run `bundle update license_finder`
1. Test the changes locally using the `bin/test` script.
1. Submit a merge request.
# Contributing
If you want to help, read the [contribution guidelines](CONTRIBUTING.md).
If an unknown license is detected, please consider updating the mapping defined
in [normalized-licenses.yml](https://gitlab.com/gitlab-org/security-products/license-management/blob/master/normalized-licenses.yml). A mapping can be for a detected name or url and must correspond to an SDPX identifier found in [spdx-licenses.json](https://gitlab.com/gitlab-org/security-products/license-management/blob/master/spdx-licenses.json).
[license_finder]: https://rubygems.org/gems/license_finder
[changelog]: https://gitlab.com/gitlab-org/security-products/license-management/-/blob/master/CHANGELOG.md
[version_rb]: https://gitlab.com/gitlab-org/security-products/license-management/-/blob/master/lib/license/management/version.rb
[gemspec]: https://gitlab.com/gitlab-org/security-products/license-management/-/blob/master/license-management.gemspec
[gemfile_lock]: https://gitlab.com/gitlab-org/security-products/license-management/-/blob/master/Gemfile.lock
......@@ -6,19 +6,5 @@ cd "$(dirname "$0")/.."
export CI_PROJECT_DIR="$1"
if [ -n "${LM_HOME:-}" ]; then
mkdir -p pkg/ && gem build --silent -o pkg/license-management-test.gem ./*.gemspec
./run.sh analyze "$CI_PROJECT_DIR"
else
export IMAGE_NAME=${IMAGE_NAME:-$(basename "$PWD"):latest}
docker run --rm \
--env GRADLE_CLI_OPTS \
--env LICENSE_FINDER_CLI_OPTS \
--env LM_JAVA_VERSION \
--env LM_PYTHON_VERSION \
--env LM_REPORT_VERSION \
--env MAVEN_CLI_OPTS \
--volume "$CI_PROJECT_DIR":/code \
"$IMAGE_NAME" analyze /code
fi
mkdir -p pkg/ && gem build --silent -o pkg/license-management-test.gem ./*.gemspec
./run.sh analyze "$CI_PROJECT_DIR"
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment