gitlab-license_finder 6.14.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.force-build +0 -0
- data/.gitignore +13 -0
- data/.rspec +1 -0
- data/.rubocop.yml +70 -0
- data/CHANGELOG.md +981 -0
- data/CONTRIBUTING.md +121 -0
- data/Dockerfile +249 -0
- data/Gemfile +2 -0
- data/LICENSE +22 -0
- data/README.md +555 -0
- data/Rakefile +77 -0
- data/TODO.md +12 -0
- data/VERSION +1 -0
- data/appveyor.yml +21 -0
- data/bin/license_finder +6 -0
- data/bin/license_finder_pip.py +43 -0
- data/ci/pipelines/pull-request.yml.erb +141 -0
- data/ci/pipelines/release.yml.erb +200 -0
- data/ci/scripts/containerize-tests.sh +14 -0
- data/ci/scripts/pushscript.sh +32 -0
- data/ci/scripts/run-rubocop.sh +15 -0
- data/ci/scripts/run-tests.sh +24 -0
- data/ci/scripts/test.ps1 +81 -0
- data/ci/scripts/updateChangelog.sh +84 -0
- data/ci/tasks/build-and-push-gem.yml +10 -0
- data/ci/tasks/build-windows.yml +6 -0
- data/ci/tasks/build.yml +16 -0
- data/ci/tasks/rubocop.yml +15 -0
- data/ci/tasks/run-tests.yml +10 -0
- data/ci/tasks/update-changelog.yml +18 -0
- data/dlf +12 -0
- data/examples/Gemfile +4 -0
- data/examples/custom_erb_template.rb +24 -0
- data/examples/extract_license_data.rb +63 -0
- data/examples/sample_template.erb +7 -0
- data/lib/license_finder/cli/approvals.rb +28 -0
- data/lib/license_finder/cli/base.rb +107 -0
- data/lib/license_finder/cli/dependencies.rb +44 -0
- data/lib/license_finder/cli/ignored_dependencies.rb +32 -0
- data/lib/license_finder/cli/ignored_groups.rb +32 -0
- data/lib/license_finder/cli/inherited_decisions.rb +50 -0
- data/lib/license_finder/cli/licenses.rb +26 -0
- data/lib/license_finder/cli/main.rb +221 -0
- data/lib/license_finder/cli/makes_decisions.rb +38 -0
- data/lib/license_finder/cli/patched_thor.rb +33 -0
- data/lib/license_finder/cli/permitted_licenses.rb +32 -0
- data/lib/license_finder/cli/project_name.rb +32 -0
- data/lib/license_finder/cli/restricted_licenses.rb +32 -0
- data/lib/license_finder/cli.rb +20 -0
- data/lib/license_finder/configuration.rb +186 -0
- data/lib/license_finder/core.rb +118 -0
- data/lib/license_finder/decision_applier.rb +70 -0
- data/lib/license_finder/decisions.rb +312 -0
- data/lib/license_finder/decisions_factory.rb +13 -0
- data/lib/license_finder/diff.rb +51 -0
- data/lib/license_finder/license/any_matcher.rb +15 -0
- data/lib/license_finder/license/definitions.rb +366 -0
- data/lib/license_finder/license/header_matcher.rb +17 -0
- data/lib/license_finder/license/matcher.rb +24 -0
- data/lib/license_finder/license/none_matcher.rb +11 -0
- data/lib/license_finder/license/template.rb +19 -0
- data/lib/license_finder/license/templates/0BSD.txt +10 -0
- data/lib/license_finder/license/templates/Apache1_1.txt +16 -0
- data/lib/license_finder/license/templates/Apache2.txt +172 -0
- data/lib/license_finder/license/templates/BSD.txt +24 -0
- data/lib/license_finder/license/templates/CC01.txt +30 -0
- data/lib/license_finder/license/templates/CDDL1.txt +131 -0
- data/lib/license_finder/license/templates/EPL1.txt +86 -0
- data/lib/license_finder/license/templates/GPLv2.txt +339 -0
- data/lib/license_finder/license/templates/GPLv3.txt +674 -0
- data/lib/license_finder/license/templates/ISC.txt +2 -0
- data/lib/license_finder/license/templates/LGPL.txt +165 -0
- data/lib/license_finder/license/templates/LGPL2_1.txt +169 -0
- data/lib/license_finder/license/templates/MIT.txt +9 -0
- data/lib/license_finder/license/templates/MPL1_1.txt +469 -0
- data/lib/license_finder/license/templates/MPL2.txt +373 -0
- data/lib/license_finder/license/templates/NewBSD.txt +21 -0
- data/lib/license_finder/license/templates/OFL.txt +91 -0
- data/lib/license_finder/license/templates/Python.txt +47 -0
- data/lib/license_finder/license/templates/Ruby.txt +52 -0
- data/lib/license_finder/license/templates/SimplifiedBSD.txt +19 -0
- data/lib/license_finder/license/templates/WTFPL.txt +14 -0
- data/lib/license_finder/license/templates/Zlib.txt +17 -0
- data/lib/license_finder/license/text.rb +45 -0
- data/lib/license_finder/license.rb +117 -0
- data/lib/license_finder/license_aggregator.rb +59 -0
- data/lib/license_finder/logger.rb +69 -0
- data/lib/license_finder/package.rb +202 -0
- data/lib/license_finder/package_delta.rb +61 -0
- data/lib/license_finder/package_manager.rb +181 -0
- data/lib/license_finder/package_managers/bower.rb +37 -0
- data/lib/license_finder/package_managers/bundler.rb +110 -0
- data/lib/license_finder/package_managers/cargo.rb +38 -0
- data/lib/license_finder/package_managers/carthage.rb +68 -0
- data/lib/license_finder/package_managers/cocoa_pods.rb +61 -0
- data/lib/license_finder/package_managers/composer.rb +63 -0
- data/lib/license_finder/package_managers/conan.rb +28 -0
- data/lib/license_finder/package_managers/conda.rb +131 -0
- data/lib/license_finder/package_managers/dep.rb +43 -0
- data/lib/license_finder/package_managers/dotnet.rb +83 -0
- data/lib/license_finder/package_managers/erlangmk.rb +50 -0
- data/lib/license_finder/package_managers/glide.rb +36 -0
- data/lib/license_finder/package_managers/go_15vendorexperiment.rb +87 -0
- data/lib/license_finder/package_managers/go_dep.rb +80 -0
- data/lib/license_finder/package_managers/go_modules.rb +93 -0
- data/lib/license_finder/package_managers/go_workspace.rb +116 -0
- data/lib/license_finder/package_managers/govendor.rb +73 -0
- data/lib/license_finder/package_managers/gradle.rb +99 -0
- data/lib/license_finder/package_managers/gvt.rb +69 -0
- data/lib/license_finder/package_managers/maven.rb +65 -0
- data/lib/license_finder/package_managers/mix.rb +131 -0
- data/lib/license_finder/package_managers/npm.rb +57 -0
- data/lib/license_finder/package_managers/nuget.rb +154 -0
- data/lib/license_finder/package_managers/pip.rb +70 -0
- data/lib/license_finder/package_managers/pipenv.rb +63 -0
- data/lib/license_finder/package_managers/rebar.rb +65 -0
- data/lib/license_finder/package_managers/sbt.rb +50 -0
- data/lib/license_finder/package_managers/spm.rb +93 -0
- data/lib/license_finder/package_managers/trash.rb +43 -0
- data/lib/license_finder/package_managers/yarn.rb +107 -0
- data/lib/license_finder/package_utils/activation.rb +40 -0
- data/lib/license_finder/package_utils/conan_info_parser.rb +77 -0
- data/lib/license_finder/package_utils/gradle_dependency_finder.rb +15 -0
- data/lib/license_finder/package_utils/license_files.rb +41 -0
- data/lib/license_finder/package_utils/licensing.rb +39 -0
- data/lib/license_finder/package_utils/maven_dependency_finder.rb +15 -0
- data/lib/license_finder/package_utils/notice_files.rb +40 -0
- data/lib/license_finder/package_utils/possible_license_file.rb +27 -0
- data/lib/license_finder/package_utils/pypi.rb +41 -0
- data/lib/license_finder/package_utils/sbt_dependency_finder.rb +15 -0
- data/lib/license_finder/packages/bower_package.rb +42 -0
- data/lib/license_finder/packages/bundler_package.rb +33 -0
- data/lib/license_finder/packages/cargo_package.rb +28 -0
- data/lib/license_finder/packages/carthage_package.rb +18 -0
- data/lib/license_finder/packages/cocoa_pods_package.rb +22 -0
- data/lib/license_finder/packages/composer_package.rb +13 -0
- data/lib/license_finder/packages/conan_package.rb +23 -0
- data/lib/license_finder/packages/conda_package.rb +74 -0
- data/lib/license_finder/packages/erlangmk_package.rb +114 -0
- data/lib/license_finder/packages/go_package.rb +32 -0
- data/lib/license_finder/packages/gradle_package.rb +30 -0
- data/lib/license_finder/packages/manual_package.rb +27 -0
- data/lib/license_finder/packages/maven_package.rb +27 -0
- data/lib/license_finder/packages/merged_package.rb +44 -0
- data/lib/license_finder/packages/mix_package.rb +13 -0
- data/lib/license_finder/packages/npm_package.rb +171 -0
- data/lib/license_finder/packages/nuget_package.rb +13 -0
- data/lib/license_finder/packages/pip_package.rb +50 -0
- data/lib/license_finder/packages/rebar_package.rb +13 -0
- data/lib/license_finder/packages/sbt_package.rb +22 -0
- data/lib/license_finder/packages/spm_package.rb +18 -0
- data/lib/license_finder/packages/yarn_package.rb +13 -0
- data/lib/license_finder/platform.rb +15 -0
- data/lib/license_finder/project_finder.rb +62 -0
- data/lib/license_finder/report.rb +33 -0
- data/lib/license_finder/reports/csv_report.rb +99 -0
- data/lib/license_finder/reports/diff_report.rb +29 -0
- data/lib/license_finder/reports/erb_report.rb +58 -0
- data/lib/license_finder/reports/html_report.rb +13 -0
- data/lib/license_finder/reports/json_report.rb +30 -0
- data/lib/license_finder/reports/junit_report.rb +19 -0
- data/lib/license_finder/reports/markdown_report.rb +9 -0
- data/lib/license_finder/reports/merged_report.rb +16 -0
- data/lib/license_finder/reports/templates/bootstrap.css +9 -0
- data/lib/license_finder/reports/templates/html_report.erb +113 -0
- data/lib/license_finder/reports/templates/junit_report.erb +41 -0
- data/lib/license_finder/reports/templates/markdown_report.erb +49 -0
- data/lib/license_finder/reports/templates/xml_report.erb +19 -0
- data/lib/license_finder/reports/text_report.rb +12 -0
- data/lib/license_finder/reports/xml_report.rb +19 -0
- data/lib/license_finder/scanner.rb +83 -0
- data/lib/license_finder/shared_helpers/cmd.rb +13 -0
- data/lib/license_finder/shared_helpers/common_path.rb +29 -0
- data/lib/license_finder/version.rb +6 -0
- data/lib/license_finder.rb +14 -0
- data/license_finder.gemspec +72 -0
- data/release/instructions.md +8 -0
- data/swift-all-keys.asc +240 -0
- metadata +544 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
import json
|
3
|
+
import sys
|
4
|
+
|
5
|
+
try:
|
6
|
+
from pip._internal.req import parse_requirements
|
7
|
+
except ImportError:
|
8
|
+
from pip.req import parse_requirements
|
9
|
+
|
10
|
+
try:
|
11
|
+
# since pip 19.3
|
12
|
+
from pip._internal.network.session import PipSession
|
13
|
+
except ImportError:
|
14
|
+
try:
|
15
|
+
# since pip 10
|
16
|
+
from pip._internal.download import PipSession
|
17
|
+
except ImportError:
|
18
|
+
from pip.download import PipSession
|
19
|
+
|
20
|
+
from pip._vendor import pkg_resources
|
21
|
+
from pip._vendor.six import print_
|
22
|
+
|
23
|
+
|
24
|
+
reqs = []
|
25
|
+
for req in parse_requirements(sys.argv[1], session=PipSession()):
|
26
|
+
try:
|
27
|
+
if req.req is not None and (req.markers is None or req.markers.evaluate()):
|
28
|
+
reqs.append(pkg_resources.Requirement.parse(str(req.req)))
|
29
|
+
except AttributeError:
|
30
|
+
# Since pip 20.1 (pip now takes care of markers at the resolve step)
|
31
|
+
if req.requirement is not None:
|
32
|
+
reqs.append(pkg_resources.Requirement.parse(str(req.requirement)))
|
33
|
+
|
34
|
+
transform = lambda dist: {
|
35
|
+
'name': dist.project_name,
|
36
|
+
'version': dist.version,
|
37
|
+
'location': dist.location,
|
38
|
+
'dependencies': list(map(lambda dependency: dependency.project_name, dist.requires())),
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
packages = [transform(dist) for dist in pkg_resources.working_set.resolve(reqs)]
|
43
|
+
print_(json.dumps(packages))
|
@@ -0,0 +1,141 @@
|
|
1
|
+
<% setup_slack = defined?(slack_url) && defined?(slack_channel) %>
|
2
|
+
<% ruby_versions = ruby_versions.split(',') %>
|
3
|
+
|
4
|
+
resource_types:
|
5
|
+
- name: pull-request
|
6
|
+
type: docker-image
|
7
|
+
source:
|
8
|
+
repository: teliaoss/github-pr-resource
|
9
|
+
|
10
|
+
<% if setup_slack %>
|
11
|
+
- name: slack-notification
|
12
|
+
type: registry-image
|
13
|
+
source:
|
14
|
+
repository: cfcommunity/slack-notification-resource
|
15
|
+
tag: latest
|
16
|
+
username: ((LicenseFinderDocker.username))
|
17
|
+
password: ((LicenseFinderDocker.password))
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
resources:
|
21
|
+
- name: github-pull-request
|
22
|
+
type: pull-request
|
23
|
+
check_every: 24h
|
24
|
+
webhook_token: ((GithubPullRequestWebhookToken))
|
25
|
+
source:
|
26
|
+
repository: pivotal/LicenseFinder
|
27
|
+
access_token: ((GithubApiPullRequestToken))
|
28
|
+
|
29
|
+
- name: dockerhub-pr
|
30
|
+
type: docker-image
|
31
|
+
source:
|
32
|
+
tag: edge-pr
|
33
|
+
repository: licensefinder/license_finder
|
34
|
+
email: ((LicenseFinderDockerEmail))
|
35
|
+
username: ((LicenseFinderDocker.username))
|
36
|
+
password: ((LicenseFinderDocker.password))
|
37
|
+
|
38
|
+
<% if setup_slack %>
|
39
|
+
- name: slack-alert
|
40
|
+
type: slack-notification
|
41
|
+
source:
|
42
|
+
url: <%= slack_url %>
|
43
|
+
<% end %>
|
44
|
+
|
45
|
+
jobs:
|
46
|
+
- name: build-docker-image
|
47
|
+
public: true
|
48
|
+
plan:
|
49
|
+
- get: github-pull-request
|
50
|
+
tags: ["private-worker"]
|
51
|
+
version: every
|
52
|
+
trigger: true
|
53
|
+
- put: dockerhub-pr
|
54
|
+
tags: ["private-worker"]
|
55
|
+
params:
|
56
|
+
build: github-pull-request
|
57
|
+
on_success:
|
58
|
+
put: github-pull-request
|
59
|
+
tags: ["private-worker"]
|
60
|
+
params:
|
61
|
+
path: github-pull-request
|
62
|
+
status: success
|
63
|
+
context: build-docker-image
|
64
|
+
on_failure:
|
65
|
+
put: github-pull-request
|
66
|
+
tags: ["private-worker"]
|
67
|
+
params:
|
68
|
+
path: github-pull-request
|
69
|
+
status: failure
|
70
|
+
context: build-docker-image
|
71
|
+
<% ruby_versions.each do |ruby_version| %>
|
72
|
+
- name: PR-ruby-<%= ruby_version %>-linux
|
73
|
+
public: true
|
74
|
+
plan:
|
75
|
+
- get: github-pull-request
|
76
|
+
tags: ["private-worker"]
|
77
|
+
passed: [build-docker-image]
|
78
|
+
version: every
|
79
|
+
- get: dockerhub-pr
|
80
|
+
tags: ["private-worker"]
|
81
|
+
passed: [build-docker-image]
|
82
|
+
trigger: true
|
83
|
+
- task: ruby-<%= ruby_version %>
|
84
|
+
tags: ["private-worker"]
|
85
|
+
privileged: true
|
86
|
+
image: dockerhub-pr
|
87
|
+
file: github-pull-request/ci/tasks/run-tests.yml
|
88
|
+
params:
|
89
|
+
RUBY_VERSION_UNDER_TEST: <%= ruby_version %>
|
90
|
+
input_mapping: { LicenseFinder: github-pull-request }
|
91
|
+
on_success:
|
92
|
+
put: github-pull-request
|
93
|
+
tags: ["private-worker"]
|
94
|
+
params:
|
95
|
+
path: github-pull-request
|
96
|
+
status: success
|
97
|
+
context: ruby-<%= ruby_version %>
|
98
|
+
on_failure:
|
99
|
+
put: github-pull-request
|
100
|
+
tags: ["private-worker"]
|
101
|
+
params:
|
102
|
+
path: github-pull-request
|
103
|
+
status: failure
|
104
|
+
context: ruby-<%= ruby_version %>
|
105
|
+
<% if setup_slack %>
|
106
|
+
on_failure:
|
107
|
+
put: slack-alert
|
108
|
+
tags: ["private-worker"]
|
109
|
+
params:
|
110
|
+
channel: '<%= slack_channel %>'
|
111
|
+
icon_emoji: ':crying_cat_face:'
|
112
|
+
text: '<%= "License Finder build failed. Build: https://norsk.cf-app.com/teams/main/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME" %>'
|
113
|
+
<% end %>
|
114
|
+
<% end %>
|
115
|
+
|
116
|
+
- name: PR-rubocop
|
117
|
+
public: true
|
118
|
+
plan:
|
119
|
+
- get: github-pull-request
|
120
|
+
tags: ["private-worker"]
|
121
|
+
trigger: true
|
122
|
+
version: every
|
123
|
+
- task: run-rubocop
|
124
|
+
tags: ["private-worker"]
|
125
|
+
privileged: true
|
126
|
+
file: github-pull-request/ci/tasks/rubocop.yml
|
127
|
+
input_mapping: { LicenseFinder: github-pull-request }
|
128
|
+
on_success:
|
129
|
+
put: github-pull-request
|
130
|
+
tags: ["private-worker"]
|
131
|
+
params:
|
132
|
+
path: github-pull-request
|
133
|
+
status: success
|
134
|
+
context: run-rubocop
|
135
|
+
on_failure:
|
136
|
+
put: github-pull-request
|
137
|
+
tags: ["private-worker"]
|
138
|
+
params:
|
139
|
+
path: github-pull-request
|
140
|
+
status: failure
|
141
|
+
context: run-rubocop
|
@@ -0,0 +1,200 @@
|
|
1
|
+
<% setup_slack = defined?(slack_url) && defined?(slack_channel) %>
|
2
|
+
<% ruby_versions = ruby_versions.split(',') %>
|
3
|
+
|
4
|
+
resource_types:
|
5
|
+
<% if setup_slack %>
|
6
|
+
- name: slack-notification
|
7
|
+
type: registry-image
|
8
|
+
source:
|
9
|
+
repository: cfcommunity/slack-notification-resource
|
10
|
+
tag: latest
|
11
|
+
username: ((LicenseFinderDocker.username))
|
12
|
+
password: ((LicenseFinderDocker.password))
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
resources:
|
16
|
+
- name: lf-git
|
17
|
+
type: git
|
18
|
+
source:
|
19
|
+
uri: git@github.com:pivotal/LicenseFinder.git
|
20
|
+
private_key: ((CfOslBot.private_key))
|
21
|
+
branch: master
|
22
|
+
ignore_paths: [VERSION, CHANGELOG.md]
|
23
|
+
|
24
|
+
- name: semver-version
|
25
|
+
type: semver
|
26
|
+
source:
|
27
|
+
driver: gcs
|
28
|
+
bucket: lf-semver-version
|
29
|
+
key: version
|
30
|
+
json_key: ((GCPQueuedReportsBucketCredentials))
|
31
|
+
|
32
|
+
- name: dockerhub-edge
|
33
|
+
type: docker-image
|
34
|
+
source:
|
35
|
+
tag: edge
|
36
|
+
repository: licensefinder/license_finder
|
37
|
+
email: ((LicenseFinderDockerEmail))
|
38
|
+
username: ((LicenseFinderDocker.username))
|
39
|
+
password: ((LicenseFinderDocker.password))
|
40
|
+
|
41
|
+
- name: dockerhub
|
42
|
+
type: docker-image
|
43
|
+
source:
|
44
|
+
repository: licensefinder/license_finder
|
45
|
+
email: ((LicenseFinderDockerEmail))
|
46
|
+
username: ((LicenseFinderDocker.username))
|
47
|
+
password: ((LicenseFinderDocker.password))
|
48
|
+
|
49
|
+
- name: lf-release
|
50
|
+
type: github-release
|
51
|
+
check_every: 24h
|
52
|
+
source:
|
53
|
+
owner: pivotal
|
54
|
+
repository: LicenseFinder
|
55
|
+
access_token: ((GithubApiRootToken))
|
56
|
+
|
57
|
+
<% if setup_slack %>
|
58
|
+
- name: slack-alert
|
59
|
+
type: slack-notification
|
60
|
+
source:
|
61
|
+
url: <%= slack_url %>
|
62
|
+
<% end %>
|
63
|
+
|
64
|
+
jobs:
|
65
|
+
- name: build-docker-image
|
66
|
+
public: true
|
67
|
+
plan:
|
68
|
+
- get: lf-git
|
69
|
+
tags: ["private-worker"]
|
70
|
+
trigger: true
|
71
|
+
- put: dockerhub-edge
|
72
|
+
tags: ["private-worker"]
|
73
|
+
params:
|
74
|
+
build: lf-git
|
75
|
+
|
76
|
+
<% ruby_versions.each do |ruby_version| %>
|
77
|
+
- name: ruby-<%= ruby_version %>
|
78
|
+
public: true
|
79
|
+
plan:
|
80
|
+
- get: dockerhub-edge
|
81
|
+
tags: ["private-worker"]
|
82
|
+
passed: [build-docker-image]
|
83
|
+
trigger: true
|
84
|
+
- get: LicenseFinder
|
85
|
+
tags: ["private-worker"]
|
86
|
+
resource: lf-git
|
87
|
+
passed: [build-docker-image]
|
88
|
+
version: every
|
89
|
+
- task: ruby-<%= ruby_version %>
|
90
|
+
tags: ["private-worker"]
|
91
|
+
privileged: true
|
92
|
+
image: dockerhub-edge
|
93
|
+
file: LicenseFinder/ci/tasks/run-tests.yml
|
94
|
+
params:
|
95
|
+
RUBY_VERSION_UNDER_TEST: <%= ruby_version %>
|
96
|
+
|
97
|
+
<% if setup_slack %>
|
98
|
+
on_failure:
|
99
|
+
put: slack-alert
|
100
|
+
tags: ["private-worker"]
|
101
|
+
params:
|
102
|
+
channel: '<%= slack_channel %>'
|
103
|
+
icon_emoji: ':crying_cat_face:'
|
104
|
+
text: '<%= "License Finder build failed. Build: https://norsk.cf-app.com/teams/main/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME" %>'
|
105
|
+
<% end %>
|
106
|
+
<% end %>
|
107
|
+
|
108
|
+
- name: rubocop
|
109
|
+
public: true
|
110
|
+
plan:
|
111
|
+
- get: dockerhub-edge
|
112
|
+
tags: ["private-worker"]
|
113
|
+
passed: [build-docker-image]
|
114
|
+
trigger: true
|
115
|
+
- get: LicenseFinder
|
116
|
+
tags: ["private-worker"]
|
117
|
+
resource: lf-git
|
118
|
+
version: every
|
119
|
+
passed: [build-docker-image]
|
120
|
+
- task: run-rubocop
|
121
|
+
tags: ["private-worker"]
|
122
|
+
privileged: true
|
123
|
+
file: LicenseFinder/ci/tasks/rubocop.yml
|
124
|
+
input_mapping: { LicenseFinder: LicenseFinder }
|
125
|
+
|
126
|
+
- name: bump-major
|
127
|
+
plan:
|
128
|
+
- get: semver-version
|
129
|
+
tags: ["private-worker"]
|
130
|
+
params: {bump: major}
|
131
|
+
- put: semver-version
|
132
|
+
tags: ["private-worker"]
|
133
|
+
params: {file: semver-version/version}
|
134
|
+
|
135
|
+
|
136
|
+
- name: bump-minor
|
137
|
+
plan:
|
138
|
+
- get: semver-version
|
139
|
+
tags: ["private-worker"]
|
140
|
+
params: {bump: minor}
|
141
|
+
- put: semver-version
|
142
|
+
tags: ["private-worker"]
|
143
|
+
params: {file: semver-version/version}
|
144
|
+
|
145
|
+
- name: bump-patch
|
146
|
+
plan:
|
147
|
+
- get: semver-version
|
148
|
+
tags: ["private-worker"]
|
149
|
+
params: {bump: patch}
|
150
|
+
- put: semver-version
|
151
|
+
tags: ["private-worker"]
|
152
|
+
params: {file: semver-version/version}
|
153
|
+
|
154
|
+
- name: release
|
155
|
+
disable_manual_trigger: true
|
156
|
+
plan:
|
157
|
+
- get: lf-git
|
158
|
+
tags: ["private-worker"]
|
159
|
+
passed: [<%= "#{ruby_versions.map{ |version| "ruby-#{version}" unless version == "jruby-9.2.14.0" }.compact.join(', ') }, rubocop" %>]
|
160
|
+
- get: semver-version
|
161
|
+
tags: ["private-worker"]
|
162
|
+
trigger: true
|
163
|
+
- get: dockerhub
|
164
|
+
tags: ["private-worker"]
|
165
|
+
params:
|
166
|
+
save: true
|
167
|
+
- get: lf-release
|
168
|
+
tags: ["private-worker"]
|
169
|
+
- task: update-changelog
|
170
|
+
tags: ["private-worker"]
|
171
|
+
image: dockerhub
|
172
|
+
params:
|
173
|
+
GIT_USERNAME: ((GithubApiUser))
|
174
|
+
GIT_EMAIL: ((GithubApiEmail))
|
175
|
+
file: lf-git/ci/tasks/update-changelog.yml
|
176
|
+
- put: dockerhub
|
177
|
+
tags: ["private-worker"]
|
178
|
+
params:
|
179
|
+
build: lf-git-changed
|
180
|
+
tag: version/version.txt
|
181
|
+
tag_as_latest: true
|
182
|
+
- put: lf-git
|
183
|
+
tags: ["private-worker"]
|
184
|
+
params:
|
185
|
+
repository: lf-git-changed
|
186
|
+
- task: build-and-push-gem
|
187
|
+
tags: ["private-worker"]
|
188
|
+
image: dockerhub
|
189
|
+
params:
|
190
|
+
GIT_USERNAME: ((GithubApiUser))
|
191
|
+
GIT_EMAIL: ((GithubApiEmail))
|
192
|
+
GIT_PRIVATE_KEY: ((CfOslBot.private_key))
|
193
|
+
GEM_API_KEY: ((LicenseFinderGemApiKey))
|
194
|
+
file: lf-git/ci/tasks/build-and-push-gem.yml
|
195
|
+
- put: lf-release
|
196
|
+
tags: ["private-worker"]
|
197
|
+
params:
|
198
|
+
name: version/tag.txt
|
199
|
+
tag: version/tag.txt
|
200
|
+
body: version/changelog.txt
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -e
|
4
|
+
|
5
|
+
apk update && apk add git
|
6
|
+
source /opt/resource/common.sh
|
7
|
+
start_docker 3 3
|
8
|
+
|
9
|
+
pushd LicenseFinder
|
10
|
+
docker build . -t licensefinder/license_finder
|
11
|
+
|
12
|
+
docker run -v $PWD:/lf -it licensefinder/license_finder /bin/bash \
|
13
|
+
-exli /lf/ci/scripts/run-tests.sh "$RUBY_VERSION_UNDER_TEST"
|
14
|
+
popd
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
echo -e "---\n:rubygems_api_key: $GEM_API_KEY" > ~/.gem/credentials
|
4
|
+
chmod 0600 ~/.gem/credentials
|
5
|
+
|
6
|
+
build_version="$(cat semver-version/version)"
|
7
|
+
cd lf-git
|
8
|
+
built_gem="pkg/license_finder-$build_version.gem"
|
9
|
+
|
10
|
+
git config --global user.email $GIT_EMAIL
|
11
|
+
git config --global user.name $GIT_USERNAME
|
12
|
+
|
13
|
+
git config --global push.default simple
|
14
|
+
|
15
|
+
git checkout master
|
16
|
+
|
17
|
+
mkdir ~/.ssh
|
18
|
+
ssh-keyscan github.com >> ~/.ssh/known_hosts
|
19
|
+
eval "$(ssh-agent -s)"
|
20
|
+
echo "$GIT_PRIVATE_KEY" > ~/.ssh/id_rsa
|
21
|
+
chmod 600 ~/.ssh/id_rsa
|
22
|
+
ssh-add -k ~/.ssh/id_rsa
|
23
|
+
|
24
|
+
if [ -z "$(gem fetch license_finder -v $build_version 2>&1 | grep ERROR)" ]; then
|
25
|
+
echo "LicenseFinder-$build_version already exists on Rubygems"
|
26
|
+
else
|
27
|
+
rake release
|
28
|
+
fi
|
29
|
+
|
30
|
+
export EXIT_STATUS=$?
|
31
|
+
kill $(ps aux | grep ssh-agent | head -n 1 | awk '{print $2}')
|
32
|
+
exit $EXIT_STATUS
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/bin/bash -e
|
2
|
+
|
3
|
+
cd LicenseFinder
|
4
|
+
|
5
|
+
gem update --system
|
6
|
+
bundle install --without runtime default
|
7
|
+
|
8
|
+
rubocop_version=`cat Gemfile.lock | grep ' rubocop' | awk -F'[\(*\)]' '{print $2;exit}'`
|
9
|
+
rubocop_performance_version=`cat Gemfile.lock | grep ' rubocop-performance' | awk -F'[\(*\)]' '{print $2;exit}'`
|
10
|
+
|
11
|
+
gem install rubocop --version $rubocop_version
|
12
|
+
gem install rubocop-performance --version $rubocop_performance_version
|
13
|
+
|
14
|
+
echo "Running Rubocop ..."
|
15
|
+
/usr/local/bundle/bin/rubocop --require rubocop-performance
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/bin/bash -elx
|
2
|
+
|
3
|
+
set -o pipefail
|
4
|
+
|
5
|
+
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
6
|
+
PROJECT_ROOT="$( dirname "$( dirname $DIR )" )"
|
7
|
+
|
8
|
+
pushd "$PROJECT_ROOT"
|
9
|
+
|
10
|
+
rvm install --default $RUBY_VERSION_UNDER_TEST
|
11
|
+
ruby --version
|
12
|
+
|
13
|
+
export GOPATH=$HOME/go
|
14
|
+
export RUBYOPT='-E utf-8'
|
15
|
+
|
16
|
+
gem update --system
|
17
|
+
gem install bundler
|
18
|
+
bundle install
|
19
|
+
|
20
|
+
bundle exec rake install
|
21
|
+
bundle exec rake spec
|
22
|
+
|
23
|
+
bundle exec rake features
|
24
|
+
popd
|
data/ci/scripts/test.ps1
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
Set-PSDebug -strict # "set -u"
|
2
|
+
$ErrorActionPreference = "Stop" # "set -e" for cmdlet errors
|
3
|
+
|
4
|
+
# avoid overly narrow default linewrap
|
5
|
+
$term = (get-host).ui.rawui
|
6
|
+
$size = $term.buffersize
|
7
|
+
$size.width = 128
|
8
|
+
$term.buffersize = $size
|
9
|
+
$size = $term.windowsize
|
10
|
+
$size.width = 128
|
11
|
+
$term.windowsize = $size
|
12
|
+
|
13
|
+
function stream-cmd {
|
14
|
+
param ($command, $arguments)
|
15
|
+
$cmdline = "$($command) $($arguments)"
|
16
|
+
cmd /c $cmdline
|
17
|
+
if (-not ($?)) {
|
18
|
+
throw "$($cmdline) failed"
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
function prepend-path {
|
23
|
+
param ($dir)
|
24
|
+
$env:PATH = $dir + ";" + $env:PATH
|
25
|
+
}
|
26
|
+
|
27
|
+
function prepare-vm {
|
28
|
+
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
29
|
+
choco install -y git ruby nodejs golang python2 erlang gradle maven
|
30
|
+
|
31
|
+
$env:JAVA_HOME = 'C:\Program Files\Java\jdk1.8.0_144'
|
32
|
+
prepend-path 'C:\Program Files\Java\jdk1.8.0_144\bin'
|
33
|
+
prepend-path 'C:\tools\go\bin'
|
34
|
+
prepend-path 'C:\Program Files\Git\bin'
|
35
|
+
prepend-path 'C:\Program Files\erl9.0\bin'
|
36
|
+
stream-cmd "rmdir" "/s /q C:\rebar"
|
37
|
+
stream-cmd "git" "clone https://github.com/rebar/rebar C:\rebar"
|
38
|
+
stream-cmd "cd c:\rebar & .\bootstrap.bat" ""
|
39
|
+
stream-cmd "cp" "c:\rebar\rebar c:\tools"
|
40
|
+
stream-cmd "cp" "c:\rebar\rebar.cmd c:\tools"
|
41
|
+
prepend-path 'C:\tools'
|
42
|
+
mkdir -Force 'C:\Go'
|
43
|
+
mkdir -Force 'C:\Windows\system32\config\systemprofile\AppData\Local\Temp'
|
44
|
+
$env:GOPATH = 'C:\Go'
|
45
|
+
prepend-path 'C:\Go\bin'
|
46
|
+
stream-cmd "go" "get -d github.com/tools/godep"
|
47
|
+
prepend-path 'C:\Python27\Scripts'
|
48
|
+
prepend-path 'C:\Program Files\nodejs'
|
49
|
+
stream-cmd "npm" "install bower -g"
|
50
|
+
cp 'C:\Windows\System32\config\systemprofile\AppData\Roaming\npm\bower.cmd' 'C:\Program Files\nodejs'
|
51
|
+
cp -r 'C:\Windows\System32\config\systemprofile\AppData\Roaming\npm\node_modules\bower\*' 'C:\Program Files\nodejs\node_modules\bower' -Force
|
52
|
+
prepend-path 'C:\Ruby23\bin'
|
53
|
+
prepend-path 'C:\ProgramData\chocolatey\lib\gradle\tools\gradle-3.4.1\bin'
|
54
|
+
prepend-path 'C:\ProgramData\chocolatey\lib\maven\apache-maven-3.5.0\bin'
|
55
|
+
}
|
56
|
+
|
57
|
+
function set-env-vars {
|
58
|
+
prepend-path 'C:\Program Files\Java\jdk1.8.0_144\bin'
|
59
|
+
prepend-path 'C:\tools\go\bin'
|
60
|
+
prepend-path 'C:\Program Files\Git\bin'
|
61
|
+
prepend-path 'C:\Program Files\erl9.0\bin'
|
62
|
+
prepend-path 'C:\tools'
|
63
|
+
prepend-path 'C:\Go\bin'
|
64
|
+
prepend-path 'C:\Python27\Scripts'
|
65
|
+
prepend-path 'C:\Program Files\nodejs'
|
66
|
+
prepend-path 'C:\Ruby23\bin'
|
67
|
+
}
|
68
|
+
|
69
|
+
function run-tests {
|
70
|
+
set-env-vars
|
71
|
+
push-location LicenseFinder
|
72
|
+
stream-cmd "gem" "install bundler"
|
73
|
+
stream-cmd "bundle" "install"
|
74
|
+
stream-cmd "bundle" "exec rake install"
|
75
|
+
stream-cmd "bundle" "exec rake spec"
|
76
|
+
stream-cmd "bundle" "exec rake features"
|
77
|
+
pop-location
|
78
|
+
}
|
79
|
+
|
80
|
+
prepare-vm
|
81
|
+
run-tests
|
@@ -0,0 +1,84 @@
|
|
1
|
+
#!/bin/bash --login
|
2
|
+
|
3
|
+
set -e
|
4
|
+
|
5
|
+
git clone lf-git lf-git-changed
|
6
|
+
|
7
|
+
CHANGELOG_FILE="CHANGELOG.md"
|
8
|
+
VERSION_FILE="VERSION"
|
9
|
+
|
10
|
+
COMMIT_URL="https://github.com/pivotal/LicenseFinder/commit/"
|
11
|
+
|
12
|
+
TAGS=( "Added" "ADDED" "Fixed" "FIXED" "Changed" "CHANGED" "Deprecated" "DEPRECATED" "Removed" "REMOVED" "Security" "SECURITY" )
|
13
|
+
CONTRIBUTORS=( "Shane Lattanzio" "Li Tai" "Vikram Yadav" "Mark Fiorvanti" "Serafima Ostrovskaya" "Yoon Jean Kim" "Tony Wong" "Parv Mital" )
|
14
|
+
|
15
|
+
OLD="v$(cat ./lf-release/version)"
|
16
|
+
VERSION="$(cat semver-version/version)"
|
17
|
+
VERSION_TAG="v$VERSION"
|
18
|
+
|
19
|
+
# Add version title information
|
20
|
+
LOG=$(echo "# [$VERSION] / $(date +%Y-%m-%d)\n")
|
21
|
+
|
22
|
+
cd lf-git-changed
|
23
|
+
|
24
|
+
for ((i = 0; i < ${#TAGS[@]}; i++)); do
|
25
|
+
if [[ $i -gt 0 ]]; then
|
26
|
+
TAG_COMPARE=$(echo "${TAGS[$i]}" | grep -qi "${TAGS[$i - 1]}" && echo same || echo different)
|
27
|
+
HEADER_EXISTS=$(echo "$LOG" | grep -qi "${TAGS[$i - 1]}" && echo exists || echo dne)
|
28
|
+
fi
|
29
|
+
|
30
|
+
GIT_LOG=$'\n'$(git log "$OLD"...HEAD --pretty=format:"%H%n%s - [%h]($COMMIT_URL%H) - %an%n%n"| grep -E "\[${TAGS[$i]}\] .*" | sort | sed -e "s/\[${TAGS[$i]}\]/\*/g")
|
31
|
+
|
32
|
+
# Only add section information if it has content
|
33
|
+
if [[ $i -ne $[${#TAGS[@]}-1] && $GIT_LOG =~ "." && $i -gt 0 && "$TAG_COMPARE" == "same" && "$HEADER_EXISTS" == "exists" ]]; then
|
34
|
+
LOG="$LOG""$GIT_LOG\n"
|
35
|
+
elif [[ $GIT_LOG =~ "." ]]; then
|
36
|
+
if [[ $i -gt 0 && "$TAG_COMPARE" == "same" && "$HEADER_EXISTS" == "dne" ]]; then
|
37
|
+
LOG="$LOG"$'\n'$(echo "### ${TAGS[$i - 1]}")"$GIT_LOG\n"
|
38
|
+
else
|
39
|
+
LOG="$LOG"$'\n'$(echo "### ${TAGS[$i]}")"$GIT_LOG\n"
|
40
|
+
fi
|
41
|
+
fi
|
42
|
+
done
|
43
|
+
|
44
|
+
# Strip Pivotal contributors
|
45
|
+
for ((i = 0; i < ${#CONTRIBUTORS[@]}; i++)); do
|
46
|
+
LOG=$(echo "$LOG" | sed -e "s/-* ${CONTRIBUTORS[$i]}//g")
|
47
|
+
done
|
48
|
+
|
49
|
+
# Prepend new version information at the top of the file
|
50
|
+
echo -e "$LOG\n$(cat $CHANGELOG_FILE)" > $CHANGELOG_FILE
|
51
|
+
|
52
|
+
# Append version hyperlink to the end of the file
|
53
|
+
echo -e "[$VERSION]: https://github.com/pivotal/LicenseFinder/compare/$OLD...$VERSION_TAG" >> $CHANGELOG_FILE
|
54
|
+
|
55
|
+
# Update version file in git
|
56
|
+
echo $VERSION > $VERSION_FILE
|
57
|
+
|
58
|
+
git config --global user.email $GIT_EMAIL
|
59
|
+
git config --global user.name $GIT_USERNAME
|
60
|
+
|
61
|
+
git add $CHANGELOG_FILE
|
62
|
+
git add $VERSION_FILE
|
63
|
+
|
64
|
+
git commit -m "Update changelog for version: $VERSION"
|
65
|
+
|
66
|
+
echo "New version: $VERSION"
|
67
|
+
echo "Current version: $OLD"
|
68
|
+
|
69
|
+
if [ "$VERSION" == "$OLD" ]; then
|
70
|
+
echo "Error: Version in VERSION file is identical to latest release on github"
|
71
|
+
exit 1
|
72
|
+
fi
|
73
|
+
|
74
|
+
body=$(cat "$CHANGELOG_FILE" | sed -n "/# \[$VERSION\]/,/# \[[\d\.]*/p" | sed '$d' | tail -n +2)
|
75
|
+
|
76
|
+
echo "$VERSION_TAG" > ../version/tag.txt
|
77
|
+
echo "$VERSION" > ../version/version.txt
|
78
|
+
echo "$body" > ../version/changelog.txt
|
79
|
+
|
80
|
+
echo "Tag: $VERSION_TAG"
|
81
|
+
echo "Version: $VERSION"
|
82
|
+
echo "Body: $body"
|
83
|
+
|
84
|
+
exit 0
|
data/ci/tasks/build.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
platform: linux
|
2
|
+
|
3
|
+
image_resource:
|
4
|
+
type: docker-image
|
5
|
+
source:
|
6
|
+
repository: concourse/docker-image-resource
|
7
|
+
tag: latest
|
8
|
+
|
9
|
+
inputs:
|
10
|
+
- name: LicenseFinder
|
11
|
+
|
12
|
+
run:
|
13
|
+
path: ./LicenseFinder/ci/scripts/containerize-tests.sh
|
14
|
+
|
15
|
+
params:
|
16
|
+
RUBY_VERSION_UNDER_TEST:
|
@@ -0,0 +1,15 @@
|
|
1
|
+
platform: linux
|
2
|
+
|
3
|
+
image_resource:
|
4
|
+
type: registry-image
|
5
|
+
source:
|
6
|
+
repository: ruby
|
7
|
+
tag: 2.7.1
|
8
|
+
username: ((LicenseFinderDocker.username))
|
9
|
+
password: ((LicenseFinderDocker.password))
|
10
|
+
|
11
|
+
inputs:
|
12
|
+
- name: LicenseFinder
|
13
|
+
|
14
|
+
run:
|
15
|
+
path: ./LicenseFinder/ci/scripts/run-rubocop.sh
|