mirror of
https://github.com/github/codeql-action.git
synced 2025-12-10 01:34:36 +08:00
Compare commits
401 Commits
fix-uncond
...
v3.25.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f596b4ae3 | ||
|
|
de8916ec5a | ||
|
|
4909c1ffb9 | ||
|
|
f45390cde1 | ||
|
|
1be8c488eb | ||
|
|
82edfe29ce | ||
|
|
8786e1f9a1 | ||
|
|
3c7ac61481 | ||
|
|
b5bd9be6da | ||
|
|
c7f9125735 | ||
|
|
1c7e8b2cf2 | ||
|
|
5d73b1bd71 | ||
|
|
c4fb451437 | ||
|
|
556b3bcfae | ||
|
|
ef66aeacbf | ||
|
|
9b87e0a8c4 | ||
|
|
18111b696b | ||
|
|
ade98b980a | ||
|
|
8566d50a79 | ||
|
|
453a95695a | ||
|
|
c7a8056fc3 | ||
|
|
71e6077db0 | ||
|
|
db2b739f55 | ||
|
|
b8e2556072 | ||
|
|
d8b8ad0cb2 | ||
|
|
fc090c44d2 | ||
|
|
ea78e51e31 | ||
|
|
14eab9153b | ||
|
|
59771ddf53 | ||
|
|
24b71bdbcc | ||
|
|
f2c09fb28a | ||
|
|
e006461bad | ||
|
|
d37ec9a9ec | ||
|
|
1ae9ce7145 | ||
|
|
df5a14dc28 | ||
|
|
a22989dcd4 | ||
|
|
3f70eaa4d3 | ||
|
|
2b2cee5229 | ||
|
|
4fcf7a216c | ||
|
|
d30d1cabb4 | ||
|
|
f21d2d2d1a | ||
|
|
55585360a3 | ||
|
|
fa75c144b4 | ||
|
|
5a599c68cf | ||
|
|
aa4a08dd29 | ||
|
|
2eaad471b6 | ||
|
|
cbe29f55df | ||
|
|
8f057a3d8e | ||
|
|
3d49faaabb | ||
|
|
e37d0f3e7c | ||
|
|
5b74166227 | ||
|
|
829376a618 | ||
|
|
efc474680f | ||
|
|
93f93fc2ad | ||
|
|
1ac88f37c7 | ||
|
|
3901d1208a | ||
|
|
4b0172d9c2 | ||
|
|
d4e7b0e493 | ||
|
|
96f44cb9d2 | ||
|
|
1829b70201 | ||
|
|
8ea1a11e72 | ||
|
|
24a01703e4 | ||
|
|
987236cc0f | ||
|
|
287c064d05 | ||
|
|
ee097cec19 | ||
|
|
5e9199f7b4 | ||
|
|
21eac7ce4e | ||
|
|
88fafebdd3 | ||
|
|
1a60a91726 | ||
|
|
2f0d0eaebd | ||
|
|
8f1e24411b | ||
|
|
33e3a7c976 | ||
|
|
84efe241da | ||
|
|
218c52e7c7 | ||
|
|
dd2106d0d1 | ||
|
|
3d026bcb8d | ||
|
|
f242fc9172 | ||
|
|
24a95a0411 | ||
|
|
7c23a5e578 | ||
|
|
746a1af6ad | ||
|
|
1f8d877ef2 | ||
|
|
140158642f | ||
|
|
3f0cb87e80 | ||
|
|
d33e75159d | ||
|
|
e94a917e33 | ||
|
|
bcb5e6e0b8 | ||
|
|
fcdff8b3c9 | ||
|
|
e6b2c0d6b8 | ||
|
|
4e8e3439dd | ||
|
|
f0a5e52d93 | ||
|
|
4a666f8539 | ||
|
|
1c270d01c7 | ||
|
|
11eab0d2e6 | ||
|
|
f64694af39 | ||
|
|
4355270be1 | ||
|
|
3f041c51a5 | ||
|
|
7df281f2fe | ||
|
|
f421cda8e7 | ||
|
|
5f535debfe | ||
|
|
278465cdfb | ||
|
|
e0bc6b7942 | ||
|
|
6ab7733abd | ||
|
|
d8293662f4 | ||
|
|
9ba21c3639 | ||
|
|
c7eea240e2 | ||
|
|
65e69c8a4b | ||
|
|
c037115ddf | ||
|
|
d3c32a84cb | ||
|
|
26540626a5 | ||
|
|
d3257627d7 | ||
|
|
978bdd643f | ||
|
|
2cc8bbd0e0 | ||
|
|
3bd9c3e65c | ||
|
|
dcf00b3fd4 | ||
|
|
f8dd543c81 | ||
|
|
6514cbb626 | ||
|
|
f06c933b16 | ||
|
|
eda4878a3d | ||
|
|
eeaea14a62 | ||
|
|
ec214df87a | ||
|
|
f4936c4c20 | ||
|
|
99c9897648 | ||
|
|
d7c4cc360c | ||
|
|
048b508a9d | ||
|
|
84ba7fb56d | ||
|
|
016720d81f | ||
|
|
f835435c19 | ||
|
|
58194bf81a | ||
|
|
956f09c2ef | ||
|
|
a99c6230dc | ||
|
|
155888c08e | ||
|
|
82b82e58c0 | ||
|
|
3c4b8bc120 | ||
|
|
a0a63a2dd4 | ||
|
|
3bd271cec3 | ||
|
|
70aa50b057 | ||
|
|
6ac57535de | ||
|
|
e20c273295 | ||
|
|
2bbafcdd7f | ||
|
|
7e30c622b0 | ||
|
|
ccc609bf1a | ||
|
|
a12b868bbc | ||
|
|
3d817349a4 | ||
|
|
ca4079b3a2 | ||
|
|
7cdd97256b | ||
|
|
1b1aada464 | ||
|
|
6505708f95 | ||
|
|
09d4101d2b | ||
|
|
a3ab02e645 | ||
|
|
9cf4574790 | ||
|
|
964f5e7811 | ||
|
|
9c0c35b370 | ||
|
|
c84e4c8e7b | ||
|
|
4aca720110 | ||
|
|
7f375aeb76 | ||
|
|
294b6df61d | ||
|
|
1aae1e7090 | ||
|
|
ea1261a218 | ||
|
|
66736a1775 | ||
|
|
dfb0fd0039 | ||
|
|
423a04bb2c | ||
|
|
6a57a861ab | ||
|
|
4b2a78627b | ||
|
|
05963f47d8 | ||
|
|
2b9b521560 | ||
|
|
1ecc2779e9 | ||
|
|
e28ae3a84c | ||
|
|
bddfc7c6d5 | ||
|
|
3edd1bf725 | ||
|
|
88a0b7abb3 | ||
|
|
88b28eb70d | ||
|
|
f055b5e672 | ||
|
|
0d680ab61c | ||
|
|
3d82264f40 | ||
|
|
e402144d13 | ||
|
|
a009e4d1af | ||
|
|
3b6ebfb5f8 | ||
|
|
8da95d81a8 | ||
|
|
070b05147a | ||
|
|
649f3e87e1 | ||
|
|
362c407426 | ||
|
|
f195496548 | ||
|
|
a7b089b87e | ||
|
|
ef507e1748 | ||
|
|
3ab4101902 | ||
|
|
a006adfa77 | ||
|
|
5e882999f1 | ||
|
|
69e120d747 | ||
|
|
5ec06c71f0 | ||
|
|
caf377935a | ||
|
|
532ca5486e | ||
|
|
2fa207a8b7 | ||
|
|
24c3eda0e3 | ||
|
|
27a6cd0a11 | ||
|
|
1bac334738 | ||
|
|
83a02f7883 | ||
|
|
849379362c | ||
|
|
5fa9b09edf | ||
|
|
baf3361f31 | ||
|
|
40034859a7 | ||
|
|
8762383e8d | ||
|
|
8a470fddaf | ||
|
|
d59eafb69b | ||
|
|
158d0780dc | ||
|
|
2307ff547f | ||
|
|
ccd3f02545 | ||
|
|
c0917251d4 | ||
|
|
e12a8cc5eb | ||
|
|
888ab31e3e | ||
|
|
bd56a05133 | ||
|
|
7bde9061b4 | ||
|
|
9330c6877d | ||
|
|
db9620802e | ||
|
|
62712e9ff9 | ||
|
|
52f2347108 | ||
|
|
1a6bac42d0 | ||
|
|
cc3808ec2a | ||
|
|
d8595f5543 | ||
|
|
166b8a70b8 | ||
|
|
2c235f1a60 | ||
|
|
17c5ab2ca1 | ||
|
|
60465730fb | ||
|
|
e4a536270d | ||
|
|
28b564f8c6 | ||
|
|
25d334f188 | ||
|
|
66c3cec3e8 | ||
|
|
36f1104e11 | ||
|
|
905ae4af53 | ||
|
|
6dab9f2356 | ||
|
|
4d6d2bfeaa | ||
|
|
633baf86c3 | ||
|
|
ed2c332cfe | ||
|
|
a39d1d29ad | ||
|
|
47b3d888fe | ||
|
|
28c290059f | ||
|
|
eb991df649 | ||
|
|
a74dcdb056 | ||
|
|
aeb89ef79a | ||
|
|
2896599ec9 | ||
|
|
e3a86ed8b6 | ||
|
|
5d55901fc8 | ||
|
|
908a88334d | ||
|
|
9bce06dffb | ||
|
|
c9f3eed85d | ||
|
|
88189dc01e | ||
|
|
2a15560d6d | ||
|
|
9467b486f0 | ||
|
|
e2e140ad14 | ||
|
|
5b1ae298f9 | ||
|
|
982d9346ad | ||
|
|
ebda17e859 | ||
|
|
cca1ddefc0 | ||
|
|
f32f0bf8e4 | ||
|
|
bf8c75ee37 | ||
|
|
5a96876652 | ||
|
|
1c652cd4ee | ||
|
|
36c51ac2b5 | ||
|
|
a7dc229496 | ||
|
|
592977e6ae | ||
|
|
1737b12155 | ||
|
|
4a610e2380 | ||
|
|
b9d85b4c34 | ||
|
|
c709994d27 | ||
|
|
8cb81db135 | ||
|
|
0ce9708b98 | ||
|
|
2ddf87a698 | ||
|
|
ef0a773901 | ||
|
|
65b0987dbe | ||
|
|
29e98fd241 | ||
|
|
b7c408a8b7 | ||
|
|
379614612a | ||
|
|
01d302a04e | ||
|
|
3a7796d6ad | ||
|
|
56b93f29eb | ||
|
|
381e65f460 | ||
|
|
d88d538126 | ||
|
|
dc983b33c3 | ||
|
|
66a4732f1d | ||
|
|
e62fb8e891 | ||
|
|
ece8414c72 | ||
|
|
32f8d538f3 | ||
|
|
663c1506d4 | ||
|
|
1a41e5519a | ||
|
|
f00392ec30 | ||
|
|
95d258ab1c | ||
|
|
d57cf8e232 | ||
|
|
729def5a41 | ||
|
|
eb60ca25f8 | ||
|
|
c6cf6fda4d | ||
|
|
7b30fefa68 | ||
|
|
427cfbe9a2 | ||
|
|
bc64d12bb9 | ||
|
|
ecdd69dbae | ||
|
|
191f59f435 | ||
|
|
057a9cbd10 | ||
|
|
3935424551 | ||
|
|
cf10f87301 | ||
|
|
db663b280b | ||
|
|
e675ced7a7 | ||
|
|
41154da3e4 | ||
|
|
c79c360e02 | ||
|
|
65853b9b29 | ||
|
|
4e5f9c0873 | ||
|
|
77be28fbdb | ||
|
|
4075abfb06 | ||
|
|
5a6da1d85d | ||
|
|
43a8916cbe | ||
|
|
b0346e4adb | ||
|
|
3ab1d29793 | ||
|
|
9a734dafa1 | ||
|
|
8fae32eb18 | ||
|
|
1515e2bb20 | ||
|
|
fc9f9e5ef9 | ||
|
|
f3ced614cb | ||
|
|
932a7d5a59 | ||
|
|
9e39a05578 | ||
|
|
0ab8e2a32a | ||
|
|
8fb654e590 | ||
|
|
0fe34bd39a | ||
|
|
db6e5fff06 | ||
|
|
cf7e9f2349 | ||
|
|
39cc02b1d9 | ||
|
|
15b447d64b | ||
|
|
e1fa6ddb4a | ||
|
|
1d4866b058 | ||
|
|
da89f3f4cf | ||
|
|
921adb69c6 | ||
|
|
e8893c57a1 | ||
|
|
78d6c8e84d | ||
|
|
2db0327171 | ||
|
|
f9dea84e29 | ||
|
|
81eb6b2bf4 | ||
|
|
483bef1dab | ||
|
|
b58c2f67a6 | ||
|
|
f7d53249e3 | ||
|
|
254b53d999 | ||
|
|
e34513334c | ||
|
|
463930c71f | ||
|
|
d982a14465 | ||
|
|
55c1fd5777 | ||
|
|
0166a8a567 | ||
|
|
401f9d6286 | ||
|
|
d2e867f3be | ||
|
|
ec42edcaab | ||
|
|
8c22ec9e5d | ||
|
|
68d348377f | ||
|
|
e33271d071 | ||
|
|
eab49d76a3 | ||
|
|
202c383f78 | ||
|
|
cfefe3a7e8 | ||
|
|
25f779c0f2 | ||
|
|
738d232550 | ||
|
|
5c9716f453 | ||
|
|
a2c5130ffd | ||
|
|
b7bf0a3ed3 | ||
|
|
9a9b0e4a8f | ||
|
|
33e354b34b | ||
|
|
f4cfe8904c | ||
|
|
61bf02577c | ||
|
|
16150320c5 | ||
|
|
bd67d8d6b2 | ||
|
|
a2619f68c8 | ||
|
|
666e2f9edf | ||
|
|
d43ae36a63 | ||
|
|
75af1f5948 | ||
|
|
65c74964a9 | ||
|
|
2eaf0149ef | ||
|
|
f03430628f | ||
|
|
baaf7d5247 | ||
|
|
c6fd1aa12c | ||
|
|
d0c5ea08fd | ||
|
|
a246aaa40c | ||
|
|
f1915cce98 | ||
|
|
2949ab83fb | ||
|
|
b96e5e1158 | ||
|
|
545bf65803 | ||
|
|
42edda9026 | ||
|
|
bd00f23331 | ||
|
|
d0c848438b | ||
|
|
e86ee7f7b4 | ||
|
|
4f9fb97304 | ||
|
|
a854253aca | ||
|
|
f72cffc780 | ||
|
|
d13ca047ae | ||
|
|
475e2aff08 | ||
|
|
4d7889a2f1 | ||
|
|
0b21cf2492 | ||
|
|
ae616145ed | ||
|
|
f65ecd09c7 | ||
|
|
4d75a10efa | ||
|
|
e65c5d92f7 | ||
|
|
6b12e3d9d9 | ||
|
|
e292db6207 | ||
|
|
1fea7a57e7 | ||
|
|
96531062ba | ||
|
|
eb14aeb61d | ||
|
|
30597e33ea | ||
|
|
cd94990cfe | ||
|
|
f5a82188bc | ||
|
|
8e8de28ef8 | ||
|
|
72e5036933 |
2
.github/actions/setup-swift/action.yml
vendored
2
.github/actions/setup-swift/action.yml
vendored
@@ -33,7 +33,7 @@ runs:
|
|||||||
fi
|
fi
|
||||||
echo "version=$VERSION" | tee -a $GITHUB_OUTPUT
|
echo "version=$VERSION" | tee -a $GITHUB_OUTPUT
|
||||||
|
|
||||||
- uses: swift-actions/setup-swift@cdbe0f7f4c77929b6580e71983e8606e55ffe7e4 # Please update the corresponding SHA in the CLI's CodeQL Action Integration Test.
|
- uses: redsun82/setup-swift@b2b6f77ab14f6a9b136b520dc53ec8eca27d2b99 # Please update the corresponding SHA in the CLI's CodeQL Action Integration Test.
|
||||||
if: runner.os == 'Linux' && steps.get_swift_version.outputs.version != 'null'
|
if: runner.os == 'Linux' && steps.get_swift_version.outputs.version != 'null'
|
||||||
with:
|
with:
|
||||||
swift-version: "${{ steps.get_swift_version.outputs.version }}"
|
swift-version: "${{ steps.get_swift_version.outputs.version }}"
|
||||||
|
|||||||
13
.github/update-release-branch.py
vendored
13
.github/update-release-branch.py
vendored
@@ -60,7 +60,7 @@ def open_pr(
|
|||||||
|
|
||||||
# Start constructing the body text
|
# Start constructing the body text
|
||||||
body = []
|
body = []
|
||||||
body.append(f'Merging {source_branch_short_sha} into {target_branch}.')
|
body.append(f'Merging {source_branch_short_sha} into `{target_branch}`.')
|
||||||
|
|
||||||
body.append('')
|
body.append('')
|
||||||
body.append(f'Conductor for this PR is @{conductor}.')
|
body.append(f'Conductor for this PR is @{conductor}.')
|
||||||
@@ -92,7 +92,7 @@ def open_pr(
|
|||||||
'branch to resolve the merge conflicts.')
|
'branch to resolve the merge conflicts.')
|
||||||
body.append(' - [ ] Ensure the CHANGELOG displays the correct version and date.')
|
body.append(' - [ ] Ensure the CHANGELOG displays the correct version and date.')
|
||||||
body.append(' - [ ] Ensure the CHANGELOG includes all relevant, user-facing changes since the last release.')
|
body.append(' - [ ] Ensure the CHANGELOG includes all relevant, user-facing changes since the last release.')
|
||||||
body.append(f' - [ ] Check that there are not any unexpected commits being merged into the {target_branch} branch.')
|
body.append(f' - [ ] Check that there are not any unexpected commits being merged into the `{target_branch}` branch.')
|
||||||
body.append(' - [ ] Ensure the docs team is aware of any documentation changes that need to be released.')
|
body.append(' - [ ] Ensure the docs team is aware of any documentation changes that need to be released.')
|
||||||
|
|
||||||
if not is_primary_release:
|
if not is_primary_release:
|
||||||
@@ -186,16 +186,17 @@ def process_changelog_for_backports(source_branch_major_version, target_branch_m
|
|||||||
with open('CHANGELOG.md', 'r') as f:
|
with open('CHANGELOG.md', 'r') as f:
|
||||||
|
|
||||||
# until we find the first section, just duplicate all lines
|
# until we find the first section, just duplicate all lines
|
||||||
while True:
|
found_first_section = False
|
||||||
|
while not found_first_section:
|
||||||
line = f.readline()
|
line = f.readline()
|
||||||
if not line:
|
if not line:
|
||||||
raise Exception('Could not find any change sections in CHANGELOG.md') # EOF
|
raise Exception('Could not find any change sections in CHANGELOG.md') # EOF
|
||||||
|
|
||||||
output += line
|
|
||||||
if line.startswith('## '):
|
if line.startswith('## '):
|
||||||
line = line.replace(f'## {source_branch_major_version}', f'## {target_branch_major_version}')
|
line = line.replace(f'## {source_branch_major_version}', f'## {target_branch_major_version}')
|
||||||
# we have found the first section, so now handle things differently
|
found_first_section = True
|
||||||
break
|
|
||||||
|
output += line
|
||||||
|
|
||||||
# found_content tracks whether we hit two headings in a row
|
# found_content tracks whether we hit two headings in a row
|
||||||
found_content = False
|
found_content = False
|
||||||
|
|||||||
84
.github/workflows/__all-platform-bundle.yml
generated
vendored
84
.github/workflows/__all-platform-bundle.yml
generated
vendored
@@ -11,22 +11,24 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
all-platform-bundle:
|
all-platform-bundle:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: All-platform bundle
|
name: All-platform bundle
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -34,44 +36,38 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'true'
|
||||||
version: ${{ matrix.version }}
|
- id: init
|
||||||
use-all-platform-bundle: 'true'
|
uses: ./../action/init
|
||||||
- name: Set environment variable for Swift enablement
|
with:
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
shell: bash
|
- uses: ./../action/.github/actions/setup-swift
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
with:
|
||||||
- id: init
|
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
||||||
uses: ./../action/init
|
- name: Build code
|
||||||
with:
|
shell: bash
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
run: ./build.sh
|
||||||
- uses: ./../action/.github/actions/setup-swift
|
- uses: ./../action/analyze
|
||||||
with:
|
with:
|
||||||
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
upload-database: false
|
||||||
- name: Build code
|
|
||||||
shell: bash
|
|
||||||
run: ./build.sh
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
upload-database: false
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
94
.github/workflows/__analyze-ref-input.yml
generated
vendored
94
.github/workflows/__analyze-ref-input.yml
generated
vendored
@@ -11,26 +11,28 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
analyze-ref-input:
|
analyze-ref-input:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: default
|
version: default
|
||||||
name: "Analyze: 'ref' and 'sha' from inputs"
|
name: "Analyze: 'ref' and 'sha' from inputs"
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -38,45 +40,39 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
languages: cpp,csharp,java,javascript,python
|
||||||
shell: bash
|
config-file: ${{ github.repository }}/tests/multi-language-repo/.github/codeql/custom-queries.yml@${{
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
github.sha }}
|
||||||
- uses: ./../action/init
|
- name: Build code
|
||||||
with:
|
shell: bash
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
run: ./build.sh
|
||||||
languages: cpp,csharp,java,javascript,python
|
- uses: ./../action/analyze
|
||||||
config-file: ${{ github.repository }}/tests/multi-language-repo/.github/codeql/custom-queries.yml@${{
|
with:
|
||||||
github.sha }}
|
upload-database: false
|
||||||
- name: Build code
|
ref: refs/heads/main
|
||||||
shell: bash
|
sha: 5e235361806c361d4d3f8859e3c897658025a9a2
|
||||||
run: ./build.sh
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
upload-database: false
|
|
||||||
ref: refs/heads/main
|
|
||||||
sha: 5e235361806c361d4d3f8859e3c897658025a9a2
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
112
.github/workflows/__autobuild-action.yml
generated
vendored
112
.github/workflows/__autobuild-action.yml
generated
vendored
@@ -11,26 +11,28 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
autobuild-action:
|
autobuild-action:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: latest
|
||||||
name: autobuild-action
|
name: autobuild-action
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -38,55 +40,49 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
languages: csharp
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
shell: bash
|
- uses: ./../action/autobuild
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
env:
|
||||||
- uses: ./../action/init
|
|
||||||
with:
|
|
||||||
languages: csharp
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
- uses: ./../action/autobuild
|
|
||||||
env:
|
|
||||||
# Explicitly disable the CLR tracer.
|
# Explicitly disable the CLR tracer.
|
||||||
COR_ENABLE_PROFILING: ''
|
COR_ENABLE_PROFILING: ''
|
||||||
COR_PROFILER: ''
|
COR_PROFILER: ''
|
||||||
COR_PROFILER_PATH_64: ''
|
COR_PROFILER_PATH_64: ''
|
||||||
CORECLR_ENABLE_PROFILING: ''
|
CORECLR_ENABLE_PROFILING: ''
|
||||||
CORECLR_PROFILER: ''
|
CORECLR_PROFILER: ''
|
||||||
CORECLR_PROFILER_PATH_64: ''
|
CORECLR_PROFILER_PATH_64: ''
|
||||||
- uses: ./../action/analyze
|
- uses: ./../action/analyze
|
||||||
with:
|
with:
|
||||||
upload-database: false
|
upload-database: false
|
||||||
- name: Check database
|
- name: Check database
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
cd "$RUNNER_TEMP/codeql_databases"
|
cd "$RUNNER_TEMP/codeql_databases"
|
||||||
if [[ ! -d csharp ]]; then
|
if [[ ! -d csharp ]]; then
|
||||||
echo "Did not find a C# database"
|
echo "Did not find a C# database"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
92
.github/workflows/__autobuild-direct-tracing.yml
generated
vendored
Normal file
92
.github/workflows/__autobuild-direct-tracing.yml
generated
vendored
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
# Warning: This file is generated automatically, and should not be modified.
|
||||||
|
# Instead, please modify the template in the pr-checks directory and run:
|
||||||
|
# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py)
|
||||||
|
# to regenerate this file.
|
||||||
|
|
||||||
|
name: PR Check - Autobuild direct tracing
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
GO111MODULE: auto
|
||||||
|
CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true'
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- releases/v*
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
- reopened
|
||||||
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
workflow_dispatch: {}
|
||||||
|
jobs:
|
||||||
|
autobuild-direct-tracing:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: latest
|
||||||
|
- os: windows-latest
|
||||||
|
version: latest
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: windows-latest
|
||||||
|
version: nightly-latest
|
||||||
|
name: Autobuild direct tracing
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
timeout-minutes: 45
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Setup Python on MacOS
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
if: >-
|
||||||
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- name: Set up Java test repo configuration
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mv * .github ../action/tests/multi-language-repo/
|
||||||
|
mv ../action/tests/multi-language-repo/.github/workflows .github
|
||||||
|
mv ../action/tests/java-repo/* .
|
||||||
|
|
||||||
|
- uses: ./../action/init
|
||||||
|
id: init
|
||||||
|
with:
|
||||||
|
build-mode: autobuild
|
||||||
|
db-location: ${{ runner.temp }}/customDbLocation
|
||||||
|
languages: java
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
|
||||||
|
- name: Check that indirect tracing is disabled
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [[ ! -z "${CODEQL_RUNNER}" ]]; then
|
||||||
|
echo "Expected indirect tracing to be disabled, but the" \
|
||||||
|
"CODEQL_RUNNER environment variable is set."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
env:
|
||||||
|
CODEQL_ACTION_AUTOBUILD_BUILD_MODE_DIRECT_TRACING: true
|
||||||
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
84
.github/workflows/__build-mode-autobuild.yml
generated
vendored
Normal file
84
.github/workflows/__build-mode-autobuild.yml
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
# Warning: This file is generated automatically, and should not be modified.
|
||||||
|
# Instead, please modify the template in the pr-checks directory and run:
|
||||||
|
# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py)
|
||||||
|
# to regenerate this file.
|
||||||
|
|
||||||
|
name: PR Check - Build mode autobuild
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
GO111MODULE: auto
|
||||||
|
CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true'
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- releases/v*
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
- reopened
|
||||||
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
workflow_dispatch: {}
|
||||||
|
jobs:
|
||||||
|
build-mode-autobuild:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
name: Build mode autobuild
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
timeout-minutes: 45
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Setup Python on MacOS
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
if: >-
|
||||||
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- name: Set up Java test repo configuration
|
||||||
|
run: |
|
||||||
|
mv * .github ../action/tests/multi-language-repo/
|
||||||
|
mv ../action/tests/multi-language-repo/.github/workflows .github
|
||||||
|
mv ../action/tests/java-repo/* .
|
||||||
|
|
||||||
|
- uses: ./../action/init
|
||||||
|
id: init
|
||||||
|
with:
|
||||||
|
build-mode: autobuild
|
||||||
|
db-location: ${{ runner.temp }}/customDbLocation
|
||||||
|
languages: java
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
|
||||||
|
- name: Validate database build mode
|
||||||
|
run: |
|
||||||
|
metadata_path="$RUNNER_TEMP/customDbLocation/java/codeql-database.yml"
|
||||||
|
build_mode=$(yq eval '.buildMode' "$metadata_path")
|
||||||
|
if [[ "$build_mode" != "autobuild" ]]; then
|
||||||
|
echo "Expected build mode to be 'autobuild' but was $build_mode"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
env:
|
||||||
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
86
.github/workflows/__build-mode-manual.yml
generated
vendored
Normal file
86
.github/workflows/__build-mode-manual.yml
generated
vendored
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# Warning: This file is generated automatically, and should not be modified.
|
||||||
|
# Instead, please modify the template in the pr-checks directory and run:
|
||||||
|
# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py)
|
||||||
|
# to regenerate this file.
|
||||||
|
|
||||||
|
name: PR Check - Build mode manual
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
GO111MODULE: auto
|
||||||
|
CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true'
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- releases/v*
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
- reopened
|
||||||
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
workflow_dispatch: {}
|
||||||
|
jobs:
|
||||||
|
build-mode-manual:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
name: Build mode manual
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
timeout-minutes: 45
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Setup Python on MacOS
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
if: >-
|
||||||
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
id: init
|
||||||
|
with:
|
||||||
|
build-mode: manual
|
||||||
|
db-location: ${{ runner.temp }}/customDbLocation
|
||||||
|
languages: java
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
|
||||||
|
- name: Validate database build mode
|
||||||
|
run: |
|
||||||
|
metadata_path="$RUNNER_TEMP/customDbLocation/java/codeql-database.yml"
|
||||||
|
build_mode=$(yq eval '.buildMode' "$metadata_path")
|
||||||
|
if [[ "$build_mode" != "manual" ]]; then
|
||||||
|
echo "Expected build mode to be 'manual' but was $build_mode"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- uses: ./../action/.github/actions/setup-swift
|
||||||
|
with:
|
||||||
|
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
||||||
|
|
||||||
|
- name: Build code
|
||||||
|
shell: bash
|
||||||
|
run: ./build.sh
|
||||||
|
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
env:
|
||||||
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
84
.github/workflows/__build-mode-none.yml
generated
vendored
Normal file
84
.github/workflows/__build-mode-none.yml
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
# Warning: This file is generated automatically, and should not be modified.
|
||||||
|
# Instead, please modify the template in the pr-checks directory and run:
|
||||||
|
# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py)
|
||||||
|
# to regenerate this file.
|
||||||
|
|
||||||
|
name: PR Check - Build mode none
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
GO111MODULE: auto
|
||||||
|
CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true'
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- releases/v*
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
- reopened
|
||||||
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
workflow_dispatch: {}
|
||||||
|
jobs:
|
||||||
|
build-mode-none:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: latest
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
name: Build mode none
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
timeout-minutes: 45
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Setup Python on MacOS
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
if: >-
|
||||||
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
id: init
|
||||||
|
with:
|
||||||
|
build-mode: none
|
||||||
|
db-location: ${{ runner.temp }}/customDbLocation
|
||||||
|
languages: java
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
|
||||||
|
- name: Validate database build mode
|
||||||
|
run: |
|
||||||
|
metadata_path="$RUNNER_TEMP/customDbLocation/java/codeql-database.yml"
|
||||||
|
build_mode=$(yq eval '.buildMode' "$metadata_path")
|
||||||
|
if [[ "$build_mode" != "none" ]]; then
|
||||||
|
echo "Expected build mode to be 'none' but was $build_mode"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The latest nightly supports omitting the autobuild Action when the build mode is specified.
|
||||||
|
- uses: ./../action/autobuild
|
||||||
|
if: matrix.version != 'nightly-latest'
|
||||||
|
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
env:
|
||||||
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
85
.github/workflows/__build-mode-rollback.yml
generated
vendored
Normal file
85
.github/workflows/__build-mode-rollback.yml
generated
vendored
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# Warning: This file is generated automatically, and should not be modified.
|
||||||
|
# Instead, please modify the template in the pr-checks directory and run:
|
||||||
|
# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py)
|
||||||
|
# to regenerate this file.
|
||||||
|
|
||||||
|
name: PR Check - Build mode rollback
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
GO111MODULE: auto
|
||||||
|
CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true'
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- releases/v*
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
- reopened
|
||||||
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
workflow_dispatch: {}
|
||||||
|
jobs:
|
||||||
|
build-mode-rollback:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
name: Build mode rollback
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
timeout-minutes: 45
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Setup Python on MacOS
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
if: >-
|
||||||
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- name: Set up Java test repo configuration
|
||||||
|
run: |
|
||||||
|
mv * .github ../action/tests/multi-language-repo/
|
||||||
|
mv ../action/tests/multi-language-repo/.github/workflows .github
|
||||||
|
mv ../action/tests/java-repo/* .
|
||||||
|
|
||||||
|
- uses: ./../action/init
|
||||||
|
id: init
|
||||||
|
with:
|
||||||
|
build-mode: none
|
||||||
|
db-location: ${{ runner.temp }}/customDbLocation
|
||||||
|
languages: java
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
|
||||||
|
- name: Validate database build mode
|
||||||
|
run: |
|
||||||
|
metadata_path="$RUNNER_TEMP/customDbLocation/java/codeql-database.yml"
|
||||||
|
build_mode=$(yq eval '.buildMode' "$metadata_path")
|
||||||
|
if [[ "$build_mode" != "autobuild" ]]; then
|
||||||
|
echo "Expected build mode to be 'autobuild' but was $build_mode"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
env:
|
||||||
|
CODEQL_ACTION_DISABLE_JAVA_BUILDLESS: true
|
||||||
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
156
.github/workflows/__config-export.yml
generated
vendored
156
.github/workflows/__config-export.yml
generated
vendored
@@ -11,32 +11,34 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
config-export:
|
config-export:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: Config export
|
name: Config export
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -44,72 +46,66 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
languages: javascript
|
||||||
|
queries: security-extended
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
output: ${{ runner.temp }}/results
|
||||||
|
upload-database: false
|
||||||
|
- name: Upload SARIF
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: config-export-${{ matrix.os }}-${{ matrix.version }}.sarif.json
|
||||||
|
path: ${{ runner.temp }}/results/javascript.sarif
|
||||||
|
retention-days: 7
|
||||||
|
- name: Check config properties appear in SARIF
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
env:
|
||||||
|
SARIF_PATH: ${{ runner.temp }}/results/javascript.sarif
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
||||||
with:
|
const run = sarif.runs[0];
|
||||||
python-version: '3.11'
|
const configSummary = run.properties.codeqlConfigSummary;
|
||||||
- name: Check out repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Prepare test
|
|
||||||
id: prepare-test
|
|
||||||
uses: ./.github/actions/prepare-test
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: ./../action/init
|
|
||||||
with:
|
|
||||||
languages: javascript
|
|
||||||
queries: security-extended
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
output: ${{ runner.temp }}/results
|
|
||||||
upload-database: false
|
|
||||||
- name: Upload SARIF
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: config-export-${{ matrix.os }}-${{ matrix.version }}.sarif.json
|
|
||||||
path: ${{ runner.temp }}/results/javascript.sarif
|
|
||||||
retention-days: 7
|
|
||||||
- name: Check config properties appear in SARIF
|
|
||||||
uses: actions/github-script@v7
|
|
||||||
env:
|
|
||||||
SARIF_PATH: ${{ runner.temp }}/results/javascript.sarif
|
|
||||||
with:
|
|
||||||
script: |
|
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
if (configSummary === undefined) {
|
||||||
const run = sarif.runs[0];
|
core.setFailed('`codeqlConfigSummary` property not found in the SARIF run property bag.');
|
||||||
const configSummary = run.properties.codeqlConfigSummary;
|
}
|
||||||
|
if (configSummary.disableDefaultQueries !== false) {
|
||||||
if (configSummary === undefined) {
|
core.setFailed('`disableDefaultQueries` property incorrect: expected false, got ' +
|
||||||
core.setFailed('`codeqlConfigSummary` property not found in the SARIF run property bag.');
|
`${JSON.stringify(configSummary.disableDefaultQueries)}.`);
|
||||||
}
|
}
|
||||||
if (configSummary.disableDefaultQueries !== false) {
|
const expectedQueries = [{ type: 'builtinSuite', uses: 'security-extended' }];
|
||||||
core.setFailed('`disableDefaultQueries` property incorrect: expected false, got ' +
|
// Use JSON.stringify to deep-equal the arrays.
|
||||||
`${JSON.stringify(configSummary.disableDefaultQueries)}.`);
|
if (JSON.stringify(configSummary.queries) !== JSON.stringify(expectedQueries)) {
|
||||||
}
|
core.setFailed(`\`queries\` property incorrect: expected ${JSON.stringify(expectedQueries)}, got ` +
|
||||||
const expectedQueries = [{ type: 'builtinSuite', uses: 'security-extended' }];
|
`${JSON.stringify(configSummary.queries)}.`);
|
||||||
// Use JSON.stringify to deep-equal the arrays.
|
}
|
||||||
if (JSON.stringify(configSummary.queries) !== JSON.stringify(expectedQueries)) {
|
core.info('Finished config export tests.');
|
||||||
core.setFailed(`\`queries\` property incorrect: expected ${JSON.stringify(expectedQueries)}, got ` +
|
|
||||||
`${JSON.stringify(configSummary.queries)}.`);
|
|
||||||
}
|
|
||||||
core.info('Finished config export tests.');
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
88
.github/workflows/__config-input.yml
generated
vendored
Normal file
88
.github/workflows/__config-input.yml
generated
vendored
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
# Warning: This file is generated automatically, and should not be modified.
|
||||||
|
# Instead, please modify the template in the pr-checks directory and run:
|
||||||
|
# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py)
|
||||||
|
# to regenerate this file.
|
||||||
|
|
||||||
|
name: PR Check - Config input
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
GO111MODULE: auto
|
||||||
|
CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true'
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- releases/v*
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
- reopened
|
||||||
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
workflow_dispatch: {}
|
||||||
|
jobs:
|
||||||
|
config-input:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: latest
|
||||||
|
name: Config input
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
timeout-minutes: 45
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Setup Python on MacOS
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
if: >-
|
||||||
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- name: Copy queries into workspace
|
||||||
|
run: |
|
||||||
|
cp -a ../action/queries .
|
||||||
|
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
languages: javascript
|
||||||
|
build-mode: none
|
||||||
|
config: |
|
||||||
|
disable-default-queries: true
|
||||||
|
queries:
|
||||||
|
- name: Run custom query
|
||||||
|
uses: ./queries/default-setup-environment-variables.ql
|
||||||
|
paths-ignore:
|
||||||
|
- tests
|
||||||
|
- lib
|
||||||
|
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
output: ${{ runner.temp }}/results
|
||||||
|
|
||||||
|
- name: Check SARIF
|
||||||
|
uses: ./../action/.github/actions/check-sarif
|
||||||
|
with:
|
||||||
|
sarif-file: ${{ runner.temp }}/results/javascript.sarif
|
||||||
|
queries-run: javascript/codeql-action/default-setup-env-vars
|
||||||
|
queries-not-run: javascript/codeql-action/default-setup-context-properties
|
||||||
|
env:
|
||||||
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
104
.github/workflows/__cpp-deptrace-disabled.yml
generated
vendored
104
.github/workflows/__cpp-deptrace-disabled.yml
generated
vendored
@@ -11,26 +11,28 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
cpp-deptrace-disabled:
|
cpp-deptrace-disabled:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: 'C/C++: disabling autoinstalling dependencies (Linux)'
|
name: 'C/C++: disabling autoinstalling dependencies (Linux)'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -38,51 +40,45 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- name: Test setup
|
||||||
use-all-platform-bundle: 'false'
|
shell: bash
|
||||||
- name: Set environment variable for Swift enablement
|
run: |
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
cp -a ../action/tests/cpp-autobuild autobuild-dir
|
||||||
shell: bash
|
- uses: ./../action/init
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
with:
|
||||||
- name: Test setup
|
languages: cpp
|
||||||
shell: bash
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
run: |
|
- uses: ./../action/autobuild
|
||||||
cp -a ../action/tests/cpp-autobuild autobuild-dir
|
with:
|
||||||
- uses: ./../action/init
|
working-directory: autobuild-dir
|
||||||
with:
|
env:
|
||||||
languages: cpp
|
CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: false
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
- shell: bash
|
||||||
- uses: ./../action/autobuild
|
run: |
|
||||||
with:
|
if ls /usr/bin/errno; then
|
||||||
working-directory: autobuild-dir
|
echo "C/C++ autobuild installed errno, but it should not have since auto-install dependencies is disabled."
|
||||||
env:
|
exit 1
|
||||||
CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: false
|
fi
|
||||||
- shell: bash
|
|
||||||
run: |
|
|
||||||
if ls /usr/bin/errno; then
|
|
||||||
echo "C/C++ autobuild installed errno, but it should not have since auto-install dependencies is disabled."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
100
.github/workflows/__cpp-deptrace-enabled-on-macos.yml
generated
vendored
100
.github/workflows/__cpp-deptrace-enabled-on-macos.yml
generated
vendored
@@ -11,22 +11,24 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
cpp-deptrace-enabled-on-macos:
|
cpp-deptrace-enabled-on-macos:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: 'C/C++: autoinstalling dependencies is skipped (macOS)'
|
name: 'C/C++: autoinstalling dependencies is skipped (macOS)'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -34,53 +36,47 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- name: Test setup
|
||||||
use-all-platform-bundle: 'false'
|
shell: bash
|
||||||
- name: Set environment variable for Swift enablement
|
run: |
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
cp -a ../action/tests/cpp-autobuild autobuild-dir
|
||||||
shell: bash
|
- uses: ./../action/init
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
with:
|
||||||
- name: Test setup
|
languages: cpp
|
||||||
shell: bash
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
run: |
|
- uses: ./../action/autobuild
|
||||||
cp -a ../action/tests/cpp-autobuild autobuild-dir
|
with:
|
||||||
- uses: ./../action/init
|
working-directory: autobuild-dir
|
||||||
with:
|
env:
|
||||||
languages: cpp
|
CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: true
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
- shell: bash
|
||||||
- uses: ./../action/autobuild
|
run: |
|
||||||
with:
|
if ! ls /usr/bin/errno; then
|
||||||
working-directory: autobuild-dir
|
echo "As expected, CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES is a no-op on macOS"
|
||||||
env:
|
else
|
||||||
CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: true
|
echo "CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES should not have had any effect on macOS"
|
||||||
- shell: bash
|
exit 1
|
||||||
run: |
|
fi
|
||||||
if ! ls /usr/bin/errno; then
|
|
||||||
echo "As expected, CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES is a no-op on macOS"
|
|
||||||
else
|
|
||||||
echo "CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES should not have had any effect on macOS"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
104
.github/workflows/__cpp-deptrace-enabled.yml
generated
vendored
104
.github/workflows/__cpp-deptrace-enabled.yml
generated
vendored
@@ -11,26 +11,28 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
cpp-deptrace-enabled:
|
cpp-deptrace-enabled:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: 'C/C++: autoinstalling dependencies (Linux)'
|
name: 'C/C++: autoinstalling dependencies (Linux)'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -38,51 +40,45 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- name: Test setup
|
||||||
use-all-platform-bundle: 'false'
|
shell: bash
|
||||||
- name: Set environment variable for Swift enablement
|
run: |
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
cp -a ../action/tests/cpp-autobuild autobuild-dir
|
||||||
shell: bash
|
- uses: ./../action/init
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
with:
|
||||||
- name: Test setup
|
languages: cpp
|
||||||
shell: bash
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
run: |
|
- uses: ./../action/autobuild
|
||||||
cp -a ../action/tests/cpp-autobuild autobuild-dir
|
with:
|
||||||
- uses: ./../action/init
|
working-directory: autobuild-dir
|
||||||
with:
|
env:
|
||||||
languages: cpp
|
CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: true
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
- shell: bash
|
||||||
- uses: ./../action/autobuild
|
run: |
|
||||||
with:
|
if ! ls /usr/bin/errno; then
|
||||||
working-directory: autobuild-dir
|
echo "Did not autoinstall errno"
|
||||||
env:
|
exit 1
|
||||||
CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: true
|
fi
|
||||||
- shell: bash
|
|
||||||
run: |
|
|
||||||
if ! ls /usr/bin/errno; then
|
|
||||||
echo "Did not autoinstall errno"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
240
.github/workflows/__diagnostics-export.yml
generated
vendored
240
.github/workflows/__diagnostics-export.yml
generated
vendored
@@ -11,38 +11,40 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
diagnostics-export:
|
diagnostics-export:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20230317
|
version: stable-20230403
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20230317
|
version: stable-20230403
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-20230317
|
version: stable-20230403
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: Diagnostic export
|
name: Diagnostic export
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -50,113 +52,107 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
id: init
|
||||||
|
with:
|
||||||
|
languages: javascript
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
- name: Add test diagnostics
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
CODEQL_PATH: ${{ steps.init.outputs.codeql-path }}
|
||||||
|
run: |
|
||||||
|
for i in {1..2}; do
|
||||||
|
# Use the same location twice to test the workaround for the bug in CodeQL CLI 2.12.6 that
|
||||||
|
# produces an invalid diagnostic with multiple identical location objects.
|
||||||
|
"$CODEQL_PATH" database add-diagnostic \
|
||||||
|
"$RUNNER_TEMP/codeql_databases/javascript" \
|
||||||
|
--file-path /path/to/file \
|
||||||
|
--plaintext-message "Plaintext message $i" \
|
||||||
|
--source-id "lang/diagnostics/example" \
|
||||||
|
--source-name "Diagnostic name" \
|
||||||
|
--ready-for-status-page
|
||||||
|
done
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
output: ${{ runner.temp }}/results
|
||||||
|
upload-database: false
|
||||||
|
- name: Upload SARIF
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: diagnostics-export-${{ matrix.os }}-${{ matrix.version }}.sarif.json
|
||||||
|
path: ${{ runner.temp }}/results/javascript.sarif
|
||||||
|
retention-days: 7
|
||||||
|
- name: Check diagnostics appear in SARIF
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
env:
|
||||||
|
SARIF_PATH: ${{ runner.temp }}/results/javascript.sarif
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
function checkStatusPageNotification(n) {
|
||||||
with:
|
const expectedMessage = 'Plaintext message 1\n\nCodeQL also found 1 other diagnostic like this. See the workflow log for details.';
|
||||||
python-version: '3.11'
|
if (n.message.text !== expectedMessage) {
|
||||||
- name: Check out repository
|
core.setFailed(`Expected the status page diagnostic to have the message '${expectedMessage}', but found '${n.message.text}'.`);
|
||||||
uses: actions/checkout@v4
|
}
|
||||||
- name: Prepare test
|
if (n.locations.length !== 1) {
|
||||||
id: prepare-test
|
core.setFailed(`Expected the status page diagnostic to have exactly 1 location, but found ${n.locations.length}.`);
|
||||||
uses: ./.github/actions/prepare-test
|
}
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: ./../action/init
|
|
||||||
id: init
|
|
||||||
with:
|
|
||||||
languages: javascript
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
- name: Add test diagnostics
|
|
||||||
shell: bash
|
|
||||||
env:
|
|
||||||
CODEQL_PATH: ${{ steps.init.outputs.codeql-path }}
|
|
||||||
run: |
|
|
||||||
for i in {1..2}; do
|
|
||||||
# Use the same location twice to test the workaround for the bug in CodeQL CLI 2.12.5 that
|
|
||||||
# produces an invalid diagnostic with multiple identical location objects.
|
|
||||||
"$CODEQL_PATH" database add-diagnostic \
|
|
||||||
"$RUNNER_TEMP/codeql_databases/javascript" \
|
|
||||||
--file-path /path/to/file \
|
|
||||||
--plaintext-message "Plaintext message $i" \
|
|
||||||
--source-id "lang/diagnostics/example" \
|
|
||||||
--source-name "Diagnostic name" \
|
|
||||||
--ready-for-status-page
|
|
||||||
done
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
output: ${{ runner.temp }}/results
|
|
||||||
upload-database: false
|
|
||||||
- name: Upload SARIF
|
|
||||||
uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: diagnostics-export-${{ matrix.os }}-${{ matrix.version }}.sarif.json
|
|
||||||
path: ${{ runner.temp }}/results/javascript.sarif
|
|
||||||
retention-days: 7
|
|
||||||
- name: Check diagnostics appear in SARIF
|
|
||||||
uses: actions/github-script@v7
|
|
||||||
env:
|
|
||||||
SARIF_PATH: ${{ runner.temp }}/results/javascript.sarif
|
|
||||||
with:
|
|
||||||
script: |
|
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
function checkStatusPageNotification(n) {
|
|
||||||
const expectedMessage = 'Plaintext message 1\n\nCodeQL also found 1 other diagnostic like this. See the workflow log for details.';
|
|
||||||
if (n.message.text !== expectedMessage) {
|
|
||||||
core.setFailed(`Expected the status page diagnostic to have the message '${expectedMessage}', but found '${n.message.text}'.`);
|
|
||||||
}
|
}
|
||||||
if (n.locations.length !== 1) {
|
|
||||||
core.setFailed(`Expected the status page diagnostic to have exactly 1 location, but found ${n.locations.length}.`);
|
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
||||||
|
const run = sarif.runs[0];
|
||||||
|
|
||||||
|
const toolExecutionNotifications = run.invocations[0].toolExecutionNotifications;
|
||||||
|
const statusPageNotifications = toolExecutionNotifications.filter(n =>
|
||||||
|
n.descriptor.id === 'lang/diagnostics/example' && n.properties?.visibility?.statusPage
|
||||||
|
);
|
||||||
|
if (statusPageNotifications.length !== 1) {
|
||||||
|
core.setFailed(
|
||||||
|
'Expected exactly one status page reporting descriptor for this diagnostic in the ' +
|
||||||
|
`'runs[].invocations[].toolExecutionNotifications[]' SARIF property, but found ` +
|
||||||
|
`${statusPageNotifications.length}. All notification reporting descriptors: ` +
|
||||||
|
`${JSON.stringify(toolExecutionNotifications)}.`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
checkStatusPageNotification(statusPageNotifications[0]);
|
||||||
|
|
||||||
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
const notifications = run.tool.driver.notifications;
|
||||||
const run = sarif.runs[0];
|
const diagnosticNotification = notifications.filter(n =>
|
||||||
|
n.id === 'lang/diagnostics/example' && n.name === 'lang/diagnostics/example' &&
|
||||||
const toolExecutionNotifications = run.invocations[0].toolExecutionNotifications;
|
n.fullDescription.text === 'Diagnostic name'
|
||||||
const statusPageNotifications = toolExecutionNotifications.filter(n =>
|
|
||||||
n.descriptor.id === 'lang/diagnostics/example' && n.properties?.visibility?.statusPage
|
|
||||||
);
|
|
||||||
if (statusPageNotifications.length !== 1) {
|
|
||||||
core.setFailed(
|
|
||||||
'Expected exactly one status page reporting descriptor for this diagnostic in the ' +
|
|
||||||
`'runs[].invocations[].toolExecutionNotifications[]' SARIF property, but found ` +
|
|
||||||
`${statusPageNotifications.length}. All notification reporting descriptors: ` +
|
|
||||||
`${JSON.stringify(toolExecutionNotifications)}.`
|
|
||||||
);
|
);
|
||||||
}
|
if (diagnosticNotification.length !== 1) {
|
||||||
checkStatusPageNotification(statusPageNotifications[0]);
|
core.setFailed(
|
||||||
|
'Expected exactly one notification for this diagnostic in the ' +
|
||||||
|
`'runs[].tool.driver.notifications[]' SARIF property, but found ` +
|
||||||
|
`${diagnosticNotification.length}. All notifications: ` +
|
||||||
|
`${JSON.stringify(notifications)}.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const notifications = run.tool.driver.notifications;
|
core.info('Finished diagnostic export test');
|
||||||
const diagnosticNotification = notifications.filter(n =>
|
|
||||||
n.id === 'lang/diagnostics/example' && n.name === 'lang/diagnostics/example' &&
|
|
||||||
n.fullDescription.text === 'Diagnostic name'
|
|
||||||
);
|
|
||||||
if (diagnosticNotification.length !== 1) {
|
|
||||||
core.setFailed(
|
|
||||||
'Expected exactly one notification for this diagnostic in the ' +
|
|
||||||
`'runs[].tool.driver.notifications[]' SARIF property, but found ` +
|
|
||||||
`${diagnosticNotification.length}. All notifications: ` +
|
|
||||||
`${JSON.stringify(notifications)}.`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
core.info('Finished diagnostic export test');
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_EXPORT_DIAGNOSTICS: true
|
CODEQL_ACTION_EXPORT_DIAGNOSTICS: true
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
144
.github/workflows/__export-file-baseline-information.yml
generated
vendored
144
.github/workflows/__export-file-baseline-information.yml
generated
vendored
@@ -11,26 +11,28 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
export-file-baseline-information:
|
export-file-baseline-information:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: Export file baseline information
|
name: Export file baseline information
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -38,72 +40,66 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
id: init
|
||||||
- name: Set environment variable for Swift enablement
|
with:
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
languages: javascript
|
||||||
shell: bash
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
- uses: ./../action/.github/actions/setup-swift
|
||||||
- uses: ./../action/init
|
with:
|
||||||
id: init
|
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
||||||
with:
|
- name: Build code
|
||||||
languages: javascript
|
shell: bash
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
run: ./build.sh
|
||||||
- uses: ./../action/.github/actions/setup-swift
|
- uses: ./../action/analyze
|
||||||
with:
|
with:
|
||||||
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
output: ${{ runner.temp }}/results
|
||||||
- name: Build code
|
- name: Upload SARIF
|
||||||
shell: bash
|
uses: actions/upload-artifact@v3
|
||||||
run: ./build.sh
|
with:
|
||||||
- uses: ./../action/analyze
|
name: with-baseline-information-${{ matrix.os }}-${{ matrix.version }}.sarif.json
|
||||||
with:
|
path: ${{ runner.temp }}/results/javascript.sarif
|
||||||
output: ${{ runner.temp }}/results
|
retention-days: 7
|
||||||
- name: Upload SARIF
|
- name: Check results
|
||||||
uses: actions/upload-artifact@v3
|
shell: bash
|
||||||
with:
|
run: |
|
||||||
name: with-baseline-information-${{ matrix.os }}-${{ matrix.version }}.sarif.json
|
cd "$RUNNER_TEMP/results"
|
||||||
path: ${{ runner.temp }}/results/javascript.sarif
|
expected_baseline_languages="c csharp go java kotlin javascript python ruby"
|
||||||
retention-days: 7
|
if [[ $RUNNER_OS != "Windows" ]]; then
|
||||||
- name: Check results
|
expected_baseline_languages+=" swift"
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cd "$RUNNER_TEMP/results"
|
|
||||||
expected_baseline_languages="c csharp go java kotlin javascript python ruby"
|
|
||||||
if [[ $RUNNER_OS != "Windows" ]]; then
|
|
||||||
expected_baseline_languages+=" swift"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for lang in ${expected_baseline_languages}; do
|
|
||||||
rule_name="cli/expected-extracted-files/${lang}"
|
|
||||||
found_notification=$(jq --arg rule_name "${rule_name}" '[.runs[0].tool.driver.notifications |
|
|
||||||
select(. != null) | flatten | .[].id] | any(. == $rule_name)' javascript.sarif)
|
|
||||||
if [[ "${found_notification}" != "true" ]]; then
|
|
||||||
echo "Expected SARIF output to contain notification '${rule_name}', but found no such notification."
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
echo "Found notification '${rule_name}'."
|
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
|
for lang in ${expected_baseline_languages}; do
|
||||||
|
rule_name="cli/expected-extracted-files/${lang}"
|
||||||
|
found_notification=$(jq --arg rule_name "${rule_name}" '[.runs[0].tool.driver.notifications |
|
||||||
|
select(. != null) | flatten | .[].id] | any(. == $rule_name)' javascript.sarif)
|
||||||
|
if [[ "${found_notification}" != "true" ]]; then
|
||||||
|
echo "Expected SARIF output to contain notification '${rule_name}', but found no such notification."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Found notification '${rule_name}'."
|
||||||
|
fi
|
||||||
|
done
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_SUBLANGUAGE_FILE_COVERAGE: true
|
CODEQL_ACTION_SUBLANGUAGE_FILE_COVERAGE: true
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
106
.github/workflows/__extractor-ram-threads.yml
generated
vendored
106
.github/workflows/__extractor-ram-threads.yml
generated
vendored
@@ -11,22 +11,24 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
extractor-ram-threads:
|
extractor-ram-threads:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
name: Extractor ram and threads options test
|
name: Extractor ram and threads options test
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -34,55 +36,49 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
languages: java
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
ram: 230
|
||||||
shell: bash
|
threads: 1
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
- name: Assert Results
|
||||||
- uses: ./../action/init
|
shell: bash
|
||||||
with:
|
run: |
|
||||||
languages: java
|
if [ "${CODEQL_RAM}" != "230" ]; then
|
||||||
ram: 230
|
echo "CODEQL_RAM is '${CODEQL_RAM}' instead of 230"
|
||||||
threads: 1
|
exit 1
|
||||||
- name: Assert Results
|
fi
|
||||||
shell: bash
|
if [ "${CODEQL_EXTRACTOR_JAVA_RAM}" != "230" ]; then
|
||||||
run: |
|
echo "CODEQL_EXTRACTOR_JAVA_RAM is '${CODEQL_EXTRACTOR_JAVA_RAM}' instead of 230"
|
||||||
if [ "${CODEQL_RAM}" != "230" ]; then
|
exit 1
|
||||||
echo "CODEQL_RAM is '${CODEQL_RAM}' instead of 230"
|
fi
|
||||||
exit 1
|
if [ "${CODEQL_THREADS}" != "1" ]; then
|
||||||
fi
|
echo "CODEQL_THREADS is '${CODEQL_THREADS}' instead of 1"
|
||||||
if [ "${CODEQL_EXTRACTOR_JAVA_RAM}" != "230" ]; then
|
exit 1
|
||||||
echo "CODEQL_EXTRACTOR_JAVA_RAM is '${CODEQL_EXTRACTOR_JAVA_RAM}' instead of 230"
|
fi
|
||||||
exit 1
|
if [ "${CODEQL_EXTRACTOR_JAVA_THREADS}" != "1" ]; then
|
||||||
fi
|
echo "CODEQL_EXTRACTOR_JAVA_THREADS is '${CODEQL_EXTRACTOR_JAVA_THREADS}' instead of 1"
|
||||||
if [ "${CODEQL_THREADS}" != "1" ]; then
|
exit 1
|
||||||
echo "CODEQL_THREADS is '${CODEQL_THREADS}' instead of 1"
|
fi
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ "${CODEQL_EXTRACTOR_JAVA_THREADS}" != "1" ]; then
|
|
||||||
echo "CODEQL_EXTRACTOR_JAVA_THREADS is '${CODEQL_EXTRACTOR_JAVA_THREADS}' instead of 1"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
166
.github/workflows/__go-custom-queries.yml
generated
vendored
166
.github/workflows/__go-custom-queries.yml
generated
vendored
@@ -11,62 +11,70 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
go-custom-queries:
|
go-custom-queries:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: macos-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: windows-latest
|
||||||
|
version: nightly-latest
|
||||||
name: 'Go: Custom queries'
|
name: 'Go: Custom queries'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -74,43 +82,37 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
languages: go
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
config-file: ./.github/codeql/custom-queries.yml
|
||||||
shell: bash
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
- name: Build code
|
||||||
- uses: ./../action/init
|
shell: bash
|
||||||
with:
|
run: ./build.sh
|
||||||
languages: go
|
- uses: ./../action/analyze
|
||||||
config-file: ./.github/codeql/custom-queries.yml
|
with:
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
upload-database: false
|
||||||
- name: Build code
|
|
||||||
shell: bash
|
|
||||||
run: ./build.sh
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
upload-database: false
|
|
||||||
env:
|
env:
|
||||||
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
132
.github/workflows/__go-indirect-tracing-workaround-diagnostic.yml
generated
vendored
132
.github/workflows/__go-indirect-tracing-workaround-diagnostic.yml
generated
vendored
@@ -11,22 +11,24 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
go-indirect-tracing-workaround-diagnostic:
|
go-indirect-tracing-workaround-diagnostic:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.14.6
|
||||||
name: 'Go: diagnostic when Go is changed after init step'
|
name: 'Go: diagnostic when Go is changed after init step'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -34,73 +36,67 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: actions/setup-go@v5
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: actions/setup-go@v5
|
|
||||||
with:
|
|
||||||
# We need a Go version that ships with statically linked binaries on Linux
|
# We need a Go version that ships with statically linked binaries on Linux
|
||||||
go-version: '>=1.21.0'
|
go-version: '>=1.21.0'
|
||||||
- uses: ./../action/init
|
- uses: ./../action/init
|
||||||
with:
|
with:
|
||||||
languages: go
|
languages: go
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
# Deliberately change Go after the `init` step
|
# Deliberately change Go after the `init` step
|
||||||
- uses: actions/setup-go@v5
|
- uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version: '1.20'
|
go-version: '1.20'
|
||||||
- name: Build code
|
- name: Build code
|
||||||
shell: bash
|
shell: bash
|
||||||
run: go build main.go
|
run: go build main.go
|
||||||
- uses: ./../action/analyze
|
- uses: ./../action/analyze
|
||||||
with:
|
with:
|
||||||
output: ${{ runner.temp }}/results
|
output: ${{ runner.temp }}/results
|
||||||
upload-database: false
|
upload-database: false
|
||||||
- name: Check diagnostic appears in SARIF
|
- name: Check diagnostic appears in SARIF
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
env:
|
env:
|
||||||
SARIF_PATH: ${{ runner.temp }}/results/go.sarif
|
SARIF_PATH: ${{ runner.temp }}/results/go.sarif
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
||||||
const run = sarif.runs[0];
|
const run = sarif.runs[0];
|
||||||
|
|
||||||
const toolExecutionNotifications = run.invocations[0].toolExecutionNotifications;
|
const toolExecutionNotifications = run.invocations[0].toolExecutionNotifications;
|
||||||
const statusPageNotifications = toolExecutionNotifications.filter(n =>
|
const statusPageNotifications = toolExecutionNotifications.filter(n =>
|
||||||
n.descriptor.id === 'go/workflow/go-installed-after-codeql-init' && n.properties?.visibility?.statusPage
|
n.descriptor.id === 'go/workflow/go-installed-after-codeql-init' && n.properties?.visibility?.statusPage
|
||||||
);
|
|
||||||
if (statusPageNotifications.length !== 1) {
|
|
||||||
core.setFailed(
|
|
||||||
'Expected exactly one status page reporting descriptor for this diagnostic in the ' +
|
|
||||||
`'runs[].invocations[].toolExecutionNotifications[]' SARIF property, but found ` +
|
|
||||||
`${statusPageNotifications.length}. All notification reporting descriptors: ` +
|
|
||||||
`${JSON.stringify(toolExecutionNotifications)}.`
|
|
||||||
);
|
);
|
||||||
}
|
if (statusPageNotifications.length !== 1) {
|
||||||
|
core.setFailed(
|
||||||
|
'Expected exactly one status page reporting descriptor for this diagnostic in the ' +
|
||||||
|
`'runs[].invocations[].toolExecutionNotifications[]' SARIF property, but found ` +
|
||||||
|
`${statusPageNotifications.length}. All notification reporting descriptors: ` +
|
||||||
|
`${JSON.stringify(toolExecutionNotifications)}.`
|
||||||
|
);
|
||||||
|
}
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
103
.github/workflows/__go-indirect-tracing-workaround-no-file-program.yml
generated
vendored
Normal file
103
.github/workflows/__go-indirect-tracing-workaround-no-file-program.yml
generated
vendored
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
# Warning: This file is generated automatically, and should not be modified.
|
||||||
|
# Instead, please modify the template in the pr-checks directory and run:
|
||||||
|
# (cd pr-checks; pip install ruamel.yaml@0.17.31 && python3 sync.py)
|
||||||
|
# to regenerate this file.
|
||||||
|
|
||||||
|
name: 'PR Check - Go: diagnostic when `file` is not installed'
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
GO111MODULE: auto
|
||||||
|
CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN: 'true'
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- releases/v*
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
- reopened
|
||||||
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
workflow_dispatch: {}
|
||||||
|
jobs:
|
||||||
|
go-indirect-tracing-workaround-no-file-program:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: stable-v2.14.6
|
||||||
|
name: 'Go: diagnostic when `file` is not installed'
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
timeout-minutes: 45
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Setup Python on MacOS
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
if: >-
|
||||||
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
# We need a Go version that ships with statically linked binaries on Linux
|
||||||
|
go-version: '>=1.21.0'
|
||||||
|
- name: Remove `file` program
|
||||||
|
run: |
|
||||||
|
echo $(which file)
|
||||||
|
sudo rm -rf $(which file)
|
||||||
|
echo $(which file)
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
languages: go
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
- name: Build code
|
||||||
|
shell: bash
|
||||||
|
run: go build main.go
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
output: ${{ runner.temp }}/results
|
||||||
|
upload-database: false
|
||||||
|
- name: Check diagnostic appears in SARIF
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
env:
|
||||||
|
SARIF_PATH: ${{ runner.temp }}/results/go.sarif
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const sarif = JSON.parse(fs.readFileSync(process.env['SARIF_PATH'], 'utf8'));
|
||||||
|
const run = sarif.runs[0];
|
||||||
|
|
||||||
|
const toolExecutionNotifications = run.invocations[0].toolExecutionNotifications;
|
||||||
|
const statusPageNotifications = toolExecutionNotifications.filter(n =>
|
||||||
|
n.descriptor.id === 'go/workflow/file-program-unavailable' && n.properties?.visibility?.statusPage
|
||||||
|
);
|
||||||
|
if (statusPageNotifications.length !== 1) {
|
||||||
|
core.setFailed(
|
||||||
|
'Expected exactly one status page reporting descriptor for this diagnostic in the ' +
|
||||||
|
`'runs[].invocations[].toolExecutionNotifications[]' SARIF property, but found ` +
|
||||||
|
`${statusPageNotifications.length}. All notification reporting descriptors: ` +
|
||||||
|
`${JSON.stringify(toolExecutionNotifications)}.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
env:
|
||||||
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
132
.github/workflows/__go-indirect-tracing-workaround.yml
generated
vendored
132
.github/workflows/__go-indirect-tracing-workaround.yml
generated
vendored
@@ -11,22 +11,24 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
go-indirect-tracing-workaround:
|
go-indirect-tracing-workaround:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.14.6
|
||||||
name: 'Go: workaround for indirect tracing'
|
name: 'Go: workaround for indirect tracing'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -34,71 +36,65 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: actions/setup-go@v5
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: actions/setup-go@v5
|
|
||||||
with:
|
|
||||||
# We need a Go version that ships with statically linked binaries on Linux
|
# We need a Go version that ships with statically linked binaries on Linux
|
||||||
go-version: '>=1.21.0'
|
go-version: '>=1.21.0'
|
||||||
- uses: ./../action/init
|
- uses: ./../action/init
|
||||||
with:
|
with:
|
||||||
languages: go
|
languages: go
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
- name: Build code
|
- name: Build code
|
||||||
shell: bash
|
shell: bash
|
||||||
run: go build main.go
|
run: go build main.go
|
||||||
- uses: ./../action/analyze
|
- uses: ./../action/analyze
|
||||||
with:
|
with:
|
||||||
upload-database: false
|
upload-database: false
|
||||||
- shell: bash
|
- shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [[ -z "${CODEQL_ACTION_GO_BINARY}" ]]; then
|
if [[ -z "${CODEQL_ACTION_GO_BINARY}" ]]; then
|
||||||
echo "Expected the workaround for indirect tracing of static binaries to trigger, but the" \
|
echo "Expected the workaround for indirect tracing of static binaries to trigger, but the" \
|
||||||
"CODEQL_ACTION_GO_BINARY environment variable is not set."
|
"CODEQL_ACTION_GO_BINARY environment variable is not set."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [[ ! -f "${CODEQL_ACTION_GO_BINARY}" ]]; then
|
if [[ ! -f "${CODEQL_ACTION_GO_BINARY}" ]]; then
|
||||||
echo "CODEQL_ACTION_GO_BINARY is set, but the corresponding script does not exist."
|
echo "CODEQL_ACTION_GO_BINARY is set, but the corresponding script does not exist."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Once we start running Bash 4.2 in all environments, we can replace the
|
# Once we start running Bash 4.2 in all environments, we can replace the
|
||||||
# `! -z` flag with the more elegant `-v` which confirms that the variable
|
# `! -z` flag with the more elegant `-v` which confirms that the variable
|
||||||
# is actually unset and not potentially set to a blank value.
|
# is actually unset and not potentially set to a blank value.
|
||||||
if [[ ! -z "${CODEQL_ACTION_DID_AUTOBUILD_GOLANG}" ]]; then
|
if [[ ! -z "${CODEQL_ACTION_DID_AUTOBUILD_GOLANG}" ]]; then
|
||||||
echo "Expected the Go autobuilder not to be run, but the" \
|
echo "Expected the Go autobuilder not to be run, but the" \
|
||||||
"CODEQL_ACTION_DID_AUTOBUILD_GOLANG environment variable was set."
|
"CODEQL_ACTION_DID_AUTOBUILD_GOLANG environment variable was set."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
cd "$RUNNER_TEMP/codeql_databases"
|
cd "$RUNNER_TEMP/codeql_databases"
|
||||||
if [[ ! -d go ]]; then
|
if [[ ! -d go ]]; then
|
||||||
echo "Did not find a Go database"
|
echo "Did not find a Go database"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
163
.github/workflows/__go-tracing-autobuilder.yml
generated
vendored
163
.github/workflows/__go-tracing-autobuilder.yml
generated
vendored
@@ -11,48 +11,54 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
go-tracing-autobuilder:
|
go-tracing-autobuilder:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: macos-latest
|
||||||
|
version: nightly-latest
|
||||||
name: 'Go: tracing with autobuilder step'
|
name: 'Go: tracing with autobuilder step'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -60,55 +66,52 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: actions/setup-go@v5
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
go-version: ~1.22.0
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
# to avoid potentially misleading autobuilder results where we expect it to download
|
||||||
shell: bash
|
# dependencies successfully, but they actually come from a warm cache
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
cache: false
|
||||||
- uses: actions/setup-go@v5
|
- uses: ./../action/init
|
||||||
with:
|
with:
|
||||||
go-version: ~1.21.1
|
languages: go
|
||||||
- uses: ./../action/init
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
with:
|
- uses: ./../action/autobuild
|
||||||
languages: go
|
- uses: ./../action/analyze
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
with:
|
||||||
- uses: ./../action/autobuild
|
upload-database: false
|
||||||
- uses: ./../action/analyze
|
- shell: bash
|
||||||
with:
|
run: |
|
||||||
upload-database: false
|
if [[ "${CODEQL_ACTION_DID_AUTOBUILD_GOLANG}" != true ]]; then
|
||||||
- shell: bash
|
echo "Expected the Go autobuilder to be run, but the" \
|
||||||
run: |
|
"CODEQL_ACTION_DID_AUTOBUILD_GOLANG environment variable was not true."
|
||||||
if [[ "${CODEQL_ACTION_DID_AUTOBUILD_GOLANG}" != true ]]; then
|
exit 1
|
||||||
echo "Expected the Go autobuilder to be run, but the" \
|
fi
|
||||||
"CODEQL_ACTION_DID_AUTOBUILD_GOLANG environment variable was not true."
|
cd "$RUNNER_TEMP/codeql_databases"
|
||||||
exit 1
|
if [[ ! -d go ]]; then
|
||||||
fi
|
echo "Did not find a Go database"
|
||||||
cd "$RUNNER_TEMP/codeql_databases"
|
exit 1
|
||||||
if [[ ! -d go ]]; then
|
fi
|
||||||
echo "Did not find a Go database"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
173
.github/workflows/__go-tracing-custom-build-steps.yml
generated
vendored
173
.github/workflows/__go-tracing-custom-build-steps.yml
generated
vendored
@@ -11,48 +11,54 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
go-tracing-custom-build-steps:
|
go-tracing-custom-build-steps:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: macos-latest
|
||||||
|
version: nightly-latest
|
||||||
name: 'Go: tracing with custom build steps'
|
name: 'Go: tracing with custom build steps'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -60,59 +66,56 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: actions/setup-go@v5
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
go-version: ~1.22.0
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
# to avoid potentially misleading autobuilder results where we expect it to download
|
||||||
shell: bash
|
# dependencies successfully, but they actually come from a warm cache
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
cache: false
|
||||||
- uses: actions/setup-go@v5
|
- uses: ./../action/init
|
||||||
with:
|
with:
|
||||||
go-version: ~1.21.1
|
languages: go
|
||||||
- uses: ./../action/init
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
with:
|
- name: Build code
|
||||||
languages: go
|
shell: bash
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
run: go build main.go
|
||||||
- name: Build code
|
- uses: ./../action/analyze
|
||||||
shell: bash
|
with:
|
||||||
run: go build main.go
|
upload-database: false
|
||||||
- uses: ./../action/analyze
|
- shell: bash
|
||||||
with:
|
run: |
|
||||||
upload-database: false
|
# Once we start running Bash 4.2 in all environments, we can replace the
|
||||||
- shell: bash
|
# `! -z` flag with the more elegant `-v` which confirms that the variable
|
||||||
run: |
|
# is actually unset and not potentially set to a blank value.
|
||||||
# Once we start running Bash 4.2 in all environments, we can replace the
|
if [[ ! -z "${CODEQL_ACTION_DID_AUTOBUILD_GOLANG}" ]]; then
|
||||||
# `! -z` flag with the more elegant `-v` which confirms that the variable
|
echo "Expected the Go autobuilder not to be run, but the" \
|
||||||
# is actually unset and not potentially set to a blank value.
|
"CODEQL_ACTION_DID_AUTOBUILD_GOLANG environment variable was set."
|
||||||
if [[ ! -z "${CODEQL_ACTION_DID_AUTOBUILD_GOLANG}" ]]; then
|
exit 1
|
||||||
echo "Expected the Go autobuilder not to be run, but the" \
|
fi
|
||||||
"CODEQL_ACTION_DID_AUTOBUILD_GOLANG environment variable was set."
|
cd "$RUNNER_TEMP/codeql_databases"
|
||||||
exit 1
|
if [[ ! -d go ]]; then
|
||||||
fi
|
echo "Did not find a Go database"
|
||||||
cd "$RUNNER_TEMP/codeql_databases"
|
exit 1
|
||||||
if [[ ! -d go ]]; then
|
fi
|
||||||
echo "Did not find a Go database"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
151
.github/workflows/__go-tracing-legacy-workflow.yml
generated
vendored
151
.github/workflows/__go-tracing-legacy-workflow.yml
generated
vendored
@@ -11,48 +11,54 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
go-tracing-legacy-workflow:
|
go-tracing-legacy-workflow:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: macos-latest
|
||||||
|
version: nightly-latest
|
||||||
name: 'Go: tracing with legacy workflow'
|
name: 'Go: tracing with legacy workflow'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -60,49 +66,46 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: actions/setup-go@v5
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
go-version: ~1.22.0
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
# to avoid potentially misleading autobuilder results where we expect it to download
|
||||||
shell: bash
|
# dependencies successfully, but they actually come from a warm cache
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
cache: false
|
||||||
- uses: actions/setup-go@v5
|
- uses: ./../action/init
|
||||||
with:
|
with:
|
||||||
go-version: ~1.21.1
|
languages: go
|
||||||
- uses: ./../action/init
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
with:
|
- uses: ./../action/analyze
|
||||||
languages: go
|
with:
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
upload-database: false
|
||||||
- uses: ./../action/analyze
|
- shell: bash
|
||||||
with:
|
run: |
|
||||||
upload-database: false
|
cd "$RUNNER_TEMP/codeql_databases"
|
||||||
- shell: bash
|
if [[ ! -d go ]]; then
|
||||||
run: |
|
echo "Did not find a Go database"
|
||||||
cd "$RUNNER_TEMP/codeql_databases"
|
exit 1
|
||||||
if [[ ! -d go ]]; then
|
fi
|
||||||
echo "Did not find a Go database"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
204
.github/workflows/__init-with-registries.yml
generated
vendored
204
.github/workflows/__init-with-registries.yml
generated
vendored
@@ -11,38 +11,40 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
init-with-registries:
|
init-with-registries:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: 'Packaging: Download using registries'
|
name: 'Packaging: Download using registries'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -51,94 +53,88 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- name: Init with registries
|
||||||
|
uses: ./../action/init
|
||||||
|
with:
|
||||||
|
db-location: ${{ runner.temp }}/customDbLocation
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
config-file: ./.github/codeql/codeql-config-registries.yml
|
||||||
|
languages: javascript
|
||||||
|
registries: |
|
||||||
|
- url: "https://ghcr.io/v2/"
|
||||||
|
packages: "*/*"
|
||||||
|
token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
- name: Verify packages installed
|
||||||
with:
|
shell: bash
|
||||||
python-version: '3.11'
|
run: |
|
||||||
- name: Check out repository
|
PRIVATE_PACK="$HOME/.codeql/packages/codeql-testing/private-pack"
|
||||||
uses: actions/checkout@v4
|
CODEQL_PACK1="$HOME/.codeql/packages/codeql-testing/codeql-pack1"
|
||||||
- name: Prepare test
|
|
||||||
id: prepare-test
|
|
||||||
uses: ./.github/actions/prepare-test
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- name: Init with registries
|
|
||||||
uses: ./../action/init
|
|
||||||
with:
|
|
||||||
db-location: ${{ runner.temp }}/customDbLocation
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
config-file: ./.github/codeql/codeql-config-registries.yml
|
|
||||||
languages: javascript
|
|
||||||
registries: |
|
|
||||||
- url: "https://ghcr.io/v2/"
|
|
||||||
packages: "*/*"
|
|
||||||
token: "${{ secrets.GITHUB_TOKEN }}"
|
|
||||||
|
|
||||||
- name: Verify packages installed
|
if [[ -d $PRIVATE_PACK ]]
|
||||||
shell: bash
|
then
|
||||||
run: |
|
echo "$PRIVATE_PACK was installed."
|
||||||
PRIVATE_PACK="$HOME/.codeql/packages/codeql-testing/private-pack"
|
else
|
||||||
CODEQL_PACK1="$HOME/.codeql/packages/codeql-testing/codeql-pack1"
|
echo "::error $PRIVATE_PACK pack was not installed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -d $PRIVATE_PACK ]]
|
if [[ -d $CODEQL_PACK1 ]]
|
||||||
then
|
then
|
||||||
echo "$PRIVATE_PACK was installed."
|
echo "$CODEQL_PACK1 was installed."
|
||||||
else
|
else
|
||||||
echo "::error $PRIVATE_PACK pack was not installed."
|
echo "::error $CODEQL_PACK1 pack was not installed."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -d $CODEQL_PACK1 ]]
|
- name: Verify qlconfig.yml file was created
|
||||||
then
|
shell: bash
|
||||||
echo "$CODEQL_PACK1 was installed."
|
run: |
|
||||||
else
|
QLCONFIG_PATH=$RUNNER_TEMP/qlconfig.yml
|
||||||
echo "::error $CODEQL_PACK1 pack was not installed."
|
echo "Expected qlconfig.yml file to be created at $QLCONFIG_PATH"
|
||||||
exit 1
|
if [[ -f $QLCONFIG_PATH ]]
|
||||||
fi
|
then
|
||||||
|
echo "qlconfig.yml file was created."
|
||||||
|
else
|
||||||
|
echo "::error qlconfig.yml file was not created."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Verify qlconfig.yml file was created
|
- name: Verify contents of qlconfig.yml
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
QLCONFIG_PATH=$RUNNER_TEMP/qlconfig.yml
|
|
||||||
echo "Expected qlconfig.yml file to be created at $QLCONFIG_PATH"
|
|
||||||
if [[ -f $QLCONFIG_PATH ]]
|
|
||||||
then
|
|
||||||
echo "qlconfig.yml file was created."
|
|
||||||
else
|
|
||||||
echo "::error qlconfig.yml file was not created."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Verify contents of qlconfig.yml
|
|
||||||
# yq is not available on windows
|
# yq is not available on windows
|
||||||
if: runner.os != 'Windows'
|
if: runner.os != 'Windows'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
QLCONFIG_PATH=$RUNNER_TEMP/qlconfig.yml
|
QLCONFIG_PATH=$RUNNER_TEMP/qlconfig.yml
|
||||||
cat $QLCONFIG_PATH | yq -e '.registries[] | select(.url == "https://ghcr.io/v2/") | select(.packages == "*/*")'
|
cat $QLCONFIG_PATH | yq -e '.registries[] | select(.url == "https://ghcr.io/v2/") | select(.packages == "*/*")'
|
||||||
if [[ $? -eq 0 ]]
|
if [[ $? -eq 0 ]]
|
||||||
then
|
then
|
||||||
echo "Registry was added to qlconfig.yml file."
|
echo "Registry was added to qlconfig.yml file."
|
||||||
else
|
else
|
||||||
echo "::error Registry was not added to qlconfig.yml file."
|
echo "::error Registry was not added to qlconfig.yml file."
|
||||||
echo "Contents of qlconfig.yml file:"
|
echo "Contents of qlconfig.yml file:"
|
||||||
cat $QLCONFIG_PATH
|
cat $QLCONFIG_PATH
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
112
.github/workflows/__javascript-source-root.yml
generated
vendored
112
.github/workflows/__javascript-source-root.yml
generated
vendored
@@ -11,26 +11,28 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
javascript-source-root:
|
javascript-source-root:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: Custom source root
|
name: Custom source root
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -38,54 +40,48 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- name: Move codeql-action
|
||||||
use-all-platform-bundle: 'false'
|
shell: bash
|
||||||
- name: Set environment variable for Swift enablement
|
run: |
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
mkdir ../new-source-root
|
||||||
shell: bash
|
mv * ../new-source-root
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
- uses: ./../action/init
|
||||||
- name: Move codeql-action
|
with:
|
||||||
shell: bash
|
languages: javascript
|
||||||
run: |
|
source-root: ../new-source-root
|
||||||
mkdir ../new-source-root
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
mv * ../new-source-root
|
- uses: ./../action/analyze
|
||||||
- uses: ./../action/init
|
with:
|
||||||
with:
|
upload-database: false
|
||||||
languages: javascript
|
skip-queries: true
|
||||||
source-root: ../new-source-root
|
upload: never
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
- name: Assert database exists
|
||||||
- uses: ./../action/analyze
|
shell: bash
|
||||||
with:
|
run: |
|
||||||
upload-database: false
|
cd "$RUNNER_TEMP/codeql_databases"
|
||||||
skip-queries: true
|
if [[ ! -d javascript ]]; then
|
||||||
upload: never
|
echo "Did not find a JavaScript database"
|
||||||
- name: Assert database exists
|
exit 1
|
||||||
shell: bash
|
fi
|
||||||
run: |
|
|
||||||
cd "$RUNNER_TEMP/codeql_databases"
|
|
||||||
if [[ ! -d javascript ]]; then
|
|
||||||
echo "Did not find a JavaScript database"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
84
.github/workflows/__language-aliases.yml
generated
vendored
84
.github/workflows/__language-aliases.yml
generated
vendored
@@ -11,22 +11,24 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
language-aliases:
|
language-aliases:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
name: Language aliases
|
name: Language aliases
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -34,46 +36,40 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
languages: C#,java-kotlin,swift,typescript
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
- name: Check languages
|
||||||
with:
|
run: |
|
||||||
python-version: '3.11'
|
expected_languages="csharp,java,swift,javascript"
|
||||||
- name: Check out repository
|
actual_languages=$(jq -r '.languages | join(",")' "$RUNNER_TEMP"/config)
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Prepare test
|
|
||||||
id: prepare-test
|
|
||||||
uses: ./.github/actions/prepare-test
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: ./../action/init
|
|
||||||
with:
|
|
||||||
languages: C#,java-kotlin,swift,typescript
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
|
|
||||||
- name: Check languages
|
if [ "$expected_languages" != "$actual_languages" ]; then
|
||||||
run: |
|
echo "Resolved languages did not match expected list. " \
|
||||||
expected_languages="csharp,java,swift,javascript"
|
"Expected languages: $expected_languages. Actual languages: $actual_languages."
|
||||||
actual_languages=$(jq -r '.languages | join(",")' "$RUNNER_TEMP"/config)
|
exit 1
|
||||||
|
fi
|
||||||
if [ "$expected_languages" != "$actual_languages" ]; then
|
|
||||||
echo "Resolved languages did not match expected list. " \
|
|
||||||
"Expected languages: $expected_languages. Actual languages: $actual_languages."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
240
.github/workflows/__multi-language-autodetect.yml
generated
vendored
240
.github/workflows/__multi-language-autodetect.yml
generated
vendored
@@ -11,48 +11,54 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
multi-language-autodetect:
|
multi-language-autodetect:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: macos-latest
|
||||||
|
version: nightly-latest
|
||||||
name: Multi-language repository
|
name: Multi-language repository
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -60,100 +66,92 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
id: init
|
||||||
|
with:
|
||||||
|
db-location: ${{ runner.temp }}/customDbLocation
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
- uses: ./../action/.github/actions/setup-swift
|
||||||
with:
|
with:
|
||||||
python-version: '3.11'
|
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
||||||
- name: Check out repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Prepare test
|
|
||||||
id: prepare-test
|
|
||||||
uses: ./.github/actions/prepare-test
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: ./../action/init
|
|
||||||
id: init
|
|
||||||
with:
|
|
||||||
db-location: ${{ runner.temp }}/customDbLocation
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
|
|
||||||
- uses: ./../action/.github/actions/setup-swift
|
- name: Build code
|
||||||
with:
|
shell: bash
|
||||||
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
run: ./build.sh
|
||||||
|
|
||||||
- name: Build code
|
- uses: ./../action/analyze
|
||||||
shell: bash
|
id: analysis
|
||||||
run: ./build.sh
|
with:
|
||||||
|
upload-database: false
|
||||||
|
|
||||||
- uses: ./../action/analyze
|
- name: Check language autodetect for all languages excluding Swift
|
||||||
id: analysis
|
shell: bash
|
||||||
with:
|
run: |
|
||||||
upload-database: false
|
CPP_DB=${{ fromJson(steps.analysis.outputs.db-locations).cpp }}
|
||||||
|
if [[ ! -d $CPP_DB ]] || [[ ! $CPP_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
||||||
|
echo "Did not create a database for CPP, or created it in the wrong location."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
CSHARP_DB=${{ fromJson(steps.analysis.outputs.db-locations).csharp }}
|
||||||
|
if [[ ! -d $CSHARP_DB ]] || [[ ! $CSHARP_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
||||||
|
echo "Did not create a database for C Sharp, or created it in the wrong location."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
GO_DB=${{ fromJson(steps.analysis.outputs.db-locations).go }}
|
||||||
|
if [[ ! -d $GO_DB ]] || [[ ! $GO_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
||||||
|
echo "Did not create a database for Go, or created it in the wrong location."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
JAVA_DB=${{ fromJson(steps.analysis.outputs.db-locations).java }}
|
||||||
|
if [[ ! -d $JAVA_DB ]] || [[ ! $JAVA_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
||||||
|
echo "Did not create a database for Java, or created it in the wrong location."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
JAVASCRIPT_DB=${{ fromJson(steps.analysis.outputs.db-locations).javascript }}
|
||||||
|
if [[ ! -d $JAVASCRIPT_DB ]] || [[ ! $JAVASCRIPT_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
||||||
|
echo "Did not create a database for Javascript, or created it in the wrong location."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
PYTHON_DB=${{ fromJson(steps.analysis.outputs.db-locations).python }}
|
||||||
|
if [[ ! -d $PYTHON_DB ]] || [[ ! $PYTHON_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
||||||
|
echo "Did not create a database for Python, or created it in the wrong location."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
RUBY_DB=${{ fromJson(steps.analysis.outputs.db-locations).ruby }}
|
||||||
|
if [[ ! -d $RUBY_DB ]] || [[ ! $RUBY_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
||||||
|
echo "Did not create a database for Ruby, or created it in the wrong location."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Check language autodetect for all languages excluding Swift
|
- name: Check language autodetect for Swift
|
||||||
shell: bash
|
if: runner.os != 'Windows' && matrix.version != 'stable-20230403'
|
||||||
run: |
|
shell: bash
|
||||||
CPP_DB=${{ fromJson(steps.analysis.outputs.db-locations).cpp }}
|
run: |
|
||||||
if [[ ! -d $CPP_DB ]] || [[ ! $CPP_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
SWIFT_DB=${{ fromJson(steps.analysis.outputs.db-locations).swift }}
|
||||||
echo "Did not create a database for CPP, or created it in the wrong location."
|
if [[ ! -d $SWIFT_DB ]] || [[ ! $SWIFT_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
||||||
exit 1
|
echo "Did not create a database for Swift, or created it in the wrong location."
|
||||||
fi
|
exit 1
|
||||||
CSHARP_DB=${{ fromJson(steps.analysis.outputs.db-locations).csharp }}
|
fi
|
||||||
if [[ ! -d $CSHARP_DB ]] || [[ ! $CSHARP_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
|
||||||
echo "Did not create a database for C Sharp, or created it in the wrong location."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
GO_DB=${{ fromJson(steps.analysis.outputs.db-locations).go }}
|
|
||||||
if [[ ! -d $GO_DB ]] || [[ ! $GO_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
|
||||||
echo "Did not create a database for Go, or created it in the wrong location."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
JAVA_DB=${{ fromJson(steps.analysis.outputs.db-locations).java }}
|
|
||||||
if [[ ! -d $JAVA_DB ]] || [[ ! $JAVA_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
|
||||||
echo "Did not create a database for Java, or created it in the wrong location."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
JAVASCRIPT_DB=${{ fromJson(steps.analysis.outputs.db-locations).javascript }}
|
|
||||||
if [[ ! -d $JAVASCRIPT_DB ]] || [[ ! $JAVASCRIPT_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
|
||||||
echo "Did not create a database for Javascript, or created it in the wrong location."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
PYTHON_DB=${{ fromJson(steps.analysis.outputs.db-locations).python }}
|
|
||||||
if [[ ! -d $PYTHON_DB ]] || [[ ! $PYTHON_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
|
||||||
echo "Did not create a database for Python, or created it in the wrong location."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
RUBY_DB=${{ fromJson(steps.analysis.outputs.db-locations).ruby }}
|
|
||||||
if [[ ! -d $RUBY_DB ]] || [[ ! $RUBY_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
|
||||||
echo "Did not create a database for Ruby, or created it in the wrong location."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Check language autodetect for Swift
|
|
||||||
if: >-
|
|
||||||
env.CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT == 'true' ||
|
|
||||||
(runner.os != 'Windows' && matrix.version == 'nightly-latest')
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
SWIFT_DB=${{ fromJson(steps.analysis.outputs.db-locations).swift }}
|
|
||||||
if [[ ! -d $SWIFT_DB ]] || [[ ! $SWIFT_DB == ${{ runner.temp }}/customDbLocation/* ]]; then
|
|
||||||
echo "Did not create a database for Swift, or created it in the wrong location."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
156
.github/workflows/__packaging-codescanning-config-inputs-js.yml
generated
vendored
156
.github/workflows/__packaging-codescanning-config-inputs-js.yml
generated
vendored
@@ -11,38 +11,40 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
packaging-codescanning-config-inputs-js:
|
packaging-codescanning-config-inputs-js:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: 'Packaging: Config and input passed to the CLI'
|
name: 'Packaging: Config and input passed to the CLI'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -50,67 +52,61 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
config-file: .github/codeql/codeql-config-packaging3.yml
|
||||||
|
packs: +codeql-testing/codeql-pack1@1.0.0
|
||||||
|
languages: javascript
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
- name: Build code
|
||||||
|
shell: bash
|
||||||
|
run: ./build.sh
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
output: ${{ runner.temp }}/results
|
||||||
|
upload-database: false
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
- name: Check results
|
||||||
with:
|
uses: ./../action/.github/actions/check-sarif
|
||||||
python-version: '3.11'
|
with:
|
||||||
- name: Check out repository
|
sarif-file: ${{ runner.temp }}/results/javascript.sarif
|
||||||
uses: actions/checkout@v4
|
queries-run:
|
||||||
- name: Prepare test
|
javascript/example/empty-or-one-block,javascript/example/empty-or-one-block,javascript/example/other-query-block,javascript/example/two-block
|
||||||
id: prepare-test
|
queries-not-run: foo,bar
|
||||||
uses: ./.github/actions/prepare-test
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: ./../action/init
|
|
||||||
with:
|
|
||||||
config-file: .github/codeql/codeql-config-packaging3.yml
|
|
||||||
packs: +codeql-testing/codeql-pack1@1.0.0
|
|
||||||
languages: javascript
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
- name: Build code
|
|
||||||
shell: bash
|
|
||||||
run: ./build.sh
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
output: ${{ runner.temp }}/results
|
|
||||||
upload-database: false
|
|
||||||
|
|
||||||
- name: Check results
|
- name: Assert Results
|
||||||
uses: ./../action/.github/actions/check-sarif
|
shell: bash
|
||||||
with:
|
run: |
|
||||||
sarif-file: ${{ runner.temp }}/results/javascript.sarif
|
cd "$RUNNER_TEMP/results"
|
||||||
queries-run:
|
# We should have 4 hits from these rules
|
||||||
javascript/example/empty-or-one-block,javascript/example/empty-or-one-block,javascript/example/other-query-block,javascript/example/two-block
|
EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"
|
||||||
queries-not-run: foo,bar
|
|
||||||
|
|
||||||
- name: Assert Results
|
# use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
|
||||||
shell: bash
|
RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
|
||||||
run: |
|
echo "Found matching rules '$RULES'"
|
||||||
cd "$RUNNER_TEMP/results"
|
if [ "$RULES" != "$EXPECTED_RULES" ]; then
|
||||||
# We should have 4 hits from these rules
|
echo "Did not match expected rules '$EXPECTED_RULES'."
|
||||||
EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"
|
exit 1
|
||||||
|
fi
|
||||||
# use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
|
|
||||||
RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
|
|
||||||
echo "Found matching rules '$RULES'"
|
|
||||||
if [ "$RULES" != "$EXPECTED_RULES" ]; then
|
|
||||||
echo "Did not match expected rules '$EXPECTED_RULES'."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
156
.github/workflows/__packaging-config-inputs-js.yml
generated
vendored
156
.github/workflows/__packaging-config-inputs-js.yml
generated
vendored
@@ -11,38 +11,40 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
packaging-config-inputs-js:
|
packaging-config-inputs-js:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: 'Packaging: Config and input'
|
name: 'Packaging: Config and input'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -50,67 +52,61 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
config-file: .github/codeql/codeql-config-packaging3.yml
|
||||||
|
packs: +codeql-testing/codeql-pack1@1.0.0
|
||||||
|
languages: javascript
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
- name: Build code
|
||||||
|
shell: bash
|
||||||
|
run: ./build.sh
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
output: ${{ runner.temp }}/results
|
||||||
|
upload-database: false
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
- name: Check results
|
||||||
with:
|
uses: ./../action/.github/actions/check-sarif
|
||||||
python-version: '3.11'
|
with:
|
||||||
- name: Check out repository
|
sarif-file: ${{ runner.temp }}/results/javascript.sarif
|
||||||
uses: actions/checkout@v4
|
queries-run:
|
||||||
- name: Prepare test
|
javascript/example/empty-or-one-block,javascript/example/empty-or-one-block,javascript/example/other-query-block,javascript/example/two-block
|
||||||
id: prepare-test
|
queries-not-run: foo,bar
|
||||||
uses: ./.github/actions/prepare-test
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: ./../action/init
|
|
||||||
with:
|
|
||||||
config-file: .github/codeql/codeql-config-packaging3.yml
|
|
||||||
packs: +codeql-testing/codeql-pack1@1.0.0
|
|
||||||
languages: javascript
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
- name: Build code
|
|
||||||
shell: bash
|
|
||||||
run: ./build.sh
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
output: ${{ runner.temp }}/results
|
|
||||||
upload-database: false
|
|
||||||
|
|
||||||
- name: Check results
|
- name: Assert Results
|
||||||
uses: ./../action/.github/actions/check-sarif
|
shell: bash
|
||||||
with:
|
run: |
|
||||||
sarif-file: ${{ runner.temp }}/results/javascript.sarif
|
cd "$RUNNER_TEMP/results"
|
||||||
queries-run:
|
# We should have 4 hits from these rules
|
||||||
javascript/example/empty-or-one-block,javascript/example/empty-or-one-block,javascript/example/other-query-block,javascript/example/two-block
|
EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"
|
||||||
queries-not-run: foo,bar
|
|
||||||
|
|
||||||
- name: Assert Results
|
# use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
|
||||||
shell: bash
|
RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
|
||||||
run: |
|
echo "Found matching rules '$RULES'"
|
||||||
cd "$RUNNER_TEMP/results"
|
if [ "$RULES" != "$EXPECTED_RULES" ]; then
|
||||||
# We should have 4 hits from these rules
|
echo "Did not match expected rules '$EXPECTED_RULES'."
|
||||||
EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"
|
exit 1
|
||||||
|
fi
|
||||||
# use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
|
|
||||||
RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
|
|
||||||
echo "Found matching rules '$RULES'"
|
|
||||||
if [ "$RULES" != "$EXPECTED_RULES" ]; then
|
|
||||||
echo "Did not match expected rules '$EXPECTED_RULES'."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
154
.github/workflows/__packaging-config-js.yml
generated
vendored
154
.github/workflows/__packaging-config-js.yml
generated
vendored
@@ -11,38 +11,40 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
packaging-config-js:
|
packaging-config-js:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: 'Packaging: Config file'
|
name: 'Packaging: Config file'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -50,66 +52,60 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
config-file: .github/codeql/codeql-config-packaging.yml
|
||||||
|
languages: javascript
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
- name: Build code
|
||||||
|
shell: bash
|
||||||
|
run: ./build.sh
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
output: ${{ runner.temp }}/results
|
||||||
|
upload-database: false
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
- name: Check results
|
||||||
with:
|
uses: ./../action/.github/actions/check-sarif
|
||||||
python-version: '3.11'
|
with:
|
||||||
- name: Check out repository
|
sarif-file: ${{ runner.temp }}/results/javascript.sarif
|
||||||
uses: actions/checkout@v4
|
queries-run:
|
||||||
- name: Prepare test
|
javascript/example/empty-or-one-block,javascript/example/empty-or-one-block,javascript/example/other-query-block,javascript/example/two-block
|
||||||
id: prepare-test
|
queries-not-run: foo,bar
|
||||||
uses: ./.github/actions/prepare-test
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: ./../action/init
|
|
||||||
with:
|
|
||||||
config-file: .github/codeql/codeql-config-packaging.yml
|
|
||||||
languages: javascript
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
- name: Build code
|
|
||||||
shell: bash
|
|
||||||
run: ./build.sh
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
output: ${{ runner.temp }}/results
|
|
||||||
upload-database: false
|
|
||||||
|
|
||||||
- name: Check results
|
- name: Assert Results
|
||||||
uses: ./../action/.github/actions/check-sarif
|
shell: bash
|
||||||
with:
|
run: |
|
||||||
sarif-file: ${{ runner.temp }}/results/javascript.sarif
|
cd "$RUNNER_TEMP/results"
|
||||||
queries-run:
|
# We should have 4 hits from these rules
|
||||||
javascript/example/empty-or-one-block,javascript/example/empty-or-one-block,javascript/example/other-query-block,javascript/example/two-block
|
EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"
|
||||||
queries-not-run: foo,bar
|
|
||||||
|
|
||||||
- name: Assert Results
|
# use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
|
||||||
shell: bash
|
RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
|
||||||
run: |
|
echo "Found matching rules '$RULES'"
|
||||||
cd "$RUNNER_TEMP/results"
|
if [ "$RULES" != "$EXPECTED_RULES" ]; then
|
||||||
# We should have 4 hits from these rules
|
echo "Did not match expected rules '$EXPECTED_RULES'."
|
||||||
EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"
|
exit 1
|
||||||
|
fi
|
||||||
# use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
|
|
||||||
RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
|
|
||||||
echo "Found matching rules '$RULES'"
|
|
||||||
if [ "$RULES" != "$EXPECTED_RULES" ]; then
|
|
||||||
echo "Did not match expected rules '$EXPECTED_RULES'."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
154
.github/workflows/__packaging-inputs-js.yml
generated
vendored
154
.github/workflows/__packaging-inputs-js.yml
generated
vendored
@@ -11,38 +11,40 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
packaging-inputs-js:
|
packaging-inputs-js:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: 'Packaging: Action input'
|
name: 'Packaging: Action input'
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -50,66 +52,60 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
config-file: .github/codeql/codeql-config-packaging2.yml
|
||||||
|
languages: javascript
|
||||||
|
packs: codeql-testing/codeql-pack1@1.0.0, codeql-testing/codeql-pack2, codeql-testing/codeql-pack3:other-query.ql
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
- name: Build code
|
||||||
|
shell: bash
|
||||||
|
run: ./build.sh
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
output: ${{ runner.temp }}/results
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
- name: Check results
|
||||||
with:
|
uses: ./../action/.github/actions/check-sarif
|
||||||
python-version: '3.11'
|
with:
|
||||||
- name: Check out repository
|
sarif-file: ${{ runner.temp }}/results/javascript.sarif
|
||||||
uses: actions/checkout@v4
|
queries-run:
|
||||||
- name: Prepare test
|
javascript/example/empty-or-one-block,javascript/example/empty-or-one-block,javascript/example/other-query-block,javascript/example/two-block
|
||||||
id: prepare-test
|
queries-not-run: foo,bar
|
||||||
uses: ./.github/actions/prepare-test
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: ./../action/init
|
|
||||||
with:
|
|
||||||
config-file: .github/codeql/codeql-config-packaging2.yml
|
|
||||||
languages: javascript
|
|
||||||
packs: codeql-testing/codeql-pack1@1.0.0, codeql-testing/codeql-pack2, codeql-testing/codeql-pack3:other-query.ql
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
- name: Build code
|
|
||||||
shell: bash
|
|
||||||
run: ./build.sh
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
output: ${{ runner.temp }}/results
|
|
||||||
|
|
||||||
- name: Check results
|
- name: Assert Results
|
||||||
uses: ./../action/.github/actions/check-sarif
|
shell: bash
|
||||||
with:
|
run: |
|
||||||
sarif-file: ${{ runner.temp }}/results/javascript.sarif
|
cd "$RUNNER_TEMP/results"
|
||||||
queries-run:
|
# We should have 4 hits from these rules
|
||||||
javascript/example/empty-or-one-block,javascript/example/empty-or-one-block,javascript/example/other-query-block,javascript/example/two-block
|
EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"
|
||||||
queries-not-run: foo,bar
|
|
||||||
|
|
||||||
- name: Assert Results
|
# use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
|
||||||
shell: bash
|
RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
|
||||||
run: |
|
echo "Found matching rules '$RULES'"
|
||||||
cd "$RUNNER_TEMP/results"
|
if [ "$RULES" != "$EXPECTED_RULES" ]; then
|
||||||
# We should have 4 hits from these rules
|
echo "Did not match expected rules '$EXPECTED_RULES'."
|
||||||
EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"
|
exit 1
|
||||||
|
fi
|
||||||
# use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
|
|
||||||
RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
|
|
||||||
echo "Found matching rules '$RULES'"
|
|
||||||
if [ "$RULES" != "$EXPECTED_RULES" ]; then
|
|
||||||
echo "Did not match expected rules '$EXPECTED_RULES'."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
164
.github/workflows/__remote-config.yml
generated
vendored
164
.github/workflows/__remote-config.yml
generated
vendored
@@ -11,62 +11,70 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
remote-config:
|
remote-config:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: macos-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: windows-latest
|
||||||
|
version: nightly-latest
|
||||||
name: Remote config file
|
name: Remote config file
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -74,41 +82,35 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
languages: cpp,csharp,java,javascript,python
|
||||||
shell: bash
|
config-file: ${{ github.repository }}/tests/multi-language-repo/.github/codeql/custom-queries.yml@${{
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
github.sha }}
|
||||||
- uses: ./../action/init
|
- name: Build code
|
||||||
with:
|
shell: bash
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
run: ./build.sh
|
||||||
languages: cpp,csharp,java,javascript,python
|
- uses: ./../action/analyze
|
||||||
config-file: ${{ github.repository }}/tests/multi-language-repo/.github/codeql/custom-queries.yml@${{
|
|
||||||
github.sha }}
|
|
||||||
- name: Build code
|
|
||||||
shell: bash
|
|
||||||
run: ./build.sh
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
148
.github/workflows/__resolve-environment-action.yml
generated
vendored
148
.github/workflows/__resolve-environment-action.yml
generated
vendored
@@ -11,44 +11,46 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
resolve-environment-action:
|
resolve-environment-action:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.13.4
|
version: stable-v2.13.4
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.13.4
|
version: stable-v2.13.4
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-v2.13.4
|
version: stable-v2.13.4
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: Resolve environment
|
name: Resolve environment
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -56,58 +58,52 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
languages: ${{ matrix.version == 'stable-v2.13.4' && 'go' || 'go,javascript-typescript'
|
||||||
|
}}
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
- name: Resolve environment for Go
|
||||||
with:
|
uses: ./../action/resolve-environment
|
||||||
python-version: '3.11'
|
id: resolve-environment-go
|
||||||
- name: Check out repository
|
with:
|
||||||
uses: actions/checkout@v4
|
language: go
|
||||||
- name: Prepare test
|
|
||||||
id: prepare-test
|
|
||||||
uses: ./.github/actions/prepare-test
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: ./../action/init
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.version == 'stable-v2.13.4' && 'go' || 'go,javascript-typescript'
|
|
||||||
}}
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
|
|
||||||
- name: Resolve environment for Go
|
- name: Fail if Go configuration missing
|
||||||
uses: ./../action/resolve-environment
|
if: (!fromJSON(steps.resolve-environment-go.outputs.environment).configuration.go)
|
||||||
id: resolve-environment-go
|
run: exit 1
|
||||||
with:
|
|
||||||
language: go
|
|
||||||
|
|
||||||
- name: Fail if Go configuration missing
|
- name: Resolve environment for JavaScript/TypeScript
|
||||||
if: (!fromJSON(steps.resolve-environment-go.outputs.environment).configuration.go)
|
if: matrix.version != 'stable-v2.13.4'
|
||||||
run: exit 1
|
uses: ./../action/resolve-environment
|
||||||
|
id: resolve-environment-js
|
||||||
|
with:
|
||||||
|
language: javascript-typescript
|
||||||
|
|
||||||
- name: Resolve environment for JavaScript/TypeScript
|
- name: Fail if JavaScript/TypeScript configuration present
|
||||||
if: matrix.version != 'stable-v2.13.4'
|
if: matrix.version != 'stable-v2.13.4' &&
|
||||||
uses: ./../action/resolve-environment
|
fromJSON(steps.resolve-environment-js.outputs.environment).configuration.javascript
|
||||||
id: resolve-environment-js
|
run: exit 1
|
||||||
with:
|
|
||||||
language: javascript-typescript
|
|
||||||
|
|
||||||
- name: Fail if JavaScript/TypeScript configuration present
|
|
||||||
if: matrix.version != 'stable-v2.13.4' &&
|
|
||||||
fromJSON(steps.resolve-environment-js.outputs.environment).configuration.javascript
|
|
||||||
run: exit 1
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
98
.github/workflows/__rubocop-multi-language.yml
generated
vendored
98
.github/workflows/__rubocop-multi-language.yml
generated
vendored
@@ -11,22 +11,24 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
rubocop-multi-language:
|
rubocop-multi-language:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
name: RuboCop multi-language
|
name: RuboCop multi-language
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -34,51 +36,45 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- name: Set up Ruby
|
||||||
use-all-platform-bundle: 'false'
|
uses: ruby/setup-ruby@v1
|
||||||
- name: Set environment variable for Swift enablement
|
with:
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
ruby-version: 2.6
|
||||||
shell: bash
|
- name: Install Code Scanning integration
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
shell: bash
|
||||||
- name: Set up Ruby
|
run: bundle add code-scanning-rubocop --version 0.3.0 --skip-install
|
||||||
uses: ruby/setup-ruby@v1
|
- name: Install dependencies
|
||||||
with:
|
shell: bash
|
||||||
ruby-version: 2.6
|
run: bundle install
|
||||||
- name: Install Code Scanning integration
|
- name: RuboCop run
|
||||||
shell: bash
|
shell: bash
|
||||||
run: bundle add code-scanning-rubocop --version 0.3.0 --skip-install
|
run: |
|
||||||
- name: Install dependencies
|
bash -c "
|
||||||
shell: bash
|
bundle exec rubocop --require code_scanning --format CodeScanning::SarifFormatter -o rubocop.sarif
|
||||||
run: bundle install
|
[[ $? -ne 2 ]]
|
||||||
- name: RuboCop run
|
"
|
||||||
shell: bash
|
- uses: ./../action/upload-sarif
|
||||||
run: |
|
with:
|
||||||
bash -c "
|
sarif_file: rubocop.sarif
|
||||||
bundle exec rubocop --require code_scanning --format CodeScanning::SarifFormatter -o rubocop.sarif
|
|
||||||
[[ $? -ne 2 ]]
|
|
||||||
"
|
|
||||||
- uses: ./../action/upload-sarif
|
|
||||||
with:
|
|
||||||
sarif_file: rubocop.sarif
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
110
.github/workflows/__ruby.yml
generated
vendored
110
.github/workflows/__ruby.yml
generated
vendored
@@ -11,32 +11,34 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
ruby:
|
ruby:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: Ruby analysis
|
name: Ruby analysis
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -44,47 +46,41 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
languages: ruby
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
shell: bash
|
- uses: ./../action/analyze
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
id: analysis
|
||||||
- uses: ./../action/init
|
with:
|
||||||
with:
|
upload-database: false
|
||||||
languages: ruby
|
- name: Check database
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
shell: bash
|
||||||
- uses: ./../action/analyze
|
run: |
|
||||||
id: analysis
|
RUBY_DB="${{ fromJson(steps.analysis.outputs.db-locations).ruby }}"
|
||||||
with:
|
if [[ ! -d "$RUBY_DB" ]]; then
|
||||||
upload-database: false
|
echo "Did not create a database for Ruby."
|
||||||
- name: Check database
|
exit 1
|
||||||
shell: bash
|
fi
|
||||||
run: |
|
|
||||||
RUBY_DB="${{ fromJson(steps.analysis.outputs.db-locations).ruby }}"
|
|
||||||
if [[ ! -d "$RUBY_DB" ]]; then
|
|
||||||
echo "Did not create a database for Ruby."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
144
.github/workflows/__scaling-reserved-ram.yml
generated
vendored
144
.github/workflows/__scaling-reserved-ram.yml
generated
vendored
@@ -11,48 +11,54 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
scaling-reserved-ram:
|
scaling-reserved-ram:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
|
- os: macos-latest
|
||||||
|
version: nightly-latest
|
||||||
name: Scaling reserved RAM
|
name: Scaling reserved RAM
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -60,50 +66,44 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
id: init
|
||||||
|
with:
|
||||||
|
db-location: ${{ runner.temp }}/customDbLocation
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
- uses: ./../action/.github/actions/setup-swift
|
||||||
with:
|
with:
|
||||||
python-version: '3.11'
|
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
||||||
- name: Check out repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Prepare test
|
|
||||||
id: prepare-test
|
|
||||||
uses: ./.github/actions/prepare-test
|
|
||||||
with:
|
|
||||||
version: ${{ matrix.version }}
|
|
||||||
use-all-platform-bundle: 'false'
|
|
||||||
- name: Set environment variable for Swift enablement
|
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
|
||||||
shell: bash
|
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: ./../action/init
|
|
||||||
id: init
|
|
||||||
with:
|
|
||||||
db-location: ${{ runner.temp }}/customDbLocation
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
|
|
||||||
- uses: ./../action/.github/actions/setup-swift
|
- name: Build code
|
||||||
with:
|
shell: bash
|
||||||
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
run: ./build.sh
|
||||||
|
|
||||||
- name: Build code
|
- uses: ./../action/analyze
|
||||||
shell: bash
|
id: analysis
|
||||||
run: ./build.sh
|
with:
|
||||||
|
upload-database: false
|
||||||
- uses: ./../action/analyze
|
|
||||||
id: analysis
|
|
||||||
with:
|
|
||||||
upload-database: false
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_SCALING_RESERVED_RAM: true
|
CODEQL_ACTION_SCALING_RESERVED_RAM: true
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
154
.github/workflows/__split-workflow.yml
generated
vendored
154
.github/workflows/__split-workflow.yml
generated
vendored
@@ -11,32 +11,34 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
split-workflow:
|
split-workflow:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: Split workflow
|
name: Split workflow
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -44,71 +46,65 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
|
python-version: '3.11'
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Prepare test
|
||||||
|
id: prepare-test
|
||||||
|
uses: ./.github/actions/prepare-test
|
||||||
|
with:
|
||||||
|
version: ${{ matrix.version }}
|
||||||
|
use-all-platform-bundle: 'false'
|
||||||
|
- uses: ./../action/init
|
||||||
|
with:
|
||||||
|
config-file: .github/codeql/codeql-config-packaging3.yml
|
||||||
|
packs: +codeql-testing/codeql-pack1@1.0.0
|
||||||
|
languages: javascript
|
||||||
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
|
- name: Build code
|
||||||
|
shell: bash
|
||||||
|
run: ./build.sh
|
||||||
|
- uses: ./../action/analyze
|
||||||
|
with:
|
||||||
|
skip-queries: true
|
||||||
|
output: ${{ runner.temp }}/results
|
||||||
|
upload-database: false
|
||||||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
- name: Assert No Results
|
||||||
with:
|
shell: bash
|
||||||
python-version: '3.11'
|
run: |
|
||||||
- name: Check out repository
|
if [ "$(ls -A $RUNNER_TEMP/results)" ]; then
|
||||||
uses: actions/checkout@v4
|
echo "Expected results directory to be empty after skipping query execution!"
|
||||||
- name: Prepare test
|
exit 1
|
||||||
id: prepare-test
|
fi
|
||||||
uses: ./.github/actions/prepare-test
|
- uses: ./../action/analyze
|
||||||
with:
|
with:
|
||||||
version: ${{ matrix.version }}
|
output: ${{ runner.temp }}/results
|
||||||
use-all-platform-bundle: 'false'
|
upload-database: false
|
||||||
- name: Set environment variable for Swift enablement
|
- name: Assert Results
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
shell: bash
|
||||||
shell: bash
|
run: |
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
cd "$RUNNER_TEMP/results"
|
||||||
- uses: ./../action/init
|
# We should have 4 hits from these rules
|
||||||
with:
|
EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"
|
||||||
config-file: .github/codeql/codeql-config-packaging3.yml
|
|
||||||
packs: +codeql-testing/codeql-pack1@1.0.0
|
|
||||||
languages: javascript
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
- name: Build code
|
|
||||||
shell: bash
|
|
||||||
run: ./build.sh
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
skip-queries: true
|
|
||||||
output: ${{ runner.temp }}/results
|
|
||||||
upload-database: false
|
|
||||||
|
|
||||||
- name: Assert No Results
|
# use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
|
||||||
shell: bash
|
RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
|
||||||
run: |
|
echo "Found matching rules '$RULES'"
|
||||||
if [ "$(ls -A $RUNNER_TEMP/results)" ]; then
|
if [ "$RULES" != "$EXPECTED_RULES" ]; then
|
||||||
echo "Expected results directory to be empty after skipping query execution!"
|
echo "Did not match expected rules '$EXPECTED_RULES'."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
output: ${{ runner.temp }}/results
|
|
||||||
upload-database: false
|
|
||||||
- name: Assert Results
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cd "$RUNNER_TEMP/results"
|
|
||||||
# We should have 4 hits from these rules
|
|
||||||
EXPECTED_RULES="javascript/example/empty-or-one-block javascript/example/empty-or-one-block javascript/example/other-query-block javascript/example/two-block"
|
|
||||||
|
|
||||||
# use tr to replace newlines with spaces and xargs to trim leading and trailing whitespace
|
|
||||||
RULES="$(cat javascript.sarif | jq -r '.runs[0].results[].ruleId' | sort | tr "\n\r" " " | xargs)"
|
|
||||||
echo "Found matching rules '$RULES'"
|
|
||||||
if [ "$RULES" != "$EXPECTED_RULES" ]; then
|
|
||||||
echo "Did not match expected rules '$EXPECTED_RULES'."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
88
.github/workflows/__submit-sarif-failure.yml
generated
vendored
88
.github/workflows/__submit-sarif-failure.yml
generated
vendored
@@ -11,26 +11,28 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
submit-sarif-failure:
|
submit-sarif-failure:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: Submit SARIF after failure
|
name: Submit SARIF after failure
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -38,49 +40,43 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: actions/checkout@v4
|
||||||
use-all-platform-bundle: 'false'
|
- uses: ./init
|
||||||
- name: Set environment variable for Swift enablement
|
with:
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
languages: javascript
|
||||||
shell: bash
|
- name: Fail
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- uses: ./init
|
|
||||||
with:
|
|
||||||
languages: javascript
|
|
||||||
- name: Fail
|
|
||||||
# We want this job to pass if the Action correctly uploads the SARIF file for
|
# We want this job to pass if the Action correctly uploads the SARIF file for
|
||||||
# the failed run.
|
# the failed run.
|
||||||
# Setting this step to continue on error means that it is marked as completing
|
# Setting this step to continue on error means that it is marked as completing
|
||||||
# successfully, so will not fail the job.
|
# successfully, so will not fail the job.
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
run: exit 1
|
run: exit 1
|
||||||
- uses: ./analyze
|
- uses: ./analyze
|
||||||
# In a real workflow, this step wouldn't run. Since we used `continue-on-error`
|
# In a real workflow, this step wouldn't run. Since we used `continue-on-error`
|
||||||
# above, we manually disable it with an `if` condition.
|
# above, we manually disable it with an `if` condition.
|
||||||
if: false
|
if: false
|
||||||
with:
|
with:
|
||||||
category: /test-codeql-version:${{ matrix.version }}
|
category: /test-codeql-version:${{ matrix.version }}
|
||||||
env:
|
env:
|
||||||
# Internal-only environment variable used to indicate that the post-init Action
|
# Internal-only environment variable used to indicate that the post-init Action
|
||||||
# should expect to upload a SARIF file for the failed run.
|
# should expect to upload a SARIF file for the failed run.
|
||||||
|
|||||||
130
.github/workflows/__swift-custom-build.yml
generated
vendored
130
.github/workflows/__swift-custom-build.yml
generated
vendored
@@ -11,32 +11,34 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
swift-custom-build:
|
swift-custom-build:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: latest
|
version: latest
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: Swift analysis using a custom build command
|
name: Swift analysis using a custom build command
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -44,58 +46,52 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
id: init
|
||||||
- name: Set environment variable for Swift enablement
|
with:
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
languages: swift
|
||||||
shell: bash
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
- uses: ./../action/.github/actions/setup-swift
|
||||||
- uses: ./../action/init
|
with:
|
||||||
id: init
|
codeql-path: ${{steps.init.outputs.codeql-path}}
|
||||||
with:
|
- name: Check working directory
|
||||||
languages: swift
|
shell: bash
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
run: pwd
|
||||||
- uses: ./../action/.github/actions/setup-swift
|
- name: Build code
|
||||||
with:
|
shell: bash
|
||||||
codeql-path: ${{steps.init.outputs.codeql-path}}
|
run: ./build.sh
|
||||||
- name: Check working directory
|
- uses: ./../action/analyze
|
||||||
shell: bash
|
id: analysis
|
||||||
run: pwd
|
with:
|
||||||
- name: Build code
|
upload-database: false
|
||||||
shell: bash
|
- name: Check database
|
||||||
run: ./build.sh
|
shell: bash
|
||||||
- uses: ./../action/analyze
|
run: |
|
||||||
id: analysis
|
SWIFT_DB="${{ fromJson(steps.analysis.outputs.db-locations).swift }}"
|
||||||
with:
|
if [[ ! -d "$SWIFT_DB" ]]; then
|
||||||
upload-database: false
|
echo "Did not create a database for Swift."
|
||||||
- name: Check database
|
exit 1
|
||||||
shell: bash
|
fi
|
||||||
run: |
|
|
||||||
SWIFT_DB="${{ fromJson(steps.analysis.outputs.db-locations).swift }}"
|
|
||||||
if [[ ! -d "$SWIFT_DB" ]]; then
|
|
||||||
echo "Did not create a database for Swift."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
DOTNET_GENERATE_ASPNET_CERTIFICATE: 'false'
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
108
.github/workflows/__test-autobuild-working-dir.yml
generated
vendored
108
.github/workflows/__test-autobuild-working-dir.yml
generated
vendored
@@ -11,22 +11,24 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
test-autobuild-working-dir:
|
test-autobuild-working-dir:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
name: Autobuild working directory
|
name: Autobuild working directory
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -34,56 +36,50 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- name: Test setup
|
||||||
use-all-platform-bundle: 'false'
|
shell: bash
|
||||||
- name: Set environment variable for Swift enablement
|
run: |
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
# Make sure that Gradle build succeeds in autobuild-dir ...
|
||||||
shell: bash
|
cp -a ../action/tests/java-repo autobuild-dir
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
# ... and fails if attempted in the current directory
|
||||||
- name: Test setup
|
echo > build.gradle
|
||||||
shell: bash
|
- uses: ./../action/init
|
||||||
run: |
|
with:
|
||||||
# Make sure that Gradle build succeeds in autobuild-dir ...
|
languages: java
|
||||||
cp -a ../action/tests/java-repo autobuild-dir
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
# ... and fails if attempted in the current directory
|
- uses: ./../action/autobuild
|
||||||
echo > build.gradle
|
with:
|
||||||
- uses: ./../action/init
|
working-directory: autobuild-dir
|
||||||
with:
|
- uses: ./../action/analyze
|
||||||
languages: java
|
with:
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
upload-database: false
|
||||||
- uses: ./../action/autobuild
|
- name: Check database
|
||||||
with:
|
shell: bash
|
||||||
working-directory: autobuild-dir
|
run: |
|
||||||
- uses: ./../action/analyze
|
cd "$RUNNER_TEMP/codeql_databases"
|
||||||
with:
|
if [[ ! -d java ]]; then
|
||||||
upload-database: false
|
echo "Did not find a Java database"
|
||||||
- name: Check database
|
exit 1
|
||||||
shell: bash
|
fi
|
||||||
run: |
|
|
||||||
cd "$RUNNER_TEMP/codeql_databases"
|
|
||||||
if [[ ! -d java ]]; then
|
|
||||||
echo "Did not find a Java database"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
96
.github/workflows/__test-local-codeql.yml
generated
vendored
96
.github/workflows/__test-local-codeql.yml
generated
vendored
@@ -11,22 +11,24 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
test-local-codeql:
|
test-local-codeql:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: nightly-latest
|
||||||
name: Local CodeQL bundle
|
name: Local CodeQL bundle
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -34,50 +36,44 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- name: Fetch a CodeQL bundle
|
||||||
use-all-platform-bundle: 'false'
|
shell: bash
|
||||||
- name: Set environment variable for Swift enablement
|
env:
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
CODEQL_URL: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
shell: bash
|
run: |
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
wget "$CODEQL_URL"
|
||||||
- name: Fetch a CodeQL bundle
|
- id: init
|
||||||
shell: bash
|
uses: ./../action/init
|
||||||
env:
|
with:
|
||||||
CODEQL_URL: ${{ steps.prepare-test.outputs.tools-url }}
|
tools: ./codeql-bundle-linux64.tar.gz
|
||||||
run: |
|
- uses: ./../action/.github/actions/setup-swift
|
||||||
wget "$CODEQL_URL"
|
with:
|
||||||
- id: init
|
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
||||||
uses: ./../action/init
|
- name: Build code
|
||||||
with:
|
shell: bash
|
||||||
tools: ./codeql-bundle-linux64.tar.gz
|
run: ./build.sh
|
||||||
- uses: ./../action/.github/actions/setup-swift
|
- uses: ./../action/analyze
|
||||||
with:
|
with:
|
||||||
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
upload-database: false
|
||||||
- name: Build code
|
|
||||||
shell: bash
|
|
||||||
run: ./build.sh
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
upload-database: false
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
74
.github/workflows/__test-proxy.yml
generated
vendored
74
.github/workflows/__test-proxy.yml
generated
vendored
@@ -11,22 +11,24 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
test-proxy:
|
test-proxy:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: latest
|
||||||
name: Proxy test
|
name: Proxy test
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -34,39 +36,33 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
languages: javascript
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
shell: bash
|
- uses: ./../action/analyze
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
with:
|
||||||
- uses: ./../action/init
|
upload-database: false
|
||||||
with:
|
|
||||||
languages: javascript
|
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
- uses: ./../action/analyze
|
|
||||||
with:
|
|
||||||
upload-database: false
|
|
||||||
env:
|
env:
|
||||||
https_proxy: http://squid-proxy:3128
|
https_proxy: http://squid-proxy:3128
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
@@ -77,4 +73,4 @@ jobs:
|
|||||||
squid-proxy:
|
squid-proxy:
|
||||||
image: ubuntu/squid:latest
|
image: ubuntu/squid:latest
|
||||||
ports:
|
ports:
|
||||||
- 3128:3128
|
- 3128:3128
|
||||||
|
|||||||
192
.github/workflows/__unset-environment.yml
generated
vendored
192
.github/workflows/__unset-environment.yml
generated
vendored
@@ -11,34 +11,38 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
unset-environment:
|
unset-environment:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20221211
|
version: stable-20230403
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20230418
|
version: stable-v2.13.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.13.5
|
version: stable-v2.14.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-v2.14.6
|
version: stable-v2.15.5
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: stable-v2.16.6
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: latest
|
version: default
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: nightly-latest
|
version: latest
|
||||||
|
- os: ubuntu-latest
|
||||||
|
version: nightly-latest
|
||||||
name: Test unsetting environment variables
|
name: Test unsetting environment variables
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -46,87 +50,81 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
id: init
|
||||||
- name: Set environment variable for Swift enablement
|
with:
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
db-location: ${{ runner.temp }}/customDbLocation
|
||||||
shell: bash
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
- uses: ./../action/.github/actions/setup-swift
|
||||||
- uses: ./../action/init
|
with:
|
||||||
id: init
|
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
||||||
with:
|
- name: Build code
|
||||||
db-location: ${{ runner.temp }}/customDbLocation
|
shell: bash
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
|
||||||
- uses: ./../action/.github/actions/setup-swift
|
|
||||||
with:
|
|
||||||
codeql-path: ${{ steps.init.outputs.codeql-path }}
|
|
||||||
- name: Build code
|
|
||||||
shell: bash
|
|
||||||
# Disable Kotlin analysis while it's incompatible with Kotlin 1.8, until we find a
|
# Disable Kotlin analysis while it's incompatible with Kotlin 1.8, until we find a
|
||||||
# workaround for our PR checks.
|
# workaround for our PR checks.
|
||||||
run: env -i CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN=true PATH="$PATH" HOME="$HOME"
|
run: env -i CODEQL_EXTRACTOR_JAVA_AGENT_DISABLE_KOTLIN=true PATH="$PATH" HOME="$HOME"
|
||||||
./build.sh
|
./build.sh
|
||||||
- uses: ./../action/analyze
|
- uses: ./../action/analyze
|
||||||
id: analysis
|
id: analysis
|
||||||
with:
|
with:
|
||||||
upload-database: false
|
upload-database: false
|
||||||
- shell: bash
|
- shell: bash
|
||||||
run: |
|
run: |
|
||||||
CPP_DB="${{ fromJson(steps.analysis.outputs.db-locations).cpp }}"
|
CPP_DB="${{ fromJson(steps.analysis.outputs.db-locations).cpp }}"
|
||||||
if [[ ! -d "$CPP_DB" ]] || [[ ! "$CPP_DB" == "${RUNNER_TEMP}/customDbLocation/cpp" ]]; then
|
if [[ ! -d "$CPP_DB" ]] || [[ ! "$CPP_DB" == "${RUNNER_TEMP}/customDbLocation/cpp" ]]; then
|
||||||
echo "::error::Did not create a database for CPP, or created it in the wrong location." \
|
echo "::error::Did not create a database for CPP, or created it in the wrong location." \
|
||||||
"Expected location was '${RUNNER_TEMP}/customDbLocation/cpp' but actual was '${CPP_DB}'"
|
"Expected location was '${RUNNER_TEMP}/customDbLocation/cpp' but actual was '${CPP_DB}'"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
CSHARP_DB="${{ fromJson(steps.analysis.outputs.db-locations).csharp }}"
|
CSHARP_DB="${{ fromJson(steps.analysis.outputs.db-locations).csharp }}"
|
||||||
if [[ ! -d "$CSHARP_DB" ]] || [[ ! "$CSHARP_DB" == "${RUNNER_TEMP}/customDbLocation/csharp" ]]; then
|
if [[ ! -d "$CSHARP_DB" ]] || [[ ! "$CSHARP_DB" == "${RUNNER_TEMP}/customDbLocation/csharp" ]]; then
|
||||||
echo "::error::Did not create a database for C Sharp, or created it in the wrong location." \
|
echo "::error::Did not create a database for C Sharp, or created it in the wrong location." \
|
||||||
"Expected location was '${RUNNER_TEMP}/customDbLocation/csharp' but actual was '${CSHARP_DB}'"
|
"Expected location was '${RUNNER_TEMP}/customDbLocation/csharp' but actual was '${CSHARP_DB}'"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
GO_DB="${{ fromJson(steps.analysis.outputs.db-locations).go }}"
|
GO_DB="${{ fromJson(steps.analysis.outputs.db-locations).go }}"
|
||||||
if [[ ! -d "$GO_DB" ]] || [[ ! "$GO_DB" == "${RUNNER_TEMP}/customDbLocation/go" ]]; then
|
if [[ ! -d "$GO_DB" ]] || [[ ! "$GO_DB" == "${RUNNER_TEMP}/customDbLocation/go" ]]; then
|
||||||
echo "::error::Did not create a database for Go, or created it in the wrong location." \
|
echo "::error::Did not create a database for Go, or created it in the wrong location." \
|
||||||
"Expected location was '${RUNNER_TEMP}/customDbLocation/go' but actual was '${GO_DB}'"
|
"Expected location was '${RUNNER_TEMP}/customDbLocation/go' but actual was '${GO_DB}'"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
JAVA_DB="${{ fromJson(steps.analysis.outputs.db-locations).java }}"
|
JAVA_DB="${{ fromJson(steps.analysis.outputs.db-locations).java }}"
|
||||||
if [[ ! -d "$JAVA_DB" ]] || [[ ! "$JAVA_DB" == "${RUNNER_TEMP}/customDbLocation/java" ]]; then
|
if [[ ! -d "$JAVA_DB" ]] || [[ ! "$JAVA_DB" == "${RUNNER_TEMP}/customDbLocation/java" ]]; then
|
||||||
echo "::error::Did not create a database for Java, or created it in the wrong location." \
|
echo "::error::Did not create a database for Java, or created it in the wrong location." \
|
||||||
"Expected location was '${RUNNER_TEMP}/customDbLocation/java' but actual was '${JAVA_DB}'"
|
"Expected location was '${RUNNER_TEMP}/customDbLocation/java' but actual was '${JAVA_DB}'"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
JAVASCRIPT_DB="${{ fromJson(steps.analysis.outputs.db-locations).javascript }}"
|
JAVASCRIPT_DB="${{ fromJson(steps.analysis.outputs.db-locations).javascript }}"
|
||||||
if [[ ! -d "$JAVASCRIPT_DB" ]] || [[ ! "$JAVASCRIPT_DB" == "${RUNNER_TEMP}/customDbLocation/javascript" ]]; then
|
if [[ ! -d "$JAVASCRIPT_DB" ]] || [[ ! "$JAVASCRIPT_DB" == "${RUNNER_TEMP}/customDbLocation/javascript" ]]; then
|
||||||
echo "::error::Did not create a database for Javascript, or created it in the wrong location." \
|
echo "::error::Did not create a database for Javascript, or created it in the wrong location." \
|
||||||
"Expected location was '${RUNNER_TEMP}/customDbLocation/javascript' but actual was '${JAVASCRIPT_DB}'"
|
"Expected location was '${RUNNER_TEMP}/customDbLocation/javascript' but actual was '${JAVASCRIPT_DB}'"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
PYTHON_DB="${{ fromJson(steps.analysis.outputs.db-locations).python }}"
|
PYTHON_DB="${{ fromJson(steps.analysis.outputs.db-locations).python }}"
|
||||||
if [[ ! -d "$PYTHON_DB" ]] || [[ ! "$PYTHON_DB" == "${RUNNER_TEMP}/customDbLocation/python" ]]; then
|
if [[ ! -d "$PYTHON_DB" ]] || [[ ! "$PYTHON_DB" == "${RUNNER_TEMP}/customDbLocation/python" ]]; then
|
||||||
echo "::error::Did not create a database for Python, or created it in the wrong location." \
|
echo "::error::Did not create a database for Python, or created it in the wrong location." \
|
||||||
"Expected location was '${RUNNER_TEMP}/customDbLocation/python' but actual was '${PYTHON_DB}'"
|
"Expected location was '${RUNNER_TEMP}/customDbLocation/python' but actual was '${PYTHON_DB}'"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
104
.github/workflows/__upload-ref-sha-input.yml
generated
vendored
104
.github/workflows/__upload-ref-sha-input.yml
generated
vendored
@@ -11,26 +11,28 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
upload-ref-sha-input:
|
upload-ref-sha-input:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: default
|
version: default
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: default
|
version: default
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: default
|
version: default
|
||||||
name: "Upload-sarif: 'ref' and 'sha' from inputs"
|
name: "Upload-sarif: 'ref' and 'sha' from inputs"
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -38,50 +40,44 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- uses: ./../action/init
|
||||||
use-all-platform-bundle: 'false'
|
with:
|
||||||
- name: Set environment variable for Swift enablement
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
languages: cpp,csharp,java,javascript,python
|
||||||
shell: bash
|
config-file: ${{ github.repository }}/tests/multi-language-repo/.github/codeql/custom-queries.yml@${{
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
github.sha }}
|
||||||
- uses: ./../action/init
|
- name: Build code
|
||||||
with:
|
shell: bash
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
run: ./build.sh
|
||||||
languages: cpp,csharp,java,javascript,python
|
- uses: ./../action/analyze
|
||||||
config-file: ${{ github.repository }}/tests/multi-language-repo/.github/codeql/custom-queries.yml@${{
|
with:
|
||||||
github.sha }}
|
upload-database: false
|
||||||
- name: Build code
|
ref: refs/heads/main
|
||||||
shell: bash
|
sha: 5e235361806c361d4d3f8859e3c897658025a9a2
|
||||||
run: ./build.sh
|
upload: never
|
||||||
- uses: ./../action/analyze
|
- uses: ./../action/upload-sarif
|
||||||
with:
|
with:
|
||||||
upload-database: false
|
ref: refs/heads/main
|
||||||
ref: refs/heads/main
|
sha: 5e235361806c361d4d3f8859e3c897658025a9a2
|
||||||
sha: 5e235361806c361d4d3f8859e3c897658025a9a2
|
|
||||||
upload: never
|
|
||||||
- uses: ./../action/upload-sarif
|
|
||||||
with:
|
|
||||||
ref: refs/heads/main
|
|
||||||
sha: 5e235361806c361d4d3f8859e3c897658025a9a2
|
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
217
.github/workflows/__with-checkout-path.yml
generated
vendored
217
.github/workflows/__with-checkout-path.yml
generated
vendored
@@ -11,62 +11,28 @@ env:
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
- releases/v*
|
- releases/v*
|
||||||
pull_request:
|
pull_request:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
with-checkout-path:
|
with-checkout-path:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
version: stable-20221211
|
version: latest
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
version: stable-20221211
|
version: latest
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
version: stable-20221211
|
version: latest
|
||||||
- os: ubuntu-latest
|
|
||||||
version: stable-20230418
|
|
||||||
- os: macos-latest
|
|
||||||
version: stable-20230418
|
|
||||||
- os: windows-latest
|
|
||||||
version: stable-20230418
|
|
||||||
- os: ubuntu-latest
|
|
||||||
version: stable-v2.13.5
|
|
||||||
- os: macos-latest
|
|
||||||
version: stable-v2.13.5
|
|
||||||
- os: windows-latest
|
|
||||||
version: stable-v2.13.5
|
|
||||||
- os: ubuntu-latest
|
|
||||||
version: stable-v2.14.6
|
|
||||||
- os: macos-latest
|
|
||||||
version: stable-v2.14.6
|
|
||||||
- os: windows-latest
|
|
||||||
version: stable-v2.14.6
|
|
||||||
- os: ubuntu-latest
|
|
||||||
version: default
|
|
||||||
- os: macos-latest
|
|
||||||
version: default
|
|
||||||
- os: windows-latest
|
|
||||||
version: default
|
|
||||||
- os: ubuntu-latest
|
|
||||||
version: latest
|
|
||||||
- os: macos-latest
|
|
||||||
version: latest
|
|
||||||
- os: windows-latest
|
|
||||||
version: latest
|
|
||||||
- os: ubuntu-latest
|
|
||||||
version: nightly-latest
|
|
||||||
- os: macos-latest
|
|
||||||
version: nightly-latest
|
|
||||||
- os: windows-latest
|
|
||||||
version: nightly-latest
|
|
||||||
name: Use a custom `checkout_path`
|
name: Use a custom `checkout_path`
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -74,101 +40,94 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Setup Python on MacOS
|
- name: Setup Python on MacOS
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
if: >-
|
if: >-
|
||||||
matrix.os == 'macos-latest' && (
|
matrix.os == 'macos-latest' && (
|
||||||
|
|
||||||
matrix.version == 'stable-20221211' ||
|
matrix.version == 'stable-20230403' ||
|
||||||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
matrix.version == 'stable-v2.13.5' ||
|
||||||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
matrix.version == 'stable-v2.14.6')
|
||||||
|
with:
|
||||||
matrix.version == 'stable-v2.14.6')
|
python-version: '3.11'
|
||||||
with:
|
- name: Check out repository
|
||||||
python-version: '3.11'
|
uses: actions/checkout@v4
|
||||||
- name: Check out repository
|
- name: Prepare test
|
||||||
uses: actions/checkout@v4
|
id: prepare-test
|
||||||
- name: Prepare test
|
uses: ./.github/actions/prepare-test
|
||||||
id: prepare-test
|
with:
|
||||||
uses: ./.github/actions/prepare-test
|
version: ${{ matrix.version }}
|
||||||
with:
|
use-all-platform-bundle: 'false'
|
||||||
version: ${{ matrix.version }}
|
- name: Delete original checkout
|
||||||
use-all-platform-bundle: 'false'
|
shell: bash
|
||||||
- name: Set environment variable for Swift enablement
|
run: |
|
||||||
if: runner.os != 'Windows' && matrix.version == '20221211'
|
# delete the original checkout so we don't accidentally use it.
|
||||||
shell: bash
|
# Actions does not support deleting the current working directory, so we
|
||||||
run: echo "CODEQL_ENABLE_EXPERIMENTAL_FEATURES_SWIFT=true" >> $GITHUB_ENV
|
# delete the contents of the directory instead.
|
||||||
- name: Delete original checkout
|
rm -rf ./* .github .git
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
# delete the original checkout so we don't accidentally use it.
|
|
||||||
# Actions does not support deleting the current working directory, so we
|
|
||||||
# delete the contents of the directory instead.
|
|
||||||
rm -rf ./* .github .git
|
|
||||||
# Check out the actions repo again, but at a different location.
|
# Check out the actions repo again, but at a different location.
|
||||||
# choose an arbitrary SHA so that we can later test that the commit_oid is not from main
|
# choose an arbitrary SHA so that we can later test that the commit_oid is not from main
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
ref: 474bbf07f9247ffe1856c6a0f94aeeb10e7afee6
|
ref: 474bbf07f9247ffe1856c6a0f94aeeb10e7afee6
|
||||||
path: x/y/z/some-path
|
path: x/y/z/some-path
|
||||||
|
|
||||||
- uses: ./../action/init
|
- uses: ./../action/init
|
||||||
with:
|
with:
|
||||||
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
tools: ${{ steps.prepare-test.outputs.tools-url }}
|
||||||
# it's enough to test one compiled language and one interpreted language
|
# it's enough to test one compiled language and one interpreted language
|
||||||
languages: csharp,javascript
|
languages: csharp,javascript
|
||||||
source-root: x/y/z/some-path/tests/multi-language-repo
|
source-root: x/y/z/some-path/tests/multi-language-repo
|
||||||
debug: true
|
|
||||||
|
|
||||||
- name: Build code
|
- name: Build code
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: x/y/z/some-path/tests/multi-language-repo
|
working-directory: x/y/z/some-path/tests/multi-language-repo
|
||||||
run: |
|
run: |
|
||||||
./build.sh
|
./build.sh
|
||||||
|
|
||||||
- uses: ./../action/analyze
|
- uses: ./../action/analyze
|
||||||
with:
|
with:
|
||||||
checkout_path: x/y/z/some-path/tests/multi-language-repo
|
checkout_path: x/y/z/some-path/tests/multi-language-repo
|
||||||
ref: v1.1.0
|
ref: v1.1.0
|
||||||
sha: 474bbf07f9247ffe1856c6a0f94aeeb10e7afee6
|
sha: 474bbf07f9247ffe1856c6a0f94aeeb10e7afee6
|
||||||
upload: never
|
upload: never
|
||||||
upload-database: false
|
upload-database: false
|
||||||
|
|
||||||
- uses: ./../action/upload-sarif
|
- uses: ./../action/upload-sarif
|
||||||
with:
|
with:
|
||||||
ref: v1.1.0
|
ref: v1.1.0
|
||||||
sha: 474bbf07f9247ffe1856c6a0f94aeeb10e7afee6
|
sha: 474bbf07f9247ffe1856c6a0f94aeeb10e7afee6
|
||||||
checkout_path: x/y/z/some-path/tests/multi-language-repo
|
checkout_path: x/y/z/some-path/tests/multi-language-repo
|
||||||
|
|
||||||
- name: Verify SARIF after upload
|
- name: Verify SARIF after upload
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
EXPECTED_COMMIT_OID="474bbf07f9247ffe1856c6a0f94aeeb10e7afee6"
|
EXPECTED_COMMIT_OID="474bbf07f9247ffe1856c6a0f94aeeb10e7afee6"
|
||||||
EXPECTED_REF="v1.1.0"
|
EXPECTED_REF="v1.1.0"
|
||||||
EXPECTED_CHECKOUT_URI_SUFFIX="/x/y/z/some-path/tests/multi-language-repo"
|
EXPECTED_CHECKOUT_URI_SUFFIX="/x/y/z/some-path/tests/multi-language-repo"
|
||||||
|
|
||||||
ACTUAL_COMMIT_OID="$(cat "$RUNNER_TEMP/payload.json" | jq -r .commit_oid)"
|
ACTUAL_COMMIT_OID="$(cat "$RUNNER_TEMP/payload.json" | jq -r .commit_oid)"
|
||||||
ACTUAL_REF="$(cat "$RUNNER_TEMP/payload.json" | jq -r .ref)"
|
ACTUAL_REF="$(cat "$RUNNER_TEMP/payload.json" | jq -r .ref)"
|
||||||
ACTUAL_CHECKOUT_URI="$(cat "$RUNNER_TEMP/payload.json" | jq -r .checkout_uri)"
|
ACTUAL_CHECKOUT_URI="$(cat "$RUNNER_TEMP/payload.json" | jq -r .checkout_uri)"
|
||||||
|
|
||||||
if [[ "$EXPECTED_COMMIT_OID" != "$ACTUAL_COMMIT_OID" ]]; then
|
if [[ "$EXPECTED_COMMIT_OID" != "$ACTUAL_COMMIT_OID" ]]; then
|
||||||
echo "::error Invalid commit oid. Expected: $EXPECTED_COMMIT_OID Actual: $ACTUAL_COMMIT_OID"
|
echo "::error Invalid commit oid. Expected: $EXPECTED_COMMIT_OID Actual: $ACTUAL_COMMIT_OID"
|
||||||
echo "$RUNNER_TEMP/payload.json"
|
echo "$RUNNER_TEMP/payload.json"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$EXPECTED_REF" != "$ACTUAL_REF" ]]; then
|
if [[ "$EXPECTED_REF" != "$ACTUAL_REF" ]]; then
|
||||||
echo "::error Invalid ref. Expected: '$EXPECTED_REF' Actual: '$ACTUAL_REF'"
|
echo "::error Invalid ref. Expected: '$EXPECTED_REF' Actual: '$ACTUAL_REF'"
|
||||||
echo "$RUNNER_TEMP/payload.json"
|
echo "$RUNNER_TEMP/payload.json"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$ACTUAL_CHECKOUT_URI" != *$EXPECTED_CHECKOUT_URI_SUFFIX ]]; then
|
if [[ "$ACTUAL_CHECKOUT_URI" != *$EXPECTED_CHECKOUT_URI_SUFFIX ]]; then
|
||||||
echo "::error Invalid checkout URI suffix. Expected suffix: $EXPECTED_CHECKOUT_URI_SUFFIX Actual uri: $ACTUAL_CHECKOUT_URI"
|
echo "::error Invalid checkout URI suffix. Expected suffix: $EXPECTED_CHECKOUT_URI_SUFFIX Actual uri: $ACTUAL_CHECKOUT_URI"
|
||||||
echo "$RUNNER_TEMP/payload.json"
|
echo "$RUNNER_TEMP/payload.json"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ on:
|
|||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
47
.github/workflows/debug-artifacts-failure.yml
vendored
47
.github/workflows/debug-artifacts-failure.yml
vendored
@@ -17,18 +17,17 @@ on:
|
|||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
upload-artifacts:
|
upload-artifacts:
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest, macos-latest]
|
|
||||||
name: Upload debug artifacts after failure in analyze
|
name: Upload debug artifacts after failure in analyze
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Dump GitHub event
|
- name: Dump GitHub event
|
||||||
run: cat "${GITHUB_EVENT_PATH}"
|
run: cat "${GITHUB_EVENT_PATH}"
|
||||||
@@ -53,9 +52,11 @@ jobs:
|
|||||||
run: ./build.sh
|
run: ./build.sh
|
||||||
- uses: ./../action/analyze
|
- uses: ./../action/analyze
|
||||||
id: analysis
|
id: analysis
|
||||||
|
env:
|
||||||
|
# Forces a failure in this step.
|
||||||
|
CODEQL_ACTION_EXTRA_OPTIONS: '{ "database": { "finalize": ["--invalid-option"] } }'
|
||||||
with:
|
with:
|
||||||
expect-error: true
|
expect-error: true
|
||||||
ram: 1
|
|
||||||
download-and-check-artifacts:
|
download-and-check-artifacts:
|
||||||
name: Download and check debug artifacts after failure in analyze
|
name: Download and check debug artifacts after failure in analyze
|
||||||
needs: upload-artifacts
|
needs: upload-artifacts
|
||||||
@@ -67,27 +68,23 @@ jobs:
|
|||||||
- name: Check expected artifacts exist
|
- name: Check expected artifacts exist
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
OPERATING_SYSTEMS="ubuntu-latest macos-latest"
|
|
||||||
LANGUAGES="cpp csharp go java javascript python"
|
LANGUAGES="cpp csharp go java javascript python"
|
||||||
for os in $OPERATING_SYSTEMS; do
|
cd "./my-debug-artifacts"
|
||||||
pushd "./my-debug-artifacts-$os"
|
echo "Artifacts from run:"
|
||||||
echo "Artifacts from run on $os:"
|
for language in $LANGUAGES; do
|
||||||
for language in $LANGUAGES; do
|
echo "- Checking $language"
|
||||||
echo "- Checking $language"
|
if [[ ! -f "my-db-$language-partial.zip" ]] ; then
|
||||||
if [[ ! -f "my-db-$language-partial.zip" ]] ; then
|
echo "Missing a partial database bundle for $language"
|
||||||
echo "Missing a partial database bundle for $language"
|
exit 1
|
||||||
exit 1
|
fi
|
||||||
fi
|
if [[ ! -d "log" ]] ; then
|
||||||
if [[ ! -d "log" ]] ; then
|
echo "Missing database initialization logs"
|
||||||
echo "Missing database initialization logs"
|
exit 1
|
||||||
exit 1
|
fi
|
||||||
fi
|
if [[ ! "$language" == "go" ]] && [[ ! -d "$language/log" ]] ; then
|
||||||
if [[ ! "$language" == "go" ]] && [[ ! -d "$language/log" ]] ; then
|
echo "Missing logs for $language"
|
||||||
echo "Missing logs for $language"
|
exit 1
|
||||||
exit 1
|
fi
|
||||||
fi
|
|
||||||
done
|
|
||||||
popd
|
|
||||||
done
|
done
|
||||||
env:
|
env:
|
||||||
GO111MODULE: auto
|
GO111MODULE: auto
|
||||||
|
|||||||
60
.github/workflows/debug-artifacts.yml
vendored
60
.github/workflows/debug-artifacts.yml
vendored
@@ -16,19 +16,19 @@ on:
|
|||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
upload-artifacts:
|
upload-artifacts:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
|
||||||
- ubuntu-latest
|
|
||||||
- macos-latest
|
|
||||||
version:
|
version:
|
||||||
- stable-20221211
|
- stable-20230403
|
||||||
- stable-20230418
|
|
||||||
- stable-v2.13.5
|
- stable-v2.13.5
|
||||||
- stable-v2.14.6
|
- stable-v2.14.6
|
||||||
|
- stable-v2.15.5
|
||||||
|
- stable-v2.16.6
|
||||||
- default
|
- default
|
||||||
- latest
|
- latest
|
||||||
- nightly-latest
|
- nightly-latest
|
||||||
@@ -36,7 +36,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
CODEQL_ACTION_TEST_MODE: true
|
||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository
|
- name: Check out repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -48,16 +48,6 @@ jobs:
|
|||||||
- uses: actions/setup-go@v5
|
- uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version: ^1.13.1
|
go-version: ^1.13.1
|
||||||
- name: Setup Python on MacOS
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
if: |
|
|
||||||
matrix.os == 'macos-latest' && (
|
|
||||||
matrix.version == 'stable-20221211' ||
|
|
||||||
matrix.version == 'stable-20230418' ||
|
|
||||||
matrix.version == 'stable-v2.13.5' ||
|
|
||||||
matrix.version == 'stable-v2.14.6')
|
|
||||||
with:
|
|
||||||
python-version: '3.11'
|
|
||||||
- uses: ./../action/init
|
- uses: ./../action/init
|
||||||
id: init
|
id: init
|
||||||
with:
|
with:
|
||||||
@@ -84,29 +74,27 @@ jobs:
|
|||||||
- name: Check expected artifacts exist
|
- name: Check expected artifacts exist
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
VERSIONS="stable-20221211 stable-20230418 stable-v2.13.5 stable-v2.14.6 default latest nightly-latest"
|
VERSIONS="stable-20230403 stable-v2.13.5 stable-v2.14.6 stable-v2.15.5 stable-v2.16.6 default latest nightly-latest"
|
||||||
LANGUAGES="cpp csharp go java javascript python"
|
LANGUAGES="cpp csharp go java javascript python"
|
||||||
for version in $VERSIONS; do
|
for version in $VERSIONS; do
|
||||||
for os in ubuntu-latest macos-latest; do
|
pushd "./my-debug-artifacts-${version//./}"
|
||||||
pushd "./my-debug-artifacts-$os-${version//./}"
|
echo "Artifacts from version $version:"
|
||||||
echo "Artifacts from version $version on $os:"
|
for language in $LANGUAGES; do
|
||||||
for language in $LANGUAGES; do
|
echo "- Checking $language"
|
||||||
echo "- Checking $language"
|
if [[ ! -f "$language.sarif" ]] ; then
|
||||||
if [[ ! -f "$language.sarif" ]] ; then
|
echo "Missing a SARIF file for $language"
|
||||||
echo "Missing a SARIF file for $language"
|
exit 1
|
||||||
exit 1
|
fi
|
||||||
fi
|
if [[ ! -f "my-db-$language.zip" ]] ; then
|
||||||
if [[ ! -f "my-db-$language.zip" ]] ; then
|
echo "Missing a database bundle for $language"
|
||||||
echo "Missing a database bundle for $language"
|
exit 1
|
||||||
exit 1
|
fi
|
||||||
fi
|
if [[ ! -d "$language/log" ]] ; then
|
||||||
if [[ ! -d "$language/log" ]] ; then
|
echo "Missing logs for $language"
|
||||||
echo "Missing logs for $language"
|
exit 1
|
||||||
exit 1
|
fi
|
||||||
fi
|
|
||||||
done
|
|
||||||
popd
|
|
||||||
done
|
done
|
||||||
|
popd
|
||||||
done
|
done
|
||||||
env:
|
env:
|
||||||
GO111MODULE: auto
|
GO111MODULE: auto
|
||||||
|
|||||||
2
.github/workflows/expected-queries-runs.yml
vendored
2
.github/workflows/expected-queries-runs.yml
vendored
@@ -11,6 +11,8 @@ on:
|
|||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
174
.github/workflows/python-deps.yml
vendored
174
.github/workflows/python-deps.yml
vendored
@@ -1,174 +0,0 @@
|
|||||||
name: Test Python Package Installation
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main, releases/v*]
|
|
||||||
pull_request:
|
|
||||||
# Run checks on reopened draft PRs to support triggering PR checks on draft PRs that were opened
|
|
||||||
# by other workflows.
|
|
||||||
types: [opened, synchronize, reopened, ready_for_review]
|
|
||||||
paths:
|
|
||||||
# Changes to this workflow.
|
|
||||||
- '.github/workflows/python-deps.yml'
|
|
||||||
# Changes to the Python package installation scripts and their tests.
|
|
||||||
- 'python-setup/**'
|
|
||||||
# Changes to the default CodeQL bundle version.
|
|
||||||
- '**/defaults.json'
|
|
||||||
schedule:
|
|
||||||
# Weekly on Monday.
|
|
||||||
- cron: '0 0 * * 1'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test-setup-python-scripts:
|
|
||||||
timeout-minutes: 45
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-20.04, ubuntu-22.04, macos-latest]
|
|
||||||
python_deps_type: [pipenv, poetry, requirements, setup_py]
|
|
||||||
python_version: [3]
|
|
||||||
|
|
||||||
|
|
||||||
env:
|
|
||||||
PYTHON_DEPS_TYPE: ${{ matrix.python_deps_type }}
|
|
||||||
PYTHON_VERSION: ${{ matrix.python_version }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: ./init
|
|
||||||
id: init
|
|
||||||
with:
|
|
||||||
tools: latest
|
|
||||||
languages: python
|
|
||||||
setup-python-dependencies: false
|
|
||||||
|
|
||||||
- name: Test Auto Package Installation
|
|
||||||
run: |
|
|
||||||
set -x
|
|
||||||
$GITHUB_WORKSPACE/python-setup/install_tools.sh
|
|
||||||
|
|
||||||
cd $GITHUB_WORKSPACE/python-setup/tests/${PYTHON_DEPS_TYPE}/requests-${PYTHON_VERSION}
|
|
||||||
|
|
||||||
case ${{ matrix.os }} in
|
|
||||||
ubuntu-20.04*) basePath="/opt";;
|
|
||||||
ubuntu-22.04*) basePath="/opt";;
|
|
||||||
macos-latest*) basePath="/Users/runner";;
|
|
||||||
esac
|
|
||||||
echo ${basePath}
|
|
||||||
|
|
||||||
$GITHUB_WORKSPACE/python-setup/auto_install_packages.py "$(dirname ${{steps.init.outputs.codeql-path}})"
|
|
||||||
- name: Setup for extractor
|
|
||||||
run: |
|
|
||||||
echo $CODEQL_PYTHON
|
|
||||||
# only run if $CODEQL_PYTHON is set
|
|
||||||
if [ ! -z $CODEQL_PYTHON ]; then
|
|
||||||
$GITHUB_WORKSPACE/python-setup/tests/from_python_exe.py $CODEQL_PYTHON;
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Verify packages installed
|
|
||||||
run: |
|
|
||||||
$GITHUB_WORKSPACE/python-setup/tests/check_requests.sh ${PYTHON_VERSION} 2.31.0
|
|
||||||
|
|
||||||
# This one shouldn't fail, but also won't install packages
|
|
||||||
test-setup-python-scripts-non-standard-location:
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-20.04, ubuntu-22.04, macos-latest]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: ./init
|
|
||||||
id: init
|
|
||||||
with:
|
|
||||||
tools: latest
|
|
||||||
languages: python
|
|
||||||
setup-python-dependencies: false
|
|
||||||
|
|
||||||
- name: Test Auto Package Installation
|
|
||||||
run: |
|
|
||||||
set -x
|
|
||||||
$GITHUB_WORKSPACE/python-setup/install_tools.sh
|
|
||||||
|
|
||||||
cd $GITHUB_WORKSPACE/python-setup/tests/requirements/non-standard-location
|
|
||||||
|
|
||||||
case ${{ matrix.os }} in
|
|
||||||
ubuntu-20.04*) basePath="/opt";;
|
|
||||||
ubuntu-22.04*) basePath="/opt";;
|
|
||||||
macos-latest*) basePath="/Users/runner";;
|
|
||||||
esac
|
|
||||||
echo ${basePath}
|
|
||||||
|
|
||||||
$GITHUB_WORKSPACE/python-setup/auto_install_packages.py "$(dirname ${{steps.init.outputs.codeql-path}})"
|
|
||||||
|
|
||||||
- name: Setup for extractor
|
|
||||||
run: |
|
|
||||||
echo $CODEQL_PYTHON
|
|
||||||
# only run if $CODEQL_PYTHON is set
|
|
||||||
if [ ! -z $CODEQL_PYTHON ]; then
|
|
||||||
$GITHUB_WORKSPACE/python-setup/tests/from_python_exe.py $CODEQL_PYTHON;
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Verify packages installed
|
|
||||||
run: |
|
|
||||||
test -z $LGTM_INDEX_IMPORT_PATH
|
|
||||||
|
|
||||||
test-setup-python-scripts-windows:
|
|
||||||
runs-on: windows-latest
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
python_deps_type: [pipenv, poetry, requirements, setup_py]
|
|
||||||
python_version: [3]
|
|
||||||
|
|
||||||
env:
|
|
||||||
CODEQL_ACTION_TEST_MODE: true
|
|
||||||
PYTHON_DEPS_TYPE: ${{ matrix.python_deps_type }}
|
|
||||||
PYTHON_VERSION: ${{ matrix.python_version }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: ${{ matrix.python_version }}
|
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
id: init
|
|
||||||
uses: ./init
|
|
||||||
with:
|
|
||||||
tools: latest
|
|
||||||
languages: python
|
|
||||||
setup-python-dependencies: false
|
|
||||||
|
|
||||||
- name: Test Auto Package Installation
|
|
||||||
env:
|
|
||||||
CODEQL_PATH: ${{ steps.init.outputs.codeql-path }}
|
|
||||||
run: |
|
|
||||||
$cmd = $Env:GITHUB_WORKSPACE + "\\python-setup\\install_tools.ps1"
|
|
||||||
powershell -File $cmd
|
|
||||||
|
|
||||||
cd $Env:GITHUB_WORKSPACE\\python-setup/tests/$Env:PYTHON_DEPS_TYPE/requests-$Env:PYTHON_VERSION
|
|
||||||
$codeql_dist = (get-item $Env:CODEQL_PATH).Directory.FullName
|
|
||||||
py -3 $Env:GITHUB_WORKSPACE\\python-setup\\auto_install_packages.py $codeql_dist
|
|
||||||
|
|
||||||
- name: Setup for extractor
|
|
||||||
run: |
|
|
||||||
echo $Env:CODEQL_PYTHON
|
|
||||||
|
|
||||||
py -3 $Env:GITHUB_WORKSPACE\\python-setup\\tests\\from_python_exe.py $Env:CODEQL_PYTHON
|
|
||||||
|
|
||||||
- name: Verify packages installed
|
|
||||||
run: |
|
|
||||||
$cmd = $Env:GITHUB_WORKSPACE + "\\python-setup\\tests\\check_requests.ps1"
|
|
||||||
powershell -File $cmd $Env:PYTHON_VERSION 2.31.0
|
|
||||||
2
.github/workflows/query-filters.yml
vendored
2
.github/workflows/query-filters.yml
vendored
@@ -11,6 +11,8 @@ on:
|
|||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|||||||
18
.github/workflows/rebuild.yml
vendored
18
.github/workflows/rebuild.yml
vendored
@@ -3,6 +3,7 @@ name: Rebuild Action
|
|||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
types: [labeled]
|
types: [labeled]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
rebuild:
|
rebuild:
|
||||||
@@ -24,6 +25,23 @@ jobs:
|
|||||||
gh pr edit --repo github/codeql-action "$PR_NUMBER" \
|
gh pr edit --repo github/codeql-action "$PR_NUMBER" \
|
||||||
--remove-label "Rebuild"
|
--remove-label "Rebuild"
|
||||||
|
|
||||||
|
- name: Merge in changes from base branch
|
||||||
|
env:
|
||||||
|
BASE_BRANCH: ${{ github.event.pull_request.base.ref }}
|
||||||
|
run: |
|
||||||
|
git fetch origin "$BASE_BRANCH"
|
||||||
|
|
||||||
|
# Allow merge conflicts in `lib`, since rebuilding should resolve them.
|
||||||
|
git merge "origin/$BASE_BRANCH" || echo "Merge conflicts detected"
|
||||||
|
|
||||||
|
# Check for merge conflicts outside of `lib`. Disable git diff's trailing whitespace check
|
||||||
|
# since `node_modules/@types/semver/README.md` fails it.
|
||||||
|
if git -c core.whitespace=-trailing-space diff --check | grep --invert-match '^lib/'; then
|
||||||
|
echo "Merge conflicts detected outside of lib/ directory. Please resolve them manually."
|
||||||
|
git -c core.whitespace=-trailing-space diff --check | grep --invert-match '^lib/' || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Compile TypeScript
|
- name: Compile TypeScript
|
||||||
run: |
|
run: |
|
||||||
npm install
|
npm install
|
||||||
|
|||||||
2
.github/workflows/test-codeql-bundle-all.yml
vendored
2
.github/workflows/test-codeql-bundle-all.yml
vendored
@@ -16,6 +16,8 @@ on:
|
|||||||
- synchronize
|
- synchronize
|
||||||
- reopened
|
- reopened
|
||||||
- ready_for_review
|
- ready_for_review
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
jobs:
|
jobs:
|
||||||
test-codeql-bundle-all:
|
test-codeql-bundle-all:
|
||||||
|
|||||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,2 +1,7 @@
|
|||||||
# Ignore for example failing-tests.json from AVA
|
# Ignore for example failing-tests.json from AVA
|
||||||
node_modules/.cache
|
node_modules/.cache/
|
||||||
|
# Java build files
|
||||||
|
.gradle/
|
||||||
|
*.class
|
||||||
|
# macOS
|
||||||
|
.DS_Store
|
||||||
|
|||||||
79
CHANGELOG.md
79
CHANGELOG.md
@@ -4,10 +4,87 @@ See the [releases page](https://github.com/github/codeql-action/releases) for th
|
|||||||
|
|
||||||
Note that the only difference between `v2` and `v3` of the CodeQL Action is the node version they support, with `v3` running on node 20 while we continue to release `v2` to support running on node 16. For example `3.22.11` was the first `v3` release and is functionally identical to `2.22.11`. This approach ensures an easy way to track exactly which features are included in different versions, indicated by the minor and patch version numbers.
|
Note that the only difference between `v2` and `v3` of the CodeQL Action is the node version they support, with `v3` running on node 20 while we continue to release `v2` to support running on node 16. For example `3.22.11` was the first `v3` release and is functionally identical to `2.22.11`. This approach ensures an easy way to track exactly which features are included in different versions, indicated by the minor and patch version numbers.
|
||||||
|
|
||||||
## [UNRELEASED]
|
## 3.25.2 - 22 Apr 2024
|
||||||
|
|
||||||
No user facing changes.
|
No user facing changes.
|
||||||
|
|
||||||
|
## 3.25.1 - 17 Apr 2024
|
||||||
|
|
||||||
|
- We are rolling out a feature in April/May 2024 that improves the reliability and performance of analyzing code when analyzing a compiled language with the `autobuild` [build mode](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#codeql-build-modes). [#2235](https://github.com/github/codeql-action/pull/2235)
|
||||||
|
- Fix a bug where the `init` Action would fail if `--overwrite` was specified in `CODEQL_ACTION_EXTRA_OPTIONS`. [#2245](https://github.com/github/codeql-action/pull/2245)
|
||||||
|
|
||||||
|
## 3.25.0 - 15 Apr 2024
|
||||||
|
|
||||||
|
- The deprecated feature for extracting dependencies for a Python analysis has been removed. [#2224](https://github.com/github/codeql-action/pull/2224)
|
||||||
|
|
||||||
|
As a result, the following inputs and environment variables are now ignored:
|
||||||
|
|
||||||
|
- The `setup-python-dependencies` input to the `init` Action
|
||||||
|
- The `CODEQL_ACTION_DISABLE_PYTHON_DEPENDENCY_INSTALLATION` environment variable
|
||||||
|
|
||||||
|
We recommend removing any references to these from your workflows. For more information, see the release notes for CodeQL Action v3.23.0 and v2.23.0.
|
||||||
|
- Automatically overwrite an existing database if found on the filesystem. [#2229](https://github.com/github/codeql-action/pull/2229)
|
||||||
|
- Bump the minimum CodeQL bundle version to 2.12.6. [#2232](https://github.com/github/codeql-action/pull/2232)
|
||||||
|
- A more relevant log message and a diagnostic are now emitted when the `file` program is not installed on a Linux runner, but is required for Go tracing to succeed. [#2234](https://github.com/github/codeql-action/pull/2234)
|
||||||
|
|
||||||
|
## 3.24.10 - 05 Apr 2024
|
||||||
|
|
||||||
|
- Update default CodeQL bundle version to 2.17.0. [#2219](https://github.com/github/codeql-action/pull/2219)
|
||||||
|
- Add a deprecation warning for customers using CodeQL version 2.12.5 and earlier. These versions of CodeQL were discontinued on 26 March 2024 alongside GitHub Enterprise Server 3.8, and will be unsupported by CodeQL Action versions 3.25.0 and later and versions 2.25.0 and later. [#2220](https://github.com/github/codeql-action/pull/2220)
|
||||||
|
- If you are using one of these versions, please update to CodeQL CLI version 2.12.6 or later. For instance, if you have specified a custom version of the CLI using the 'tools' input to the 'init' Action, you can remove this input to use the default version.
|
||||||
|
- Alternatively, if you want to continue using a version of the CodeQL CLI between 2.11.6 and 2.12.5, you can replace `github/codeql-action/*@v3` by `github/codeql-action/*@v3.24.10` and `github/codeql-action/*@v2` by `github/codeql-action/*@v2.24.10` in your code scanning workflow to ensure you continue using this version of the CodeQL Action.
|
||||||
|
|
||||||
|
## 3.24.9 - 22 Mar 2024
|
||||||
|
|
||||||
|
- Update default CodeQL bundle version to 2.16.5. [#2203](https://github.com/github/codeql-action/pull/2203)
|
||||||
|
|
||||||
|
## 3.24.8 - 18 Mar 2024
|
||||||
|
|
||||||
|
- Improve the ease of debugging extraction issues by increasing the verbosity of the extractor logs when running in debug mode. [#2195](https://github.com/github/codeql-action/pull/2195)
|
||||||
|
|
||||||
|
## 3.24.7 - 12 Mar 2024
|
||||||
|
|
||||||
|
- Update default CodeQL bundle version to 2.16.4. [#2185](https://github.com/github/codeql-action/pull/2185)
|
||||||
|
|
||||||
|
## 3.24.6 - 29 Feb 2024
|
||||||
|
|
||||||
|
No user facing changes.
|
||||||
|
|
||||||
|
## 3.24.5 - 23 Feb 2024
|
||||||
|
|
||||||
|
- Update default CodeQL bundle version to 2.16.3. [#2156](https://github.com/github/codeql-action/pull/2156)
|
||||||
|
|
||||||
|
## 3.24.4 - 21 Feb 2024
|
||||||
|
|
||||||
|
- Fix an issue where an existing, but empty, `/sys/fs/cgroup/cpuset.cpus` file always resulted in a single-threaded run. [#2151](https://github.com/github/codeql-action/pull/2151)
|
||||||
|
|
||||||
|
## 3.24.3 - 15 Feb 2024
|
||||||
|
|
||||||
|
- Fix an issue where the CodeQL Action would fail to load a configuration specified by the `config` input to the `init` Action. [#2147](https://github.com/github/codeql-action/pull/2147)
|
||||||
|
|
||||||
|
## 3.24.2 - 15 Feb 2024
|
||||||
|
|
||||||
|
- Enable improved multi-threaded performance on larger runners for GitHub Enterprise Server users. This feature is already available to GitHub.com users. [#2141](https://github.com/github/codeql-action/pull/2141)
|
||||||
|
|
||||||
|
## 3.24.1 - 13 Feb 2024
|
||||||
|
|
||||||
|
- Update default CodeQL bundle version to 2.16.2. [#2124](https://github.com/github/codeql-action/pull/2124)
|
||||||
|
- The CodeQL action no longer fails if it can't write to the telemetry api endpoint. [#2121](https://github.com/github/codeql-action/pull/2121)
|
||||||
|
|
||||||
|
## 3.24.0 - 02 Feb 2024
|
||||||
|
|
||||||
|
- CodeQL Python analysis will no longer install dependencies on GitHub Enterprise Server, as is already the case for GitHub.com. See [release notes for 3.23.0](#3230---08-jan-2024) for more details. [#2106](https://github.com/github/codeql-action/pull/2106)
|
||||||
|
|
||||||
|
## 3.23.2 - 26 Jan 2024
|
||||||
|
|
||||||
|
- On Linux, the maximum possible value for the `--threads` option now respects the CPU count as specified in `cgroup` files to more accurately reflect the number of available cores when running in containers. [#2083](https://github.com/github/codeql-action/pull/2083)
|
||||||
|
- Update default CodeQL bundle version to 2.16.1. [#2096](https://github.com/github/codeql-action/pull/2096)
|
||||||
|
|
||||||
|
## 3.23.1 - 17 Jan 2024
|
||||||
|
|
||||||
|
- Update default CodeQL bundle version to 2.16.0. [#2073](https://github.com/github/codeql-action/pull/2073)
|
||||||
|
- Change the retention period for uploaded debug artifacts to 7 days. Previously, this was whatever the repository default was. [#2079](https://github.com/github/codeql-action/pull/2079)
|
||||||
|
|
||||||
## 3.23.0 - 08 Jan 2024
|
## 3.23.0 - 08 Jan 2024
|
||||||
|
|
||||||
- We are rolling out a feature in January 2024 that will disable Python dependency installation by default for all users. This improves the speed of analysis while having only a very minor impact on results. You can override this behavior by setting `CODEQL_ACTION_DISABLE_PYTHON_DEPENDENCY_INSTALLATION=false` in your workflow, however we plan to remove this ability in future versions of the CodeQL Action. [#2031](https://github.com/github/codeql-action/pull/2031)
|
- We are rolling out a feature in January 2024 that will disable Python dependency installation by default for all users. This improves the speed of analysis while having only a very minor impact on results. You can override this behavior by setting `CODEQL_ACTION_DISABLE_PYTHON_DEPENDENCY_INSTALLATION=false` in your workflow, however we plan to remove this ability in future versions of the CodeQL Action. [#2031](https://github.com/github/codeql-action/pull/2031)
|
||||||
|
|||||||
@@ -1,3 +1 @@
|
|||||||
**/* @github/codeql-action-reviewers
|
**/* @github/codeql-action-reviewers
|
||||||
|
|
||||||
/python-setup/ @github/codeql-python @github/codeql-action-reviewers
|
|
||||||
|
|||||||
@@ -57,18 +57,14 @@ Here are a few things you can do that will increase the likelihood of your pull
|
|||||||
## Releasing (write access required)
|
## Releasing (write access required)
|
||||||
|
|
||||||
1. The first step of releasing a new version of the `codeql-action` is running the "Update release branch" workflow.
|
1. The first step of releasing a new version of the `codeql-action` is running the "Update release branch" workflow.
|
||||||
This workflow goes through the pull requests that have been merged to `main` since the last release, creates a changelog, then opens a pull request to merge the changes since the last release into the `releases/v2` release branch.
|
This workflow goes through the pull requests that have been merged to `main` since the last release, creates a changelog, then opens a pull request to merge the changes since the last release into the `releases/v3` release branch.
|
||||||
|
|
||||||
You can start a release by triggering this workflow via [workflow dispatch](https://github.com/github/codeql-action/actions/workflows/update-release-branch.yml).
|
You can start a release by triggering this workflow via [workflow dispatch](https://github.com/github/codeql-action/actions/workflows/update-release-branch.yml).
|
||||||
1. The workflow run will open a pull request titled "Merge main into releases/v2". Mark the pull request as [ready for review](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review) to trigger the PR checks.
|
1. The workflow run will open a pull request titled "Merge main into releases/v3". Follow the steps on the checklist in the pull request. Once you've checked off all but the last two of these, approve the PR and automerge it.
|
||||||
1. Review the checklist items in the pull request description.
|
1. When the "Merge main into releases/v3" pull request is merged into the `releases/v3` branch, a mergeback pull request to `main` and a backport pull request to `releases/v2` will both be automatically created. This mergeback pull request incorporates the changelog updates into `main`, tags the release using the merge commit of the "Merge main into releases/v3" pull request, and bumps the patch version of the CodeQL Action. The backport pull request will incorporate the updates into `releases/v2`.
|
||||||
Once you've checked off all but the last two of these, approve the PR and automerge it.
|
1. Approve the mergeback and backport pull requests and automerge them.
|
||||||
1. When the "Merge main into releases/v2" pull request is merged into the `releases/v2` branch, the "Tag release and merge back" workflow will create a mergeback PR.
|
|
||||||
This mergeback incorporates the changelog updates into `main`, tags the release using the merge commit of the "Merge main into releases/v2" pull request, and bumps the patch version of the CodeQL Action.
|
|
||||||
|
|
||||||
Approve the mergeback PR and automerge it.
|
Once the mergeback and backport pull request have been merged, the release is complete.
|
||||||
|
|
||||||
Once the mergeback has been merged to `main`, the release is complete.
|
|
||||||
|
|
||||||
## Keeping the PR checks up to date (admin access required)
|
## Keeping the PR checks up to date (admin access required)
|
||||||
|
|
||||||
|
|||||||
19
README.md
19
README.md
@@ -8,7 +8,7 @@ For a list of recent changes, see the CodeQL Action's [changelog](CHANGELOG.md).
|
|||||||
|
|
||||||
This project is released under the [MIT License](LICENSE).
|
This project is released under the [MIT License](LICENSE).
|
||||||
|
|
||||||
The underlying CodeQL CLI, used in this action, is licensed under the [GitHub CodeQL Terms and Conditions](https://securitylab.github.com/tools/codeql/license). As such, this action may be used on open source projects hosted on GitHub, and on private repositories that are owned by an organisation with GitHub Advanced Security enabled.
|
The underlying CodeQL CLI, used in this action, is licensed under the [GitHub CodeQL Terms and Conditions](https://securitylab.github.com/tools/codeql/license). As such, this action may be used on open source projects hosted on GitHub, and on private repositories that are owned by an organisation with GitHub Advanced Security enabled.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@@ -16,6 +16,23 @@ We recommend using default setup to configure CodeQL analysis for your repositor
|
|||||||
|
|
||||||
You can also configure advanced setup for a repository to find security vulnerabilities in your code using a highly customizable code scanning configuration. For more information, see "[Configuring advanced setup for code scanning](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning)" and "[Customizing your advanced setup for code scanning](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning)."
|
You can also configure advanced setup for a repository to find security vulnerabilities in your code using a highly customizable code scanning configuration. For more information, see "[Configuring advanced setup for code scanning](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning)" and "[Customizing your advanced setup for code scanning](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning)."
|
||||||
|
|
||||||
|
### Permissions
|
||||||
|
|
||||||
|
All advanced setup code scanning workflows must have the `security-events: write` permission. Workflows in private repositories must additionally have the `contents: read` permission. For more information, see "[Assigning permissions to jobs](https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs)."
|
||||||
|
|
||||||
|
## Supported versions of the CodeQL Action
|
||||||
|
|
||||||
|
The following versions of the CodeQL Action are currently supported:
|
||||||
|
|
||||||
|
- v3 (latest)
|
||||||
|
- v2 (deprecated, support will end on December 5th, 2024)
|
||||||
|
|
||||||
|
The only difference between CodeQL Action v2 and v3 is the version of Node.js on which they run. CodeQL Action v3 runs on Node 20, while CodeQL Action v2 runs on Node 16.
|
||||||
|
|
||||||
|
To provide the best experience to customers using older versions of GitHub Enterprise Server, we will continue to release CodeQL Action v2 so that these customers can continue to run the latest version of CodeQL as long as their version of GitHub Enterprise Server is supported. For example CodeQL Action v3.22.11 was the first release of CodeQL Action v3 and is functionally identical to v2.22.11. This approach provides an easy way to track exactly which features are included in different versions by looking at the minor and patch version numbers.
|
||||||
|
|
||||||
|
For more information, see "[Code scanning: deprecation of CodeQL Action v2](https://github.blog/changelog/2024-01-12-code-scanning-deprecation-of-codeql-action-v2/)."
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
Read about [troubleshooting code scanning](https://docs.github.com/en/code-security/code-scanning/troubleshooting-code-scanning).
|
Read about [troubleshooting code scanning](https://docs.github.com/en/code-security/code-scanning/troubleshooting-code-scanning).
|
||||||
|
|||||||
@@ -52,10 +52,10 @@ inputs:
|
|||||||
# If changing this, make sure to update workflow.ts accordingly.
|
# If changing this, make sure to update workflow.ts accordingly.
|
||||||
default: ${{ github.workspace }}
|
default: ${{ github.workspace }}
|
||||||
ref:
|
ref:
|
||||||
description: "The ref where results will be uploaded. If not provided, the Action will use the GITHUB_REF environment variable. If provided, the sha input must be provided as well. This input is not available in pull requests from forks."
|
description: "The ref where results will be uploaded. If not provided, the Action will use the GITHUB_REF environment variable. If provided, the sha input must be provided as well. This input is ignored for pull requests from forks."
|
||||||
required: false
|
required: false
|
||||||
sha:
|
sha:
|
||||||
description: "The sha of the HEAD of the ref where results will be uploaded. If not provided, the Action will use the GITHUB_SHA environment variable. If provided, the ref input must be provided as well. This input is not available in pull requests from forks."
|
description: "The sha of the HEAD of the ref where results will be uploaded. If not provided, the Action will use the GITHUB_SHA environment variable. If provided, the ref input must be provided as well. This input is ignored for pull requests from forks."
|
||||||
required: false
|
required: false
|
||||||
category:
|
category:
|
||||||
description: String used by Code Scanning for matching the analyses
|
description: String used by Code Scanning for matching the analyses
|
||||||
@@ -69,6 +69,8 @@ inputs:
|
|||||||
required: true
|
required: true
|
||||||
default: "true"
|
default: "true"
|
||||||
token:
|
token:
|
||||||
|
description: "GitHub token to use for authenticating with this instance of GitHub. The token needs the `security-events: write` permission."
|
||||||
|
required: false
|
||||||
default: ${{ github.token }}
|
default: ${{ github.token }}
|
||||||
matrix:
|
matrix:
|
||||||
default: ${{ toJson(matrix) }}
|
default: ${{ toJson(matrix) }}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ description: 'Attempt to automatically build code'
|
|||||||
author: 'GitHub'
|
author: 'GitHub'
|
||||||
inputs:
|
inputs:
|
||||||
token:
|
token:
|
||||||
|
description: "GitHub token to use for authenticating with this instance of GitHub. The token needs the `security-events: write` permission."
|
||||||
|
required: false
|
||||||
default: ${{ github.token }}
|
default: ${{ github.token }}
|
||||||
matrix:
|
matrix:
|
||||||
default: ${{ toJson(matrix) }}
|
default: ${{ toJson(matrix) }}
|
||||||
|
|||||||
@@ -7,8 +7,33 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
# If not specified the Action will check in several places until it finds the CodeQL tools.
|
# If not specified the Action will check in several places until it finds the CodeQL tools.
|
||||||
languages:
|
languages:
|
||||||
description: |
|
description: >-
|
||||||
A comma-separated value of the languages to be analysed e.g. python,javascript
|
A comma-separated list of CodeQL languages to analyze.
|
||||||
|
|
||||||
|
Due to the performance benefit of parallelizing builds, we recommend specifying languages to
|
||||||
|
analyze using a matrix and providing `\$\{{ matrix.language }}` as this input.
|
||||||
|
|
||||||
|
For more information, see
|
||||||
|
https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#changing-the-languages-that-are-analyzed.
|
||||||
|
required: false
|
||||||
|
build-mode:
|
||||||
|
description: >-
|
||||||
|
The build mode that will be used to analyze the language. This input is only available when
|
||||||
|
analyzing a single CodeQL language per job, for example using a matrix.
|
||||||
|
|
||||||
|
Available build modes will differ based on the language being analyzed. One of:
|
||||||
|
|
||||||
|
- `none`: The database will be created without building the source code.
|
||||||
|
Available for all interpreted languages and some compiled languages.
|
||||||
|
- `autobuild`: The database will be created by attempting to automatically build the source
|
||||||
|
code.
|
||||||
|
To use this build mode, ensure that your workflow calls the `autobuild` action
|
||||||
|
between the `init` and `analyze` steps.
|
||||||
|
Available for all compiled languages.
|
||||||
|
- `manual`: The database will be created by building the source code using a manually
|
||||||
|
specified build command. To use this build mode, specify manual build steps in
|
||||||
|
your workflow between the `init` and `analyze` steps. Available for all
|
||||||
|
compiled languages.
|
||||||
required: false
|
required: false
|
||||||
token:
|
token:
|
||||||
description: GitHub token to use for authenticating with this instance of GitHub. To download custom packs from multiple registries, use the registries input.
|
description: GitHub token to use for authenticating with this instance of GitHub. To download custom packs from multiple registries, use the registries input.
|
||||||
@@ -53,7 +78,7 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
packs:
|
packs:
|
||||||
description: >-
|
description: >-
|
||||||
[Experimental] Comma-separated list of packs to run. Reference a pack in the format `scope/name[@version]`. If `version` is not
|
Comma-separated list of packs to run. Reference a pack in the format `scope/name[@version]`. If `version` is not
|
||||||
specified, then the latest version of the pack is used. By default, this overrides the same setting in a
|
specified, then the latest version of the pack is used. By default, this overrides the same setting in a
|
||||||
configuration file; prefix with "+" to use both sets of packs.
|
configuration file; prefix with "+" to use both sets of packs.
|
||||||
|
|
||||||
@@ -64,9 +89,8 @@ inputs:
|
|||||||
description: A token for fetching external config files and queries if they reside in a private repository in the same GitHub instance that is running this action.
|
description: A token for fetching external config files and queries if they reside in a private repository in the same GitHub instance that is running this action.
|
||||||
required: false
|
required: false
|
||||||
setup-python-dependencies:
|
setup-python-dependencies:
|
||||||
description: Try to auto-install your python dependencies
|
description: DEPRECATED. This option is ignored since CodeQL Action no longer installs Python dependencies as of versions 3.25.0 and 2.25.0.
|
||||||
required: true
|
required: false
|
||||||
default: 'true'
|
|
||||||
source-root:
|
source-root:
|
||||||
description: Path of the root source code directory, relative to $GITHUB_WORKSPACE.
|
description: Path of the root source code directory, relative to $GITHUB_WORKSPACE.
|
||||||
required: false
|
required: false
|
||||||
|
|||||||
22
lib/actions-util.js
generated
22
lib/actions-util.js
generated
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.getFileType = exports.getWorkflowRunAttempt = exports.getWorkflowRunID = exports.getUploadValue = exports.printDebugLogs = exports.isAnalyzingDefaultBranch = exports.getRelativeScriptPath = exports.isRunningLocalAction = exports.getWorkflowEventName = exports.getActionVersion = exports.getRef = exports.determineMergeBaseCommitOid = exports.getCommitOid = exports.getTemporaryDirectory = exports.getOptionalInput = exports.getRequiredInput = void 0;
|
exports.getFileType = exports.FileCmdNotFoundError = exports.getWorkflowRunAttempt = exports.getWorkflowRunID = exports.getUploadValue = exports.printDebugLogs = exports.isAnalyzingDefaultBranch = exports.getRelativeScriptPath = exports.isRunningLocalAction = exports.getWorkflowEventName = exports.getActionVersion = exports.getRef = exports.determineMergeBaseCommitOid = exports.getCommitOid = exports.getTemporaryDirectory = exports.getOptionalInput = exports.getRequiredInput = void 0;
|
||||||
const fs = __importStar(require("fs"));
|
const fs = __importStar(require("fs"));
|
||||||
const path = __importStar(require("path"));
|
const path = __importStar(require("path"));
|
||||||
const core = __importStar(require("@actions/core"));
|
const core = __importStar(require("@actions/core"));
|
||||||
@@ -41,7 +41,7 @@ const pkg = require("../package.json");
|
|||||||
const getRequiredInput = function (name) {
|
const getRequiredInput = function (name) {
|
||||||
const value = core.getInput(name);
|
const value = core.getInput(name);
|
||||||
if (!value) {
|
if (!value) {
|
||||||
throw new util_1.UserError(`Input required and not supplied: ${name}`);
|
throw new util_1.ConfigurationError(`Input required and not supplied: ${name}`);
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
};
|
};
|
||||||
@@ -177,7 +177,7 @@ async function getRef() {
|
|||||||
const hasShaInput = !!shaInput;
|
const hasShaInput = !!shaInput;
|
||||||
// If one of 'ref' or 'sha' are provided, both are required
|
// If one of 'ref' or 'sha' are provided, both are required
|
||||||
if ((hasRefInput || hasShaInput) && !(hasRefInput && hasShaInput)) {
|
if ((hasRefInput || hasShaInput) && !(hasRefInput && hasShaInput)) {
|
||||||
throw new util_1.UserError("Both 'ref' and 'sha' are required if one of them is provided.");
|
throw new util_1.ConfigurationError("Both 'ref' and 'sha' are required if one of them is provided.");
|
||||||
}
|
}
|
||||||
const ref = refInput || getRefFromEnv();
|
const ref = refInput || getRefFromEnv();
|
||||||
const sha = shaInput || (0, util_1.getRequiredEnvParam)("GITHUB_SHA");
|
const sha = shaInput || (0, util_1.getRequiredEnvParam)("GITHUB_SHA");
|
||||||
@@ -380,6 +380,13 @@ function getWorkflowRunAttempt() {
|
|||||||
return workflowRunAttempt;
|
return workflowRunAttempt;
|
||||||
}
|
}
|
||||||
exports.getWorkflowRunAttempt = getWorkflowRunAttempt;
|
exports.getWorkflowRunAttempt = getWorkflowRunAttempt;
|
||||||
|
class FileCmdNotFoundError extends Error {
|
||||||
|
constructor(msg) {
|
||||||
|
super(msg);
|
||||||
|
this.name = "FileCmdNotFoundError";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.FileCmdNotFoundError = FileCmdNotFoundError;
|
||||||
/**
|
/**
|
||||||
* Tries to obtain the output of the `file` command for the file at the specified path.
|
* Tries to obtain the output of the `file` command for the file at the specified path.
|
||||||
* The output will vary depending on the type of `file`, which operating system we are running on, etc.
|
* The output will vary depending on the type of `file`, which operating system we are running on, etc.
|
||||||
@@ -387,11 +394,18 @@ exports.getWorkflowRunAttempt = getWorkflowRunAttempt;
|
|||||||
const getFileType = async (filePath) => {
|
const getFileType = async (filePath) => {
|
||||||
let stderr = "";
|
let stderr = "";
|
||||||
let stdout = "";
|
let stdout = "";
|
||||||
|
let fileCmdPath;
|
||||||
|
try {
|
||||||
|
fileCmdPath = await safeWhich.safeWhich("file");
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
throw new FileCmdNotFoundError(`The \`file\` program is required, but does not appear to be installed. Please install it: ${e}`);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
// The `file` command will output information about the type of file pointed at by `filePath`.
|
// The `file` command will output information about the type of file pointed at by `filePath`.
|
||||||
// For binary files, this may include e.g. whether they are static of dynamic binaries.
|
// For binary files, this may include e.g. whether they are static of dynamic binaries.
|
||||||
// The `-L` switch instructs the command to follow symbolic links.
|
// The `-L` switch instructs the command to follow symbolic links.
|
||||||
await new toolrunner.ToolRunner(await safeWhich.safeWhich("file"), ["-L", filePath], {
|
await new toolrunner.ToolRunner(fileCmdPath, ["-L", filePath], {
|
||||||
silent: true,
|
silent: true,
|
||||||
listeners: {
|
listeners: {
|
||||||
stdout: (data) => {
|
stdout: (data) => {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
4
lib/actions-util.test.js
generated
4
lib/actions-util.test.js
generated
@@ -227,7 +227,9 @@ const util_1 = require("./util");
|
|||||||
const infoStub = sinon.stub(core, "info");
|
const infoStub = sinon.stub(core, "info");
|
||||||
process.env["GITHUB_EVENT_NAME"] = "pull_request";
|
process.env["GITHUB_EVENT_NAME"] = "pull_request";
|
||||||
process.env["GITHUB_SHA"] = "100912429fab4cb230e66ffb11e738ac5194e73a";
|
process.env["GITHUB_SHA"] = "100912429fab4cb230e66ffb11e738ac5194e73a";
|
||||||
await actionsUtil.determineMergeBaseCommitOid(path.join(__dirname, "../.."));
|
await (0, util_1.withTmpDir)(async (tmpDir) => {
|
||||||
|
await actionsUtil.determineMergeBaseCommitOid(tmpDir);
|
||||||
|
});
|
||||||
t.deepEqual(1, infoStub.callCount);
|
t.deepEqual(1, infoStub.callCount);
|
||||||
t.assert(infoStub.firstCall.args[0].startsWith("The checkout path provided to the action does not appear to be a git repository."));
|
t.assert(infoStub.firstCall.args[0].startsWith("The checkout path provided to the action does not appear to be a git repository."));
|
||||||
infoStub.restore();
|
infoStub.restore();
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
2
lib/analyze-action-env.test.js
generated
2
lib/analyze-action-env.test.js
generated
@@ -50,7 +50,7 @@ const util = __importStar(require("./util"));
|
|||||||
sinon
|
sinon
|
||||||
.stub(statusReport, "createStatusReportBase")
|
.stub(statusReport, "createStatusReportBase")
|
||||||
.resolves({});
|
.resolves({});
|
||||||
sinon.stub(statusReport, "sendStatusReport").resolves(true);
|
sinon.stub(statusReport, "sendStatusReport").resolves();
|
||||||
sinon.stub(actionsUtil, "isAnalyzingDefaultBranch").resolves(true);
|
sinon.stub(actionsUtil, "isAnalyzingDefaultBranch").resolves(true);
|
||||||
const gitHubVersion = {
|
const gitHubVersion = {
|
||||||
type: util.GitHubVariant.DOTCOM,
|
type: util.GitHubVariant.DOTCOM,
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"analyze-action-env.test.js","sourceRoot":"","sources":["../src/analyze-action-env.test.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"analyze-action-env.test.js","sourceRoot":"","sources":["../src/analyze-action-env.test.ts"],"names":[],"mappings":"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"}
|
||||||
2
lib/analyze-action-input.test.js
generated
2
lib/analyze-action-input.test.js
generated
@@ -50,7 +50,7 @@ const util = __importStar(require("./util"));
|
|||||||
sinon
|
sinon
|
||||||
.stub(statusReport, "createStatusReportBase")
|
.stub(statusReport, "createStatusReportBase")
|
||||||
.resolves({});
|
.resolves({});
|
||||||
sinon.stub(statusReport, "sendStatusReport").resolves(true);
|
sinon.stub(statusReport, "sendStatusReport").resolves();
|
||||||
const gitHubVersion = {
|
const gitHubVersion = {
|
||||||
type: util.GitHubVariant.DOTCOM,
|
type: util.GitHubVariant.DOTCOM,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"analyze-action-input.test.js","sourceRoot":"","sources":["../src/analyze-action-input.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAuB;AACvB,6CAA+B;AAE/B,4DAA8C;AAC9C,mDAAqC;AACrC,kDAAoC;AACpC,4DAA8C;AAC9C,8DAAgD;AAChD,mDAIyB;AACzB,6CAA+B;AAE/B,IAAA,0BAAU,EAAC,aAAI,CAAC,CAAC;AAEjB,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,iCAAiC;AAEjC,IAAA,aAAI,EAAC,sDAAsD,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACvE,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,sCAAsC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,wBAAwB,CAAC;QACzD,KAAK;aACF,IAAI,CAAC,YAAY,EAAE,wBAAwB,CAAC;aAC5C,QAAQ,CAAC,EAAmC,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAuB;YACxC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;SAChC,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC;YAC5C,aAAa;YACb,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,EAAE;SACkB,CAAC,CAAC;QACpC,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACtE,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1D,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QACtE,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnE,IAAA,gCAAgB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAA,0CAA0B,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;QAEnC,4DAA4D;QAC5D,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAElD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACzD,MAAM,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAElD,uEAAuE;QACvE,oEAAoE;QACpE,4EAA4E;QAC5E,wEAAwE;QACxE,MAAM,aAAa,CAAC,UAAU,CAAC;QAE/B,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAC/D,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QAC7D,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAC9D,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
{"version":3,"file":"analyze-action-input.test.js","sourceRoot":"","sources":["../src/analyze-action-input.test.ts"],"names":[],"mappings":"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"}
|
||||||
4
lib/analyze-action-post.js
generated
4
lib/analyze-action-post.js
generated
@@ -31,10 +31,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||||||
const core = __importStar(require("@actions/core"));
|
const core = __importStar(require("@actions/core"));
|
||||||
const analyzeActionPostHelper = __importStar(require("./analyze-action-post-helper"));
|
const analyzeActionPostHelper = __importStar(require("./analyze-action-post-helper"));
|
||||||
const debugArtifacts = __importStar(require("./debug-artifacts"));
|
const debugArtifacts = __importStar(require("./debug-artifacts"));
|
||||||
|
const uploadSarifActionPostHelper = __importStar(require("./upload-sarif-action-post-helper"));
|
||||||
const util_1 = require("./util");
|
const util_1 = require("./util");
|
||||||
async function runWrapper() {
|
async function runWrapper() {
|
||||||
try {
|
try {
|
||||||
await analyzeActionPostHelper.run(debugArtifacts.uploadSarifDebugArtifact);
|
await analyzeActionPostHelper.run(debugArtifacts.uploadSarifDebugArtifact);
|
||||||
|
// Also run the upload-sarif post action since we're potentially running
|
||||||
|
// the same steps in the analyze action.
|
||||||
|
await uploadSarifActionPostHelper.uploadArtifacts(debugArtifacts.uploadDebugArtifacts);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.setFailed(`analyze post-action step failed: ${(0, util_1.wrapError)(error).message}`);
|
core.setFailed(`analyze post-action step failed: ${(0, util_1.wrapError)(error).message}`);
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"analyze-action-post.js","sourceRoot":"","sources":["../src/analyze-action-post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,oDAAsC;AAEtC,sFAAwE;AACxE,kEAAoD;AACpD,iCAAmC;AAEnC,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,MAAM,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,CACZ,oCAAoC,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,EAAE,CAAC"}
|
{"version":3,"file":"analyze-action-post.js","sourceRoot":"","sources":["../src/analyze-action-post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,oDAAsC;AAEtC,sFAAwE;AACxE,kEAAoD;AACpD,+FAAiF;AACjF,iCAAmC;AAEnC,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,MAAM,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;QAE3E,wEAAwE;QACxE,wCAAwC;QACxC,MAAM,2BAA2B,CAAC,eAAe,CAC/C,cAAc,CAAC,oBAAoB,CACpC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,CACZ,oCAAoC,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,EAAE,CAAC"}
|
||||||
91
lib/analyze-action.js
generated
91
lib/analyze-action.js
generated
@@ -31,7 +31,6 @@ const fs = __importStar(require("fs"));
|
|||||||
const path_1 = __importDefault(require("path"));
|
const path_1 = __importDefault(require("path"));
|
||||||
const perf_hooks_1 = require("perf_hooks");
|
const perf_hooks_1 = require("perf_hooks");
|
||||||
const core = __importStar(require("@actions/core"));
|
const core = __importStar(require("@actions/core"));
|
||||||
const safe_which_1 = require("@chrisgavin/safe-which");
|
|
||||||
const actionsUtil = __importStar(require("./actions-util"));
|
const actionsUtil = __importStar(require("./actions-util"));
|
||||||
const analyze_1 = require("./analyze");
|
const analyze_1 = require("./analyze");
|
||||||
const api_client_1 = require("./api-client");
|
const api_client_1 = require("./api-client");
|
||||||
@@ -39,7 +38,6 @@ const autobuild_1 = require("./autobuild");
|
|||||||
const codeql_1 = require("./codeql");
|
const codeql_1 = require("./codeql");
|
||||||
const config_utils_1 = require("./config-utils");
|
const config_utils_1 = require("./config-utils");
|
||||||
const database_upload_1 = require("./database-upload");
|
const database_upload_1 = require("./database-upload");
|
||||||
const diagnostics_1 = require("./diagnostics");
|
|
||||||
const environment_1 = require("./environment");
|
const environment_1 = require("./environment");
|
||||||
const feature_flags_1 = require("./feature-flags");
|
const feature_flags_1 = require("./feature-flags");
|
||||||
const languages_1 = require("./languages");
|
const languages_1 = require("./languages");
|
||||||
@@ -50,25 +48,26 @@ const status_report_1 = require("./status-report");
|
|||||||
const trap_caching_1 = require("./trap-caching");
|
const trap_caching_1 = require("./trap-caching");
|
||||||
const uploadLib = __importStar(require("./upload-lib"));
|
const uploadLib = __importStar(require("./upload-lib"));
|
||||||
const util = __importStar(require("./util"));
|
const util = __importStar(require("./util"));
|
||||||
const util_1 = require("./util");
|
|
||||||
async function sendStatusReport(startedAt, config, stats, error, trapCacheUploadTime, dbCreationTimings, didUploadTrapCaches, logger) {
|
async function sendStatusReport(startedAt, config, stats, error, trapCacheUploadTime, dbCreationTimings, didUploadTrapCaches, logger) {
|
||||||
const status = (0, status_report_1.getActionsStatus)(error, stats?.analyze_failure_language);
|
const status = (0, status_report_1.getActionsStatus)(error, stats?.analyze_failure_language);
|
||||||
const statusReportBase = await (0, status_report_1.createStatusReportBase)("finish", status, startedAt, await util.checkDiskUsage(), error?.message, error?.stack);
|
const statusReportBase = await (0, status_report_1.createStatusReportBase)(status_report_1.ActionName.Analyze, status, startedAt, config, await util.checkDiskUsage(), logger, error?.message, error?.stack);
|
||||||
const report = {
|
if (statusReportBase !== undefined) {
|
||||||
...statusReportBase,
|
const report = {
|
||||||
...(stats || {}),
|
...statusReportBase,
|
||||||
...(dbCreationTimings || {}),
|
...(stats || {}),
|
||||||
};
|
...(dbCreationTimings || {}),
|
||||||
if (config && didUploadTrapCaches) {
|
|
||||||
const trapCacheUploadStatusReport = {
|
|
||||||
...report,
|
|
||||||
trap_cache_upload_duration_ms: Math.round(trapCacheUploadTime || 0),
|
|
||||||
trap_cache_upload_size_bytes: Math.round(await (0, trap_caching_1.getTotalCacheSize)(config.trapCaches, logger)),
|
|
||||||
};
|
};
|
||||||
await statusReport.sendStatusReport(trapCacheUploadStatusReport);
|
if (config && didUploadTrapCaches) {
|
||||||
}
|
const trapCacheUploadStatusReport = {
|
||||||
else {
|
...report,
|
||||||
await statusReport.sendStatusReport(report);
|
trap_cache_upload_duration_ms: Math.round(trapCacheUploadTime || 0),
|
||||||
|
trap_cache_upload_size_bytes: Math.round(await (0, trap_caching_1.getTotalCacheSize)(config.trapCaches, logger)),
|
||||||
|
};
|
||||||
|
await statusReport.sendStatusReport(trapCacheUploadStatusReport);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
await statusReport.sendStatusReport(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// `expect-error` should only be set to a non-false value by the CodeQL Action PR checks.
|
// `expect-error` should only be set to a non-false value by the CodeQL Action PR checks.
|
||||||
@@ -108,10 +107,14 @@ function doesGoExtractionOutputExist(config) {
|
|||||||
* - We approximate whether manual build steps are present by looking at
|
* - We approximate whether manual build steps are present by looking at
|
||||||
* whether any extraction output already exists for Go.
|
* whether any extraction output already exists for Go.
|
||||||
*/
|
*/
|
||||||
async function runAutobuildIfLegacyGoWorkflow(config, logger) {
|
async function runAutobuildIfLegacyGoWorkflow(config, features, logger) {
|
||||||
if (!config.languages.includes(languages_1.Language.go)) {
|
if (!config.languages.includes(languages_1.Language.go)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (config.buildMode) {
|
||||||
|
logger.debug("Skipping legacy Go autobuild since a build mode has been specified.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (process.env[environment_1.EnvVar.DID_AUTOBUILD_GOLANG] === "true") {
|
if (process.env[environment_1.EnvVar.DID_AUTOBUILD_GOLANG] === "true") {
|
||||||
logger.debug("Won't run Go autobuild since it has already been run.");
|
logger.debug("Won't run Go autobuild since it has already been run.");
|
||||||
return;
|
return;
|
||||||
@@ -131,7 +134,7 @@ async function runAutobuildIfLegacyGoWorkflow(config, logger) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
logger.debug("Running Go autobuild because extraction output (TRAP files) for Go code has not been found.");
|
logger.debug("Running Go autobuild because extraction output (TRAP files) for Go code has not been found.");
|
||||||
await (0, autobuild_1.runAutobuild)(languages_1.Language.go, config, logger);
|
await (0, autobuild_1.runAutobuild)(config, languages_1.Language.go, features, logger);
|
||||||
}
|
}
|
||||||
async function run() {
|
async function run() {
|
||||||
const startedAt = new Date();
|
const startedAt = new Date();
|
||||||
@@ -144,48 +147,29 @@ async function run() {
|
|||||||
util.initializeEnvironment(actionsUtil.getActionVersion());
|
util.initializeEnvironment(actionsUtil.getActionVersion());
|
||||||
const logger = (0, logging_1.getActionsLogger)();
|
const logger = (0, logging_1.getActionsLogger)();
|
||||||
try {
|
try {
|
||||||
if (!(await statusReport.sendStatusReport(await (0, status_report_1.createStatusReportBase)("finish", "starting", startedAt, await util.checkDiskUsage(logger))))) {
|
const statusReportBase = await (0, status_report_1.createStatusReportBase)(status_report_1.ActionName.Analyze, "starting", startedAt, config, await util.checkDiskUsage(logger), logger);
|
||||||
return;
|
if (statusReportBase !== undefined) {
|
||||||
|
await statusReport.sendStatusReport(statusReportBase);
|
||||||
}
|
}
|
||||||
config = await (0, config_utils_1.getConfig)(actionsUtil.getTemporaryDirectory(), logger);
|
config = await (0, config_utils_1.getConfig)(actionsUtil.getTemporaryDirectory(), logger);
|
||||||
if (config === undefined) {
|
if (config === undefined) {
|
||||||
throw new Error("Config file could not be found at expected location. Has the 'init' action been called?");
|
throw new Error("Config file could not be found at expected location. Has the 'init' action been called?");
|
||||||
}
|
}
|
||||||
|
const codeql = await (0, codeql_1.getCodeQL)(config.codeQLCmd);
|
||||||
if (hasBadExpectErrorInput()) {
|
if (hasBadExpectErrorInput()) {
|
||||||
throw new util.UserError("`expect-error` input parameter is for internal use only. It should only be set by codeql-action or a fork.");
|
throw new util.ConfigurationError("`expect-error` input parameter is for internal use only. It should only be set by codeql-action or a fork.");
|
||||||
}
|
}
|
||||||
const apiDetails = (0, api_client_1.getApiDetails)();
|
const apiDetails = (0, api_client_1.getApiDetails)();
|
||||||
const outputDir = actionsUtil.getRequiredInput("output");
|
const outputDir = actionsUtil.getRequiredInput("output");
|
||||||
const threads = util.getThreadsFlag(actionsUtil.getOptionalInput("threads") || process.env["CODEQL_THREADS"], logger);
|
const threads = util.getThreadsFlag(actionsUtil.getOptionalInput("threads") || process.env["CODEQL_THREADS"], logger);
|
||||||
const repositoryNwo = (0, repository_1.parseRepositoryNwo)(util.getRequiredEnvParam("GITHUB_REPOSITORY"));
|
const repositoryNwo = (0, repository_1.parseRepositoryNwo)(util.getRequiredEnvParam("GITHUB_REPOSITORY"));
|
||||||
const gitHubVersion = await (0, api_client_1.getGitHubVersion)();
|
const gitHubVersion = await (0, api_client_1.getGitHubVersion)();
|
||||||
|
util.checkActionVersion(actionsUtil.getActionVersion(), gitHubVersion);
|
||||||
const features = new feature_flags_1.Features(gitHubVersion, repositoryNwo, actionsUtil.getTemporaryDirectory(), logger);
|
const features = new feature_flags_1.Features(gitHubVersion, repositoryNwo, actionsUtil.getTemporaryDirectory(), logger);
|
||||||
const memory = util.getMemoryFlag(actionsUtil.getOptionalInput("ram") || process.env["CODEQL_RAM"], logger);
|
const memory = util.getMemoryFlag(actionsUtil.getOptionalInput("ram") || process.env["CODEQL_RAM"], logger);
|
||||||
// Check that `which go` still points at the same path it did when the `init` Action ran to ensure that no steps
|
await (0, analyze_1.warnIfGoInstalledAfterInit)(config, logger);
|
||||||
// in-between performed any setup. We encourage users to perform all setup tasks before initializing CodeQL so that
|
await runAutobuildIfLegacyGoWorkflow(config, features, logger);
|
||||||
// the setup tasks do not interfere with our analysis.
|
dbCreationTimings = await (0, analyze_1.runFinalize)(outputDir, threads, memory, codeql, config, features, logger);
|
||||||
// Furthermore, if we installed a wrapper script in the `init` Action, we need to ensure that there isn't a step
|
|
||||||
// in the workflow after the `init` step which installs a different version of Go and takes precedence in the PATH,
|
|
||||||
// thus potentially circumventing our workaround that allows tracing to work.
|
|
||||||
const goInitPath = process.env[environment_1.EnvVar.GO_BINARY_LOCATION];
|
|
||||||
if (process.env[environment_1.EnvVar.DID_AUTOBUILD_GOLANG] !== "true" &&
|
|
||||||
goInitPath !== undefined) {
|
|
||||||
const goBinaryPath = await (0, safe_which_1.safeWhich)("go");
|
|
||||||
if (goInitPath !== goBinaryPath) {
|
|
||||||
core.warning(`Expected \`which go\` to return ${goInitPath}, but got ${goBinaryPath}: please ensure that the correct version of Go is installed before the \`codeql-action/init\` Action is used.`);
|
|
||||||
(0, diagnostics_1.addDiagnostic)(config, languages_1.Language.go, (0, diagnostics_1.makeDiagnostic)("go/workflow/go-installed-after-codeql-init", "Go was installed after the `codeql-action/init` Action was run", {
|
|
||||||
markdownMessage: "To avoid interfering with the CodeQL analysis, perform all installation steps before calling the `github/codeql-action/init` Action.",
|
|
||||||
visibility: {
|
|
||||||
statusPage: true,
|
|
||||||
telemetry: true,
|
|
||||||
cliSummaryTable: true,
|
|
||||||
},
|
|
||||||
severity: "warning",
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
await runAutobuildIfLegacyGoWorkflow(config, logger);
|
|
||||||
dbCreationTimings = await (0, analyze_1.runFinalize)(outputDir, threads, memory, config, logger, features);
|
|
||||||
if (actionsUtil.getRequiredInput("skip-queries") !== "true") {
|
if (actionsUtil.getRequiredInput("skip-queries") !== "true") {
|
||||||
runStats = await (0, analyze_1.runQueries)(outputDir, memory, util.getAddSnippetsFlag(actionsUtil.getRequiredInput("add-snippets")), threads, actionsUtil.getOptionalInput("category"), config, logger, features);
|
runStats = await (0, analyze_1.runQueries)(outputDir, memory, util.getAddSnippetsFlag(actionsUtil.getRequiredInput("add-snippets")), threads, actionsUtil.getOptionalInput("category"), config, logger, features);
|
||||||
}
|
}
|
||||||
@@ -200,7 +184,7 @@ async function run() {
|
|||||||
core.setOutput("sarif-output", path_1.default.resolve(outputDir));
|
core.setOutput("sarif-output", path_1.default.resolve(outputDir));
|
||||||
const uploadInput = actionsUtil.getOptionalInput("upload");
|
const uploadInput = actionsUtil.getOptionalInput("upload");
|
||||||
if (runStats && actionsUtil.getUploadValue(uploadInput) === "always") {
|
if (runStats && actionsUtil.getUploadValue(uploadInput) === "always") {
|
||||||
uploadResult = await uploadLib.uploadFromActions(outputDir, actionsUtil.getRequiredInput("checkout_path"), actionsUtil.getOptionalInput("category"), logger, { considerInvalidRequestUserError: false });
|
uploadResult = await uploadLib.uploadFromActions(outputDir, actionsUtil.getRequiredInput("checkout_path"), actionsUtil.getOptionalInput("category"), logger);
|
||||||
core.setOutput("sarif-id", uploadResult.sarifID);
|
core.setOutput("sarif-id", uploadResult.sarifID);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -210,12 +194,11 @@ async function run() {
|
|||||||
await (0, database_upload_1.uploadDatabases)(repositoryNwo, config, apiDetails, logger);
|
await (0, database_upload_1.uploadDatabases)(repositoryNwo, config, apiDetails, logger);
|
||||||
// Possibly upload the TRAP caches for later re-use
|
// Possibly upload the TRAP caches for later re-use
|
||||||
const trapCacheUploadStartTime = perf_hooks_1.performance.now();
|
const trapCacheUploadStartTime = perf_hooks_1.performance.now();
|
||||||
const codeql = await (0, codeql_1.getCodeQL)(config.codeQLCmd);
|
|
||||||
didUploadTrapCaches = await (0, trap_caching_1.uploadTrapCaches)(codeql, config, logger);
|
didUploadTrapCaches = await (0, trap_caching_1.uploadTrapCaches)(codeql, config, logger);
|
||||||
trapCacheUploadTime = perf_hooks_1.performance.now() - trapCacheUploadStartTime;
|
trapCacheUploadTime = perf_hooks_1.performance.now() - trapCacheUploadStartTime;
|
||||||
// We don't upload results in test mode, so don't wait for processing
|
// We don't upload results in test mode, so don't wait for processing
|
||||||
if (util.isInTestMode()) {
|
if (util.isInTestMode()) {
|
||||||
core.debug("In test mode. Waiting for processing is disabled.");
|
logger.debug("In test mode. Waiting for processing is disabled.");
|
||||||
}
|
}
|
||||||
else if (uploadResult !== undefined &&
|
else if (uploadResult !== undefined &&
|
||||||
actionsUtil.getRequiredInput("wait-for-processing") === "true") {
|
actionsUtil.getRequiredInput("wait-for-processing") === "true") {
|
||||||
@@ -228,7 +211,7 @@ async function run() {
|
|||||||
core.exportVariable(environment_1.EnvVar.ANALYZE_DID_COMPLETE_SUCCESSFULLY, "true");
|
core.exportVariable(environment_1.EnvVar.ANALYZE_DID_COMPLETE_SUCCESSFULLY, "true");
|
||||||
}
|
}
|
||||||
catch (unwrappedError) {
|
catch (unwrappedError) {
|
||||||
const error = (0, util_1.wrapError)(unwrappedError);
|
const error = util.wrapError(unwrappedError);
|
||||||
if (actionsUtil.getOptionalInput("expect-error") !== "true" ||
|
if (actionsUtil.getOptionalInput("expect-error") !== "true" ||
|
||||||
hasBadExpectErrorInput()) {
|
hasBadExpectErrorInput()) {
|
||||||
core.setFailed(error.message);
|
core.setFailed(error.message);
|
||||||
@@ -261,9 +244,9 @@ async function runWrapper() {
|
|||||||
await exports.runPromise;
|
await exports.runPromise;
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.setFailed(`analyze action failed: ${(0, util_1.wrapError)(error).message}`);
|
core.setFailed(`analyze action failed: ${util.wrapError(error).message}`);
|
||||||
}
|
}
|
||||||
await (0, util_1.checkForTimeout)();
|
await util.checkForTimeout();
|
||||||
}
|
}
|
||||||
void runWrapper();
|
void runWrapper();
|
||||||
//# sourceMappingURL=analyze-action.js.map
|
//# sourceMappingURL=analyze-action.js.map
|
||||||
File diff suppressed because one or more lines are too long
107
lib/analyze.js
generated
107
lib/analyze.js
generated
@@ -26,19 +26,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.runCleanup = exports.runFinalize = exports.runQueries = exports.dbIsFinalized = exports.createdDBForScannedLanguages = exports.CodeQLAnalysisError = void 0;
|
exports.runCleanup = exports.warnIfGoInstalledAfterInit = exports.runFinalize = exports.runQueries = exports.dbIsFinalized = exports.runExtraction = exports.CodeQLAnalysisError = void 0;
|
||||||
const fs = __importStar(require("fs"));
|
const fs = __importStar(require("fs"));
|
||||||
const path = __importStar(require("path"));
|
const path = __importStar(require("path"));
|
||||||
const perf_hooks_1 = require("perf_hooks");
|
const perf_hooks_1 = require("perf_hooks");
|
||||||
const toolrunner = __importStar(require("@actions/exec/lib/toolrunner"));
|
const safe_which_1 = require("@chrisgavin/safe-which");
|
||||||
const del_1 = __importDefault(require("del"));
|
const del_1 = __importDefault(require("del"));
|
||||||
const yaml = __importStar(require("js-yaml"));
|
const yaml = __importStar(require("js-yaml"));
|
||||||
|
const autobuild_1 = require("./autobuild");
|
||||||
const codeql_1 = require("./codeql");
|
const codeql_1 = require("./codeql");
|
||||||
|
const diagnostics_1 = require("./diagnostics");
|
||||||
|
const environment_1 = require("./environment");
|
||||||
const feature_flags_1 = require("./feature-flags");
|
const feature_flags_1 = require("./feature-flags");
|
||||||
const languages_1 = require("./languages");
|
const languages_1 = require("./languages");
|
||||||
|
const tools_features_1 = require("./tools-features");
|
||||||
const tracer_config_1 = require("./tracer-config");
|
const tracer_config_1 = require("./tracer-config");
|
||||||
const upload_lib_1 = require("./upload-lib");
|
const upload_lib_1 = require("./upload-lib");
|
||||||
const util = __importStar(require("./util"));
|
const util = __importStar(require("./util"));
|
||||||
|
const util_1 = require("./util");
|
||||||
class CodeQLAnalysisError extends Error {
|
class CodeQLAnalysisError extends Error {
|
||||||
constructor(queriesStatusReport, message) {
|
constructor(queriesStatusReport, message) {
|
||||||
super(message);
|
super(message);
|
||||||
@@ -47,48 +52,49 @@ class CodeQLAnalysisError extends Error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.CodeQLAnalysisError = CodeQLAnalysisError;
|
exports.CodeQLAnalysisError = CodeQLAnalysisError;
|
||||||
async function setupPythonExtractor(logger, features, codeql) {
|
async function setupPythonExtractor(logger) {
|
||||||
const codeqlPython = process.env["CODEQL_PYTHON"];
|
const codeqlPython = process.env["CODEQL_PYTHON"];
|
||||||
if (codeqlPython === undefined || codeqlPython.length === 0) {
|
if (codeqlPython === undefined || codeqlPython.length === 0) {
|
||||||
// If CODEQL_PYTHON is not set, no dependencies were installed, so we don't need to do anything
|
// If CODEQL_PYTHON is not set, no dependencies were installed, so we don't need to do anything
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (await (0, feature_flags_1.isPythonDependencyInstallationDisabled)(codeql, features)) {
|
logger.warning("The CODEQL_PYTHON environment variable is no longer supported. Please remove it from your workflow. This environment variable was originally used to specify a Python executable that included the dependencies of your Python code, however Python analysis no longer uses these dependencies." +
|
||||||
logger.warning("We recommend that you remove the CODEQL_PYTHON environment variable from your workflow. This environment variable was originally used to specify a Python executable that included the dependencies of your Python code, however Python analysis no longer uses these dependencies." +
|
"\nIf you used CODEQL_PYTHON to force the version of Python to analyze as, please use CODEQL_EXTRACTOR_PYTHON_ANALYSIS_VERSION instead, such as 'CODEQL_EXTRACTOR_PYTHON_ANALYSIS_VERSION=2.7' or 'CODEQL_EXTRACTOR_PYTHON_ANALYSIS_VERSION=3.11'.");
|
||||||
"\nIf you used CODEQL_PYTHON to force the version of Python to analyze as, please use CODEQL_EXTRACTOR_PYTHON_ANALYSIS_VERSION instead, such as 'CODEQL_EXTRACTOR_PYTHON_ANALYSIS_VERSION=2.7' or 'CODEQL_EXTRACTOR_PYTHON_ANALYSIS_VERSION=3.11'.");
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
const scriptsFolder = path.resolve(__dirname, "../python-setup");
|
|
||||||
let output = "";
|
|
||||||
const options = {
|
|
||||||
listeners: {
|
|
||||||
stdout: (data) => {
|
|
||||||
output += data.toString();
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
await new toolrunner.ToolRunner(codeqlPython, [path.join(scriptsFolder, "find_site_packages.py")], options).exec();
|
|
||||||
logger.info(`Setting LGTM_INDEX_IMPORT_PATH=${output}`);
|
|
||||||
process.env["LGTM_INDEX_IMPORT_PATH"] = output;
|
|
||||||
output = "";
|
|
||||||
await new toolrunner.ToolRunner(codeqlPython, ["-c", "import sys; print(sys.version_info[0])"], options).exec();
|
|
||||||
logger.info(`Setting LGTM_PYTHON_SETUP_VERSION=${output}`);
|
|
||||||
process.env["LGTM_PYTHON_SETUP_VERSION"] = output;
|
|
||||||
}
|
}
|
||||||
async function createdDBForScannedLanguages(codeql, config, logger, features) {
|
async function runExtraction(codeql, config, logger) {
|
||||||
for (const language of config.languages) {
|
for (const language of config.languages) {
|
||||||
if ((0, languages_1.isScannedLanguage)(language) &&
|
if (dbIsFinalized(config, language, logger)) {
|
||||||
!dbIsFinalized(config, language, logger)) {
|
logger.debug(`Database for ${language} has already been finalized, skipping extraction.`);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (shouldExtractLanguage(config, language)) {
|
||||||
logger.startGroup(`Extracting ${language}`);
|
logger.startGroup(`Extracting ${language}`);
|
||||||
if (language === languages_1.Language.python) {
|
if (language === languages_1.Language.python) {
|
||||||
await setupPythonExtractor(logger, features, codeql);
|
await setupPythonExtractor(logger);
|
||||||
|
}
|
||||||
|
if (config.buildMode &&
|
||||||
|
(await codeql.supportsFeature(tools_features_1.ToolsFeature.TraceCommandUseBuildMode))) {
|
||||||
|
if (language === languages_1.Language.cpp &&
|
||||||
|
config.buildMode === util_1.BuildMode.Autobuild) {
|
||||||
|
await (0, autobuild_1.setupCppAutobuild)(codeql, logger);
|
||||||
|
}
|
||||||
|
await codeql.extractUsingBuildMode(config, language);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
await codeql.extractScannedLanguage(config, language);
|
||||||
}
|
}
|
||||||
await codeql.extractScannedLanguage(config, language);
|
|
||||||
logger.endGroup();
|
logger.endGroup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.createdDBForScannedLanguages = createdDBForScannedLanguages;
|
exports.runExtraction = runExtraction;
|
||||||
|
function shouldExtractLanguage(config, language) {
|
||||||
|
return (config.buildMode === util_1.BuildMode.None ||
|
||||||
|
(config.buildMode === util_1.BuildMode.Autobuild &&
|
||||||
|
process.env[environment_1.EnvVar.AUTOBUILD_DID_COMPLETE_SUCCESSFULLY] !== "true") ||
|
||||||
|
(!config.buildMode && (0, languages_1.isScannedLanguage)(language)));
|
||||||
|
}
|
||||||
function dbIsFinalized(config, language, logger) {
|
function dbIsFinalized(config, language, logger) {
|
||||||
const dbPath = util.getCodeQLDatabasePath(config, language);
|
const dbPath = util.getCodeQLDatabasePath(config, language);
|
||||||
try {
|
try {
|
||||||
@@ -101,10 +107,9 @@ function dbIsFinalized(config, language, logger) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.dbIsFinalized = dbIsFinalized;
|
exports.dbIsFinalized = dbIsFinalized;
|
||||||
async function finalizeDatabaseCreation(config, threadsFlag, memoryFlag, logger, features) {
|
async function finalizeDatabaseCreation(codeql, config, threadsFlag, memoryFlag, logger) {
|
||||||
const codeql = await (0, codeql_1.getCodeQL)(config.codeQLCmd);
|
|
||||||
const extractionStart = perf_hooks_1.performance.now();
|
const extractionStart = perf_hooks_1.performance.now();
|
||||||
await createdDBForScannedLanguages(codeql, config, logger, features);
|
await runExtraction(codeql, config, logger);
|
||||||
const extractionTime = perf_hooks_1.performance.now() - extractionStart;
|
const extractionTime = perf_hooks_1.performance.now() - extractionStart;
|
||||||
const trapImportStart = perf_hooks_1.performance.now();
|
const trapImportStart = perf_hooks_1.performance.now();
|
||||||
for (const language of config.languages) {
|
for (const language of config.languages) {
|
||||||
@@ -113,7 +118,7 @@ async function finalizeDatabaseCreation(config, threadsFlag, memoryFlag, logger,
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
logger.startGroup(`Finalizing ${language}`);
|
logger.startGroup(`Finalizing ${language}`);
|
||||||
await codeql.finalizeDatabase(util.getCodeQLDatabasePath(config, language), threadsFlag, memoryFlag);
|
await codeql.finalizeDatabase(util.getCodeQLDatabasePath(config, language), threadsFlag, memoryFlag, config.debugMode);
|
||||||
logger.endGroup();
|
logger.endGroup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -138,7 +143,7 @@ async function runQueries(sarifFolder, memoryFlag, addSnippetsFlag, threadsFlag,
|
|||||||
logger.startGroup(`Running queries for ${language}`);
|
logger.startGroup(`Running queries for ${language}`);
|
||||||
const startTimeRunQueries = new Date().getTime();
|
const startTimeRunQueries = new Date().getTime();
|
||||||
const databasePath = util.getCodeQLDatabasePath(config, language);
|
const databasePath = util.getCodeQLDatabasePath(config, language);
|
||||||
await codeql.databaseRunQueries(databasePath, queryFlags, features);
|
await codeql.databaseRunQueries(databasePath, queryFlags);
|
||||||
logger.debug(`Finished running queries for ${language}.`);
|
logger.debug(`Finished running queries for ${language}.`);
|
||||||
// TODO should not be using `builtin` here. We should be using `all` instead.
|
// TODO should not be using `builtin` here. We should be using `all` instead.
|
||||||
// The status report does not support `all` yet.
|
// The status report does not support `all` yet.
|
||||||
@@ -209,7 +214,7 @@ async function runQueries(sarifFolder, memoryFlag, addSnippetsFlag, threadsFlag,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.runQueries = runQueries;
|
exports.runQueries = runQueries;
|
||||||
async function runFinalize(outputDir, threadsFlag, memoryFlag, config, logger, features) {
|
async function runFinalize(outputDir, threadsFlag, memoryFlag, codeql, config, features, logger) {
|
||||||
try {
|
try {
|
||||||
await (0, del_1.default)(outputDir, { force: true });
|
await (0, del_1.default)(outputDir, { force: true });
|
||||||
}
|
}
|
||||||
@@ -219,17 +224,43 @@ async function runFinalize(outputDir, threadsFlag, memoryFlag, config, logger, f
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
await fs.promises.mkdir(outputDir, { recursive: true });
|
await fs.promises.mkdir(outputDir, { recursive: true });
|
||||||
const timings = await finalizeDatabaseCreation(config, threadsFlag, memoryFlag, logger, features);
|
const timings = await finalizeDatabaseCreation(codeql, config, threadsFlag, memoryFlag, logger);
|
||||||
// WARNING: This does not _really_ end tracing, as the tracer will restore its
|
// WARNING: This does not _really_ end tracing, as the tracer will restore its
|
||||||
// critical environment variables and it'll still be active for all processes
|
// critical environment variables and it'll still be active for all processes
|
||||||
// launched from this build step.
|
// launched from this build step.
|
||||||
// However, it will stop tracing for all steps past the codeql-action/analyze
|
// However, it will stop tracing for all steps past the codeql-action/analyze
|
||||||
// step.
|
// step.
|
||||||
// Delete variables as specified by the end-tracing script
|
// Delete variables as specified by the end-tracing script
|
||||||
await (0, tracer_config_1.endTracingForCluster)(config);
|
await (0, tracer_config_1.endTracingForCluster)(codeql, config, features);
|
||||||
return timings;
|
return timings;
|
||||||
}
|
}
|
||||||
exports.runFinalize = runFinalize;
|
exports.runFinalize = runFinalize;
|
||||||
|
async function warnIfGoInstalledAfterInit(config, logger) {
|
||||||
|
// Check that `which go` still points at the same path it did when the `init` Action ran to ensure that no steps
|
||||||
|
// in-between performed any setup. We encourage users to perform all setup tasks before initializing CodeQL so that
|
||||||
|
// the setup tasks do not interfere with our analysis.
|
||||||
|
// Furthermore, if we installed a wrapper script in the `init` Action, we need to ensure that there isn't a step
|
||||||
|
// in the workflow after the `init` step which installs a different version of Go and takes precedence in the PATH,
|
||||||
|
// thus potentially circumventing our workaround that allows tracing to work.
|
||||||
|
const goInitPath = process.env[environment_1.EnvVar.GO_BINARY_LOCATION];
|
||||||
|
if (process.env[environment_1.EnvVar.DID_AUTOBUILD_GOLANG] !== "true" &&
|
||||||
|
goInitPath !== undefined) {
|
||||||
|
const goBinaryPath = await (0, safe_which_1.safeWhich)("go");
|
||||||
|
if (goInitPath !== goBinaryPath) {
|
||||||
|
logger.warning(`Expected \`which go\` to return ${goInitPath}, but got ${goBinaryPath}: please ensure that the correct version of Go is installed before the \`codeql-action/init\` Action is used.`);
|
||||||
|
(0, diagnostics_1.addDiagnostic)(config, languages_1.Language.go, (0, diagnostics_1.makeDiagnostic)("go/workflow/go-installed-after-codeql-init", "Go was installed after the `codeql-action/init` Action was run", {
|
||||||
|
markdownMessage: "To avoid interfering with the CodeQL analysis, perform all installation steps before calling the `github/codeql-action/init` Action.",
|
||||||
|
visibility: {
|
||||||
|
statusPage: true,
|
||||||
|
telemetry: true,
|
||||||
|
cliSummaryTable: true,
|
||||||
|
},
|
||||||
|
severity: "warning",
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.warnIfGoInstalledAfterInit = warnIfGoInstalledAfterInit;
|
||||||
async function runCleanup(config, cleanupLevel, logger) {
|
async function runCleanup(config, cleanupLevel, logger) {
|
||||||
logger.startGroup("Cleaning up databases");
|
logger.startGroup("Cleaning up databases");
|
||||||
for (const language of config.languages) {
|
for (const language of config.languages) {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
18
lib/analyze.test.js
generated
18
lib/analyze.test.js
generated
@@ -95,25 +95,11 @@ const util = __importStar(require("./util"));
|
|||||||
},
|
},
|
||||||
databasePrintBaseline: async () => "",
|
databasePrintBaseline: async () => "",
|
||||||
});
|
});
|
||||||
const config = {
|
const config = (0, testing_utils_1.createTestConfig)({
|
||||||
languages: [language],
|
languages: [language],
|
||||||
originalUserInput: {},
|
|
||||||
tempDir: tmpDir,
|
tempDir: tmpDir,
|
||||||
codeQLCmd: "",
|
|
||||||
gitHubVersion: {
|
|
||||||
type: util.GitHubVariant.DOTCOM,
|
|
||||||
},
|
|
||||||
dbLocation: path.resolve(tmpDir, "codeql_databases"),
|
dbLocation: path.resolve(tmpDir, "codeql_databases"),
|
||||||
debugMode: false,
|
});
|
||||||
debugArtifactName: util.DEFAULT_DEBUG_ARTIFACT_NAME,
|
|
||||||
debugDatabaseName: util.DEFAULT_DEBUG_DATABASE_NAME,
|
|
||||||
augmentationProperties: {
|
|
||||||
packsInputCombines: false,
|
|
||||||
queriesInputCombines: false,
|
|
||||||
},
|
|
||||||
trapCaches: {},
|
|
||||||
trapCacheDownloadTime: 0,
|
|
||||||
};
|
|
||||||
fs.mkdirSync(util.getCodeQLDatabasePath(config, language), {
|
fs.mkdirSync(util.getCodeQLDatabasePath(config, language), {
|
||||||
recursive: true,
|
recursive: true,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"analyze.test.js","sourceRoot":"","sources":["../src/analyze.test.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"analyze.test.js","sourceRoot":"","sources":["../src/analyze.test.ts"],"names":[],"mappings":"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"}
|
||||||
13
lib/api-client.js
generated
13
lib/api-client.js
generated
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.computeAutomationID = exports.getAutomationID = exports.getAnalysisKey = exports.getWorkflowRelativePath = exports.getGitHubVersion = exports.getGitHubVersionFromApi = exports.getApiClientWithExternalAuth = exports.getApiClient = exports.getApiDetails = exports.DisallowedAPIVersionReason = void 0;
|
exports.wrapApiConfigurationError = exports.computeAutomationID = exports.getAutomationID = exports.getAnalysisKey = exports.getWorkflowRelativePath = exports.getGitHubVersion = exports.getGitHubVersionFromApi = exports.getApiClientWithExternalAuth = exports.getApiClient = exports.getApiDetails = exports.DisallowedAPIVersionReason = void 0;
|
||||||
const core = __importStar(require("@actions/core"));
|
const core = __importStar(require("@actions/core"));
|
||||||
const githubUtils = __importStar(require("@actions/github/lib/utils"));
|
const githubUtils = __importStar(require("@actions/github/lib/utils"));
|
||||||
const retry = __importStar(require("@octokit/plugin-retry"));
|
const retry = __importStar(require("@octokit/plugin-retry"));
|
||||||
@@ -163,4 +163,15 @@ function computeAutomationID(analysis_key, environment) {
|
|||||||
return automationID;
|
return automationID;
|
||||||
}
|
}
|
||||||
exports.computeAutomationID = computeAutomationID;
|
exports.computeAutomationID = computeAutomationID;
|
||||||
|
function wrapApiConfigurationError(e) {
|
||||||
|
if ((0, util_1.isHTTPError)(e)) {
|
||||||
|
if (e.message.includes("API rate limit exceeded for site ID installation") ||
|
||||||
|
e.message.includes("commit not found") ||
|
||||||
|
/^ref .* not found in this repository$/.test(e.message)) {
|
||||||
|
return new util_1.ConfigurationError(e.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
exports.wrapApiConfigurationError = wrapApiConfigurationError;
|
||||||
//# sourceMappingURL=api-client.js.map
|
//# sourceMappingURL=api-client.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
||||||
@@ -1 +1 @@
|
|||||||
{ "maximumVersion": "3.12", "minimumVersion": "3.8" }
|
{ "maximumVersion": "3.13", "minimumVersion": "3.9" }
|
||||||
|
|||||||
49
lib/autobuild-action.js
generated
49
lib/autobuild-action.js
generated
@@ -27,37 +27,49 @@ const core = __importStar(require("@actions/core"));
|
|||||||
const actions_util_1 = require("./actions-util");
|
const actions_util_1 = require("./actions-util");
|
||||||
const api_client_1 = require("./api-client");
|
const api_client_1 = require("./api-client");
|
||||||
const autobuild_1 = require("./autobuild");
|
const autobuild_1 = require("./autobuild");
|
||||||
const configUtils = __importStar(require("./config-utils"));
|
const codeql_1 = require("./codeql");
|
||||||
|
const config_utils_1 = require("./config-utils");
|
||||||
|
const environment_1 = require("./environment");
|
||||||
|
const feature_flags_1 = require("./feature-flags");
|
||||||
const logging_1 = require("./logging");
|
const logging_1 = require("./logging");
|
||||||
|
const repository_1 = require("./repository");
|
||||||
const status_report_1 = require("./status-report");
|
const status_report_1 = require("./status-report");
|
||||||
const util_1 = require("./util");
|
const util_1 = require("./util");
|
||||||
async function sendCompletedStatusReport(logger, startedAt, allLanguages, failingLanguage, cause) {
|
async function sendCompletedStatusReport(config, logger, startedAt, allLanguages, failingLanguage, cause) {
|
||||||
(0, util_1.initializeEnvironment)((0, actions_util_1.getActionVersion)());
|
(0, util_1.initializeEnvironment)((0, actions_util_1.getActionVersion)());
|
||||||
const status = (0, status_report_1.getActionsStatus)(cause, failingLanguage);
|
const status = (0, status_report_1.getActionsStatus)(cause, failingLanguage);
|
||||||
const statusReportBase = await (0, status_report_1.createStatusReportBase)("autobuild", status, startedAt, await (0, util_1.checkDiskUsage)(logger), cause?.message, cause?.stack);
|
const statusReportBase = await (0, status_report_1.createStatusReportBase)(status_report_1.ActionName.Autobuild, status, startedAt, config, await (0, util_1.checkDiskUsage)(logger), logger, cause?.message, cause?.stack);
|
||||||
const statusReport = {
|
if (statusReportBase !== undefined) {
|
||||||
...statusReportBase,
|
const statusReport = {
|
||||||
autobuild_languages: allLanguages.join(","),
|
...statusReportBase,
|
||||||
autobuild_failure: failingLanguage,
|
autobuild_languages: allLanguages.join(","),
|
||||||
};
|
autobuild_failure: failingLanguage,
|
||||||
await (0, status_report_1.sendStatusReport)(statusReport);
|
};
|
||||||
|
await (0, status_report_1.sendStatusReport)(statusReport);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
async function run() {
|
async function run() {
|
||||||
const startedAt = new Date();
|
const startedAt = new Date();
|
||||||
const logger = (0, logging_1.getActionsLogger)();
|
const logger = (0, logging_1.getActionsLogger)();
|
||||||
let currentLanguage = undefined;
|
let config;
|
||||||
let languages = undefined;
|
let currentLanguage;
|
||||||
|
let languages;
|
||||||
try {
|
try {
|
||||||
if (!(await (0, status_report_1.sendStatusReport)(await (0, status_report_1.createStatusReportBase)("autobuild", "starting", startedAt, await (0, util_1.checkDiskUsage)(logger))))) {
|
const statusReportBase = await (0, status_report_1.createStatusReportBase)(status_report_1.ActionName.Autobuild, "starting", startedAt, config, await (0, util_1.checkDiskUsage)(logger), logger);
|
||||||
return;
|
if (statusReportBase !== undefined) {
|
||||||
|
await (0, status_report_1.sendStatusReport)(statusReportBase);
|
||||||
}
|
}
|
||||||
const gitHubVersion = await (0, api_client_1.getGitHubVersion)();
|
const gitHubVersion = await (0, api_client_1.getGitHubVersion)();
|
||||||
(0, util_1.checkGitHubVersionInRange)(gitHubVersion, logger);
|
(0, util_1.checkGitHubVersionInRange)(gitHubVersion, logger);
|
||||||
const config = await configUtils.getConfig((0, actions_util_1.getTemporaryDirectory)(), logger);
|
(0, util_1.checkActionVersion)((0, actions_util_1.getActionVersion)(), gitHubVersion);
|
||||||
|
const repositoryNwo = (0, repository_1.parseRepositoryNwo)((0, util_1.getRequiredEnvParam)("GITHUB_REPOSITORY"));
|
||||||
|
const features = new feature_flags_1.Features(gitHubVersion, repositoryNwo, (0, actions_util_1.getTemporaryDirectory)(), logger);
|
||||||
|
config = await (0, config_utils_1.getConfig)((0, actions_util_1.getTemporaryDirectory)(), logger);
|
||||||
if (config === undefined) {
|
if (config === undefined) {
|
||||||
throw new Error("Config file could not be found at expected location. Has the 'init' action been called?");
|
throw new Error("Config file could not be found at expected location. Has the 'init' action been called?");
|
||||||
}
|
}
|
||||||
languages = await (0, autobuild_1.determineAutobuildLanguages)(config, logger);
|
const codeql = await (0, codeql_1.getCodeQL)(config.codeQLCmd);
|
||||||
|
languages = await (0, autobuild_1.determineAutobuildLanguages)(codeql, config, logger);
|
||||||
if (languages !== undefined) {
|
if (languages !== undefined) {
|
||||||
const workingDirectory = (0, actions_util_1.getOptionalInput)("working-directory");
|
const workingDirectory = (0, actions_util_1.getOptionalInput)("working-directory");
|
||||||
if (workingDirectory) {
|
if (workingDirectory) {
|
||||||
@@ -66,17 +78,18 @@ async function run() {
|
|||||||
}
|
}
|
||||||
for (const language of languages) {
|
for (const language of languages) {
|
||||||
currentLanguage = language;
|
currentLanguage = language;
|
||||||
await (0, autobuild_1.runAutobuild)(language, config, logger);
|
await (0, autobuild_1.runAutobuild)(config, language, features, logger);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (unwrappedError) {
|
catch (unwrappedError) {
|
||||||
const error = (0, util_1.wrapError)(unwrappedError);
|
const error = (0, util_1.wrapError)(unwrappedError);
|
||||||
core.setFailed(`We were unable to automatically build your code. Please replace the call to the autobuild action with your custom build steps. ${error.message}`);
|
core.setFailed(`We were unable to automatically build your code. Please replace the call to the autobuild action with your custom build steps. ${error.message}`);
|
||||||
await sendCompletedStatusReport(logger, startedAt, languages ?? [], currentLanguage, error);
|
await sendCompletedStatusReport(config, logger, startedAt, languages ?? [], currentLanguage, error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await sendCompletedStatusReport(logger, startedAt, languages ?? []);
|
core.exportVariable(environment_1.EnvVar.AUTOBUILD_DID_COMPLETE_SUCCESSFULLY, "true");
|
||||||
|
await sendCompletedStatusReport(config, logger, startedAt, languages ?? []);
|
||||||
}
|
}
|
||||||
async function runWrapper() {
|
async function runWrapper() {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"autobuild-action.js","sourceRoot":"","sources":["../src/autobuild-action.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"autobuild-action.js","sourceRoot":"","sources":["../src/autobuild-action.ts"],"names":[],"mappings":"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"}
|
||||||
22
lib/autobuild.js
generated
22
lib/autobuild.js
generated
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.runAutobuild = exports.determineAutobuildLanguages = void 0;
|
exports.runAutobuild = exports.setupCppAutobuild = exports.determineAutobuildLanguages = void 0;
|
||||||
const core = __importStar(require("@actions/core"));
|
const core = __importStar(require("@actions/core"));
|
||||||
const actions_util_1 = require("./actions-util");
|
const actions_util_1 = require("./actions-util");
|
||||||
const api_client_1 = require("./api-client");
|
const api_client_1 = require("./api-client");
|
||||||
@@ -32,8 +32,15 @@ const environment_1 = require("./environment");
|
|||||||
const feature_flags_1 = require("./feature-flags");
|
const feature_flags_1 = require("./feature-flags");
|
||||||
const languages_1 = require("./languages");
|
const languages_1 = require("./languages");
|
||||||
const repository_1 = require("./repository");
|
const repository_1 = require("./repository");
|
||||||
|
const tools_features_1 = require("./tools-features");
|
||||||
const util_1 = require("./util");
|
const util_1 = require("./util");
|
||||||
async function determineAutobuildLanguages(config, logger) {
|
async function determineAutobuildLanguages(codeql, config, logger) {
|
||||||
|
if ((config.buildMode === util_1.BuildMode.None &&
|
||||||
|
(await codeql.supportsFeature(tools_features_1.ToolsFeature.TraceCommandUseBuildMode))) ||
|
||||||
|
config.buildMode === util_1.BuildMode.Manual) {
|
||||||
|
logger.info(`Using ${config.buildMode} build mode, nothing to autobuild.`);
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
// Attempt to find a language to autobuild
|
// Attempt to find a language to autobuild
|
||||||
// We want pick the dominant language in the repo from the ones we're able to build
|
// We want pick the dominant language in the repo from the ones we're able to build
|
||||||
// The languages are sorted in order specified by user or by lines of code if we got
|
// The languages are sorted in order specified by user or by lines of code if we got
|
||||||
@@ -126,13 +133,20 @@ async function setupCppAutobuild(codeql, logger) {
|
|||||||
core.exportVariable(envVar, "false");
|
core.exportVariable(envVar, "false");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function runAutobuild(language, config, logger) {
|
exports.setupCppAutobuild = setupCppAutobuild;
|
||||||
|
async function runAutobuild(config, language, features, logger) {
|
||||||
logger.startGroup(`Attempting to automatically build ${language} code`);
|
logger.startGroup(`Attempting to automatically build ${language} code`);
|
||||||
const codeQL = await (0, codeql_1.getCodeQL)(config.codeQLCmd);
|
const codeQL = await (0, codeql_1.getCodeQL)(config.codeQLCmd);
|
||||||
if (language === languages_1.Language.cpp) {
|
if (language === languages_1.Language.cpp) {
|
||||||
await setupCppAutobuild(codeQL, logger);
|
await setupCppAutobuild(codeQL, logger);
|
||||||
}
|
}
|
||||||
await codeQL.runAutobuild(language);
|
if (config.buildMode &&
|
||||||
|
(await features.getValue(feature_flags_1.Feature.AutobuildDirectTracingEnabled, codeQL))) {
|
||||||
|
await codeQL.extractUsingBuildMode(config, language);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
await codeQL.runAutobuild(config, language, features);
|
||||||
|
}
|
||||||
if (language === languages_1.Language.go) {
|
if (language === languages_1.Language.go) {
|
||||||
core.exportVariable(environment_1.EnvVar.DID_AUTOBUILD_GOLANG, "true");
|
core.exportVariable(environment_1.EnvVar.DID_AUTOBUILD_GOLANG, "true");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"autobuild.js","sourceRoot":"","sources":["../src/autobuild.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"autobuild.js","sourceRoot":"","sources":["../src/autobuild.ts"],"names":[],"mappings":"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"}
|
||||||
252
lib/cli-errors.js
generated
Normal file
252
lib/cli-errors.js
generated
Normal file
@@ -0,0 +1,252 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.wrapCliConfigurationError = exports.getCliConfigCategoryIfExists = exports.cliErrorsConfig = exports.CliConfigErrorCategory = exports.CommandInvocationError = void 0;
|
||||||
|
const util_1 = require("./util");
|
||||||
|
/**
|
||||||
|
* A class of Error that we can classify as an error stemming from a CLI
|
||||||
|
* invocation, with associated exit code, stderr,etc.
|
||||||
|
*/
|
||||||
|
class CommandInvocationError extends Error {
|
||||||
|
constructor(cmd, args, exitCode, stderr, stdout) {
|
||||||
|
const prettyCommand = [cmd, ...args]
|
||||||
|
.map((x) => (x.includes(" ") ? `'${x}'` : x))
|
||||||
|
.join(" ");
|
||||||
|
const fatalErrors = extractFatalErrors(stderr);
|
||||||
|
const autobuildErrors = extractAutobuildErrors(stderr);
|
||||||
|
let message;
|
||||||
|
if (fatalErrors) {
|
||||||
|
message =
|
||||||
|
`Encountered a fatal error while running "${prettyCommand}". ` +
|
||||||
|
`Exit code was ${exitCode} and error was: ${fatalErrors.trim()} See the logs for more details.`;
|
||||||
|
}
|
||||||
|
else if (autobuildErrors) {
|
||||||
|
const autobuildHelpLink = "https://docs.github.com/en/code-security/code-scanning/troubleshooting-code-scanning/automatic-build-failed";
|
||||||
|
message =
|
||||||
|
"We were unable to automatically build your code. Please provide manual build steps. " +
|
||||||
|
`For more information, see ${autobuildHelpLink}. ` +
|
||||||
|
`Encountered the following error: ${autobuildErrors}`;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
let lastLine = stderr.trim().split("\n").pop()?.trim() || "";
|
||||||
|
if (lastLine[lastLine.length - 1] !== ".") {
|
||||||
|
lastLine += ".";
|
||||||
|
}
|
||||||
|
message =
|
||||||
|
`Encountered a fatal error while running "${prettyCommand}". ` +
|
||||||
|
`Exit code was ${exitCode} and last log line was: ${lastLine} See the logs for more details.`;
|
||||||
|
}
|
||||||
|
super(message);
|
||||||
|
this.exitCode = exitCode;
|
||||||
|
this.stderr = stderr;
|
||||||
|
this.stdout = stdout;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.CommandInvocationError = CommandInvocationError;
|
||||||
|
/**
|
||||||
|
* Provide a better error message from the stderr of a CLI invocation that failed with a fatal
|
||||||
|
* error.
|
||||||
|
*
|
||||||
|
* - If the CLI invocation failed with a fatal error, this returns that fatal error, followed by
|
||||||
|
* any fatal errors that occurred in plumbing commands.
|
||||||
|
* - If the CLI invocation did not fail with a fatal error, this returns `undefined`.
|
||||||
|
*
|
||||||
|
* ### Example
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* Running TRAP import for CodeQL database at /home/runner/work/_temp/codeql_databases/javascript...
|
||||||
|
* A fatal error occurred: Evaluator heap must be at least 384.00 MiB
|
||||||
|
* A fatal error occurred: Dataset import for
|
||||||
|
* /home/runner/work/_temp/codeql_databases/javascript/db-javascript failed with code 2
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* becomes
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* Encountered a fatal error while running "codeql-for-testing database finalize --finalize-dataset
|
||||||
|
* --threads=2 --ram=2048 db". Exit code was 32 and error was: A fatal error occurred: Dataset
|
||||||
|
* import for /home/runner/work/_temp/codeql_databases/javascript/db-javascript failed with code 2.
|
||||||
|
* Context: A fatal error occurred: Evaluator heap must be at least 384.00 MiB.
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* Where possible, this tries to summarize the error into a single line, as this displays better in
|
||||||
|
* the Actions UI.
|
||||||
|
*/
|
||||||
|
function extractFatalErrors(error) {
|
||||||
|
const fatalErrorRegex = /.*fatal error occurred:/gi;
|
||||||
|
let fatalErrors = [];
|
||||||
|
let lastFatalErrorIndex;
|
||||||
|
let match;
|
||||||
|
while ((match = fatalErrorRegex.exec(error)) !== null) {
|
||||||
|
if (lastFatalErrorIndex !== undefined) {
|
||||||
|
fatalErrors.push(error.slice(lastFatalErrorIndex, match.index).trim());
|
||||||
|
}
|
||||||
|
lastFatalErrorIndex = match.index;
|
||||||
|
}
|
||||||
|
if (lastFatalErrorIndex !== undefined) {
|
||||||
|
const lastError = error.slice(lastFatalErrorIndex).trim();
|
||||||
|
if (fatalErrors.length === 0) {
|
||||||
|
// No other errors
|
||||||
|
return lastError;
|
||||||
|
}
|
||||||
|
const isOneLiner = !fatalErrors.some((e) => e.includes("\n"));
|
||||||
|
if (isOneLiner) {
|
||||||
|
fatalErrors = fatalErrors.map(ensureEndsInPeriod);
|
||||||
|
}
|
||||||
|
return [
|
||||||
|
ensureEndsInPeriod(lastError),
|
||||||
|
"Context:",
|
||||||
|
...fatalErrors.reverse(),
|
||||||
|
].join(isOneLiner ? " " : "\n");
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
function extractAutobuildErrors(error) {
|
||||||
|
const pattern = /.*\[autobuild\] \[ERROR\] (.*)/gi;
|
||||||
|
let errorLines = [...error.matchAll(pattern)].map((match) => match[1]);
|
||||||
|
// Truncate if there are more than 10 matching lines.
|
||||||
|
if (errorLines.length > 10) {
|
||||||
|
errorLines = errorLines.slice(0, 10);
|
||||||
|
errorLines.push("(truncated)");
|
||||||
|
}
|
||||||
|
return errorLines.join("\n") || undefined;
|
||||||
|
}
|
||||||
|
function ensureEndsInPeriod(text) {
|
||||||
|
return text[text.length - 1] === "." ? text : `${text}.`;
|
||||||
|
}
|
||||||
|
/** Error messages from the CLI that we consider configuration errors and handle specially. */
|
||||||
|
var CliConfigErrorCategory;
|
||||||
|
(function (CliConfigErrorCategory) {
|
||||||
|
CliConfigErrorCategory["ExternalRepositoryCloneFailed"] = "ExternalRepositoryCloneFailed";
|
||||||
|
CliConfigErrorCategory["GradleBuildFailed"] = "GradleBuildFailed";
|
||||||
|
CliConfigErrorCategory["IncompatibleWithActionVersion"] = "IncompatibleWithActionVersion";
|
||||||
|
CliConfigErrorCategory["InitCalledTwice"] = "InitCalledTwice";
|
||||||
|
CliConfigErrorCategory["InvalidSourceRoot"] = "InvalidSourceRoot";
|
||||||
|
CliConfigErrorCategory["MavenBuildFailed"] = "MavenBuildFailed";
|
||||||
|
CliConfigErrorCategory["NoBuildCommandAutodetected"] = "NoBuildCommandAutodetected";
|
||||||
|
CliConfigErrorCategory["NoBuildMethodAutodetected"] = "NoBuildMethodAutodetected";
|
||||||
|
CliConfigErrorCategory["NoSourceCodeSeen"] = "NoSourceCodeSeen";
|
||||||
|
CliConfigErrorCategory["NoSupportedBuildCommandSucceeded"] = "NoSupportedBuildCommandSucceeded";
|
||||||
|
CliConfigErrorCategory["NoSupportedBuildSystemDetected"] = "NoSupportedBuildSystemDetected";
|
||||||
|
CliConfigErrorCategory["SwiftBuildFailed"] = "SwiftBuildFailed";
|
||||||
|
CliConfigErrorCategory["UnsupportedBuildMode"] = "UnsupportedBuildMode";
|
||||||
|
})(CliConfigErrorCategory || (exports.CliConfigErrorCategory = CliConfigErrorCategory = {}));
|
||||||
|
/**
|
||||||
|
* All of our caught CLI error messages that we handle specially: ie. if we
|
||||||
|
* would like to categorize an error as a configuration error or not.
|
||||||
|
*/
|
||||||
|
exports.cliErrorsConfig = {
|
||||||
|
[CliConfigErrorCategory.ExternalRepositoryCloneFailed]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("Failed to clone external Git repository"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
[CliConfigErrorCategory.GradleBuildFailed]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("[autobuild] FAILURE: Build failed with an exception."),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
// Version of CodeQL CLI is incompatible with this version of the CodeQL Action
|
||||||
|
[CliConfigErrorCategory.IncompatibleWithActionVersion]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("is not compatible with this CodeQL CLI"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
[CliConfigErrorCategory.InitCalledTwice]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("Refusing to create databases .* but could not process any of it"),
|
||||||
|
],
|
||||||
|
additionalErrorMessageToAppend: `Is the "init" action called twice in the same job?`,
|
||||||
|
},
|
||||||
|
// Expected source location for database creation does not exist
|
||||||
|
[CliConfigErrorCategory.InvalidSourceRoot]: {
|
||||||
|
cliErrorMessageCandidates: [new RegExp("Invalid source root")],
|
||||||
|
},
|
||||||
|
[CliConfigErrorCategory.MavenBuildFailed]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("\\[autobuild\\] \\[ERROR\\] Failed to execute goal"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
[CliConfigErrorCategory.NoBuildCommandAutodetected]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("Could not auto-detect a suitable build method"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
[CliConfigErrorCategory.NoBuildMethodAutodetected]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("Could not detect a suitable build command for the source checkout"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
// Usually when a manual build script has failed, or if an autodetected language
|
||||||
|
// was unintended to have CodeQL analysis run on it.
|
||||||
|
[CliConfigErrorCategory.NoSourceCodeSeen]: {
|
||||||
|
exitCode: 32,
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("CodeQL detected code written in .* but could not process any of it"),
|
||||||
|
new RegExp("CodeQL did not detect any code written in languages supported by CodeQL"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
[CliConfigErrorCategory.NoSupportedBuildCommandSucceeded]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("No supported build command succeeded"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
[CliConfigErrorCategory.NoSupportedBuildSystemDetected]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("No supported build system detected"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
[CliConfigErrorCategory.SwiftBuildFailed]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("\\[autobuilder/build\\] \\[build-command-failed\\] `autobuild` failed to run the build command"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
[CliConfigErrorCategory.UnsupportedBuildMode]: {
|
||||||
|
cliErrorMessageCandidates: [
|
||||||
|
new RegExp("does not support the .* build mode. Please try using one of the following build modes instead"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Check if the given CLI error or exit code, if applicable, apply to any known
|
||||||
|
* CLI errors in the configuration record. If either the CLI error message matches one of
|
||||||
|
* the error messages in the config record, or the exit codes match, return the error category;
|
||||||
|
* if not, return undefined.
|
||||||
|
*/
|
||||||
|
function getCliConfigCategoryIfExists(cliError) {
|
||||||
|
for (const [category, configuration] of Object.entries(exports.cliErrorsConfig)) {
|
||||||
|
if (cliError.exitCode !== undefined &&
|
||||||
|
configuration.exitCode !== undefined &&
|
||||||
|
cliError.exitCode === configuration.exitCode) {
|
||||||
|
return category;
|
||||||
|
}
|
||||||
|
for (const e of configuration.cliErrorMessageCandidates) {
|
||||||
|
if (cliError.message.match(e) || cliError.stderr.match(e)) {
|
||||||
|
return category;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
exports.getCliConfigCategoryIfExists = getCliConfigCategoryIfExists;
|
||||||
|
/**
|
||||||
|
* Changes an error received from the CLI to a ConfigurationError with optionally an extra
|
||||||
|
* error message appended, if it exists in a known set of configuration errors. Otherwise,
|
||||||
|
* simply returns the original error.
|
||||||
|
*/
|
||||||
|
function wrapCliConfigurationError(cliError) {
|
||||||
|
if (!(cliError instanceof CommandInvocationError)) {
|
||||||
|
return cliError;
|
||||||
|
}
|
||||||
|
const cliConfigErrorCategory = getCliConfigCategoryIfExists(cliError);
|
||||||
|
if (cliConfigErrorCategory === undefined) {
|
||||||
|
return cliError;
|
||||||
|
}
|
||||||
|
let errorMessageBuilder = cliError.message;
|
||||||
|
const additionalErrorMessageToAppend = exports.cliErrorsConfig[cliConfigErrorCategory].additionalErrorMessageToAppend;
|
||||||
|
if (additionalErrorMessageToAppend !== undefined) {
|
||||||
|
errorMessageBuilder = `${errorMessageBuilder} ${additionalErrorMessageToAppend}`;
|
||||||
|
}
|
||||||
|
return new util_1.ConfigurationError(errorMessageBuilder);
|
||||||
|
}
|
||||||
|
exports.wrapCliConfigurationError = wrapCliConfigurationError;
|
||||||
|
//# sourceMappingURL=cli-errors.js.map
|
||||||
1
lib/cli-errors.js.map
Normal file
1
lib/cli-errors.js.map
Normal file
File diff suppressed because one or more lines are too long
361
lib/codeql.js
generated
361
lib/codeql.js
generated
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.getGeneratedCodeScanningConfigPath = exports.getTrapCachingExtractorConfigArgsForLang = exports.getTrapCachingExtractorConfigArgs = exports.getExtraOptions = exports.getCodeQLForCmd = exports.getCodeQLForTesting = exports.getCachedCodeQL = exports.setCodeQL = exports.getCodeQL = exports.setupCodeQL = exports.CODEQL_VERSION_SUBLANGUAGE_FILE_COVERAGE = exports.CODEQL_VERSION_ANALYSIS_SUMMARY_V2 = exports.CODEQL_VERSION_LANGUAGE_ALIASING = exports.CODEQL_VERSION_LANGUAGE_BASELINE_CONFIG = exports.CODEQL_VERSION_RESOLVE_ENVIRONMENT = exports.CODEQL_VERSION_DIAGNOSTICS_EXPORT_FIXED = exports.CODEQL_VERSION_BETTER_NO_CODE_ERROR_MESSAGE = exports.CODEQL_VERSION_INIT_WITH_QLCONFIG = exports.CODEQL_VERSION_EXPORT_CODE_SCANNING_CONFIG = exports.CODEQL_VERSION_SECURITY_EXPERIMENTAL_SUITE = exports.CommandInvocationError = void 0;
|
exports.getGeneratedCodeScanningConfigPath = exports.getTrapCachingExtractorConfigArgsForLang = exports.getTrapCachingExtractorConfigArgs = exports.getExtraOptions = exports.getCodeQLForCmd = exports.getCodeQLForTesting = exports.getCachedCodeQL = exports.setCodeQL = exports.getCodeQL = exports.setupCodeQL = exports.CODEQL_VERSION_SUBLANGUAGE_FILE_COVERAGE = exports.CODEQL_VERSION_ANALYSIS_SUMMARY_V2 = exports.CODEQL_VERSION_LANGUAGE_ALIASING = exports.CODEQL_VERSION_LANGUAGE_BASELINE_CONFIG = exports.CODEQL_VERSION_RESOLVE_ENVIRONMENT = exports.CODEQL_VERSION_DIAGNOSTICS_EXPORT_FIXED = void 0;
|
||||||
const fs = __importStar(require("fs"));
|
const fs = __importStar(require("fs"));
|
||||||
const path = __importStar(require("path"));
|
const path = __importStar(require("path"));
|
||||||
const core = __importStar(require("@actions/core"));
|
const core = __importStar(require("@actions/core"));
|
||||||
@@ -31,35 +31,14 @@ const toolrunner = __importStar(require("@actions/exec/lib/toolrunner"));
|
|||||||
const yaml = __importStar(require("js-yaml"));
|
const yaml = __importStar(require("js-yaml"));
|
||||||
const semver = __importStar(require("semver"));
|
const semver = __importStar(require("semver"));
|
||||||
const actions_util_1 = require("./actions-util");
|
const actions_util_1 = require("./actions-util");
|
||||||
|
const cli_errors_1 = require("./cli-errors");
|
||||||
const environment_1 = require("./environment");
|
const environment_1 = require("./environment");
|
||||||
const feature_flags_1 = require("./feature-flags");
|
const feature_flags_1 = require("./feature-flags");
|
||||||
const languages_1 = require("./languages");
|
|
||||||
const setupCodeql = __importStar(require("./setup-codeql"));
|
const setupCodeql = __importStar(require("./setup-codeql"));
|
||||||
|
const tools_features_1 = require("./tools-features");
|
||||||
|
const tracer_config_1 = require("./tracer-config");
|
||||||
const util = __importStar(require("./util"));
|
const util = __importStar(require("./util"));
|
||||||
const util_1 = require("./util");
|
const util_1 = require("./util");
|
||||||
class CommandInvocationError extends Error {
|
|
||||||
constructor(cmd, args, exitCode, stderr, stdout) {
|
|
||||||
const prettyCommand = [cmd, ...args]
|
|
||||||
.map((x) => (x.includes(" ") ? `'${x}'` : x))
|
|
||||||
.join(" ");
|
|
||||||
const fatalErrors = extractFatalErrors(stderr);
|
|
||||||
const lastLine = stderr.trim().split("\n").pop()?.trim();
|
|
||||||
let error = fatalErrors
|
|
||||||
? ` and error was: ${fatalErrors.trim()}`
|
|
||||||
: lastLine
|
|
||||||
? ` and last log line was: ${lastLine}`
|
|
||||||
: "";
|
|
||||||
if (error[error.length - 1] !== ".") {
|
|
||||||
error += ".";
|
|
||||||
}
|
|
||||||
super(`Encountered a fatal error while running "${prettyCommand}". ` +
|
|
||||||
`Exit code was ${exitCode}${error} See the logs for more details.`);
|
|
||||||
this.exitCode = exitCode;
|
|
||||||
this.stderr = stderr;
|
|
||||||
this.stdout = stdout;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.CommandInvocationError = CommandInvocationError;
|
|
||||||
/**
|
/**
|
||||||
* Stores the CodeQL object, and is populated by `setupCodeQL` or `getCodeQL`.
|
* Stores the CodeQL object, and is populated by `setupCodeQL` or `getCodeQL`.
|
||||||
* Can be overridden in tests using `setCodeQL`.
|
* Can be overridden in tests using `setCodeQL`.
|
||||||
@@ -73,43 +52,28 @@ let cachedCodeQL = undefined;
|
|||||||
* The version flags below can be used to conditionally enable certain features
|
* The version flags below can be used to conditionally enable certain features
|
||||||
* on versions newer than this.
|
* on versions newer than this.
|
||||||
*/
|
*/
|
||||||
const CODEQL_MINIMUM_VERSION = "2.11.6";
|
const CODEQL_MINIMUM_VERSION = "2.12.6";
|
||||||
/**
|
/**
|
||||||
* This version will shortly become the oldest version of CodeQL that the Action will run with.
|
* This version will shortly become the oldest version of CodeQL that the Action will run with.
|
||||||
*/
|
*/
|
||||||
const CODEQL_NEXT_MINIMUM_VERSION = "2.11.6";
|
const CODEQL_NEXT_MINIMUM_VERSION = "2.12.6";
|
||||||
/**
|
/**
|
||||||
* This is the version of GHES that was most recently deprecated.
|
* This is the version of GHES that was most recently deprecated.
|
||||||
*/
|
*/
|
||||||
const GHES_VERSION_MOST_RECENTLY_DEPRECATED = "3.7";
|
const GHES_VERSION_MOST_RECENTLY_DEPRECATED = "3.8";
|
||||||
/**
|
/**
|
||||||
* This is the deprecation date for the version of GHES that was most recently deprecated.
|
* This is the deprecation date for the version of GHES that was most recently deprecated.
|
||||||
*/
|
*/
|
||||||
const GHES_MOST_RECENT_DEPRECATION_DATE = "2023-11-08";
|
const GHES_MOST_RECENT_DEPRECATION_DATE = "2024-03-26";
|
||||||
|
/** The CLI verbosity level to use for extraction in debug mode. */
|
||||||
|
const EXTRACTION_DEBUG_MODE_VERBOSITY = "progress++";
|
||||||
/*
|
/*
|
||||||
|
* Deprecated in favor of ToolsFeature.
|
||||||
|
*
|
||||||
* Versions of CodeQL that version-flag certain functionality in the Action.
|
* Versions of CodeQL that version-flag certain functionality in the Action.
|
||||||
* For convenience, please keep these in descending order. Once a version
|
* For convenience, please keep these in descending order. Once a version
|
||||||
* flag is older than the oldest supported version above, it may be removed.
|
* flag is older than the oldest supported version above, it may be removed.
|
||||||
*/
|
*/
|
||||||
/**
|
|
||||||
* Versions 2.12.1+ of the CodeQL Bundle include a `security-experimental` built-in query suite for
|
|
||||||
* each language.
|
|
||||||
*/
|
|
||||||
exports.CODEQL_VERSION_SECURITY_EXPERIMENTAL_SUITE = "2.12.1";
|
|
||||||
/**
|
|
||||||
* Versions 2.12.3+ of the CodeQL CLI support exporting configuration information from a code
|
|
||||||
* scanning config file to SARIF.
|
|
||||||
*/
|
|
||||||
exports.CODEQL_VERSION_EXPORT_CODE_SCANNING_CONFIG = "2.12.3";
|
|
||||||
/**
|
|
||||||
* Versions 2.12.4+ of the CodeQL CLI support the `--qlconfig-file` flag in calls to `database init`.
|
|
||||||
*/
|
|
||||||
exports.CODEQL_VERSION_INIT_WITH_QLCONFIG = "2.12.4";
|
|
||||||
/**
|
|
||||||
* Versions 2.12.4+ of the CodeQL CLI provide a better error message when `database finalize`
|
|
||||||
* determines that no code has been found.
|
|
||||||
*/
|
|
||||||
exports.CODEQL_VERSION_BETTER_NO_CODE_ERROR_MESSAGE = "2.12.4";
|
|
||||||
/**
|
/**
|
||||||
* Versions 2.13.1+ of the CodeQL CLI fix a bug where diagnostics export could produce invalid SARIF.
|
* Versions 2.13.1+ of the CodeQL CLI fix a bug where diagnostics export could produce invalid SARIF.
|
||||||
*/
|
*/
|
||||||
@@ -134,6 +98,10 @@ exports.CODEQL_VERSION_ANALYSIS_SUMMARY_V2 = "2.15.0";
|
|||||||
* Versions 2.15.0+ of the CodeQL CLI support sub-language file coverage information.
|
* Versions 2.15.0+ of the CodeQL CLI support sub-language file coverage information.
|
||||||
*/
|
*/
|
||||||
exports.CODEQL_VERSION_SUBLANGUAGE_FILE_COVERAGE = "2.15.0";
|
exports.CODEQL_VERSION_SUBLANGUAGE_FILE_COVERAGE = "2.15.0";
|
||||||
|
/**
|
||||||
|
* Versions 2.15.2+ of the CodeQL CLI support the `--sarif-include-query-help` option.
|
||||||
|
*/
|
||||||
|
const CODEQL_VERSION_INCLUDE_QUERY_HELP = "2.15.2";
|
||||||
/**
|
/**
|
||||||
* Set up CodeQL CLI access.
|
* Set up CodeQL CLI access.
|
||||||
*
|
*
|
||||||
@@ -155,7 +123,7 @@ async function setupCodeQL(toolsInput, apiDetails, tempDir, variant, defaultCliV
|
|||||||
codeqlCmd += ".exe";
|
codeqlCmd += ".exe";
|
||||||
}
|
}
|
||||||
else if (process.platform !== "linux" && process.platform !== "darwin") {
|
else if (process.platform !== "linux" && process.platform !== "darwin") {
|
||||||
throw new util.UserError(`Unsupported platform: ${process.platform}`);
|
throw new util.ConfigurationError(`Unsupported platform: ${process.platform}`);
|
||||||
}
|
}
|
||||||
cachedCodeQL = await getCodeQLForCmd(codeqlCmd, checkVersion);
|
cachedCodeQL = await getCodeQLForCmd(codeqlCmd, checkVersion);
|
||||||
return {
|
return {
|
||||||
@@ -201,13 +169,16 @@ function resolveFunction(partialCodeql, methodName, defaultImplementation) {
|
|||||||
function setCodeQL(partialCodeql) {
|
function setCodeQL(partialCodeql) {
|
||||||
cachedCodeQL = {
|
cachedCodeQL = {
|
||||||
getPath: resolveFunction(partialCodeql, "getPath", () => "/tmp/dummy-path"),
|
getPath: resolveFunction(partialCodeql, "getPath", () => "/tmp/dummy-path"),
|
||||||
getVersion: resolveFunction(partialCodeql, "getVersion", () => new Promise((resolve) => resolve({
|
getVersion: resolveFunction(partialCodeql, "getVersion", async () => ({
|
||||||
version: "1.0.0",
|
version: "1.0.0",
|
||||||
}))),
|
})),
|
||||||
printVersion: resolveFunction(partialCodeql, "printVersion"),
|
printVersion: resolveFunction(partialCodeql, "printVersion"),
|
||||||
|
supportsFeature: resolveFunction(partialCodeql, "supportsFeature", async (feature) => !!partialCodeql.getVersion &&
|
||||||
|
(0, tools_features_1.isSupportedToolsFeature)(await partialCodeql.getVersion(), feature)),
|
||||||
databaseInitCluster: resolveFunction(partialCodeql, "databaseInitCluster"),
|
databaseInitCluster: resolveFunction(partialCodeql, "databaseInitCluster"),
|
||||||
runAutobuild: resolveFunction(partialCodeql, "runAutobuild"),
|
runAutobuild: resolveFunction(partialCodeql, "runAutobuild"),
|
||||||
extractScannedLanguage: resolveFunction(partialCodeql, "extractScannedLanguage"),
|
extractScannedLanguage: resolveFunction(partialCodeql, "extractScannedLanguage"),
|
||||||
|
extractUsingBuildMode: resolveFunction(partialCodeql, "extractUsingBuildMode"),
|
||||||
finalizeDatabase: resolveFunction(partialCodeql, "finalizeDatabase"),
|
finalizeDatabase: resolveFunction(partialCodeql, "finalizeDatabase"),
|
||||||
resolveLanguages: resolveFunction(partialCodeql, "resolveLanguages"),
|
resolveLanguages: resolveFunction(partialCodeql, "resolveLanguages"),
|
||||||
betterResolveLanguages: resolveFunction(partialCodeql, "betterResolveLanguages"),
|
betterResolveLanguages: resolveFunction(partialCodeql, "betterResolveLanguages"),
|
||||||
@@ -222,6 +193,7 @@ function setCodeQL(partialCodeql) {
|
|||||||
databaseExportDiagnostics: resolveFunction(partialCodeql, "databaseExportDiagnostics"),
|
databaseExportDiagnostics: resolveFunction(partialCodeql, "databaseExportDiagnostics"),
|
||||||
diagnosticsExport: resolveFunction(partialCodeql, "diagnosticsExport"),
|
diagnosticsExport: resolveFunction(partialCodeql, "diagnosticsExport"),
|
||||||
resolveExtractor: resolveFunction(partialCodeql, "resolveExtractor"),
|
resolveExtractor: resolveFunction(partialCodeql, "resolveExtractor"),
|
||||||
|
mergeResults: resolveFunction(partialCodeql, "mergeResults"),
|
||||||
};
|
};
|
||||||
return cachedCodeQL;
|
return cachedCodeQL;
|
||||||
}
|
}
|
||||||
@@ -279,9 +251,12 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
async printVersion() {
|
async printVersion() {
|
||||||
await runTool(cmd, ["version", "--format=json"]);
|
await runTool(cmd, ["version", "--format=json"]);
|
||||||
},
|
},
|
||||||
async databaseInitCluster(config, sourceRoot, processName, qlconfigFile, logger) {
|
async supportsFeature(feature) {
|
||||||
|
return (0, tools_features_1.isSupportedToolsFeature)(await this.getVersion(), feature);
|
||||||
|
},
|
||||||
|
async databaseInitCluster(config, sourceRoot, processName, qlconfigFile, features, logger) {
|
||||||
const extraArgs = config.languages.map((language) => `--language=${language}`);
|
const extraArgs = config.languages.map((language) => `--language=${language}`);
|
||||||
if (config.languages.filter((l) => (0, languages_1.isTracedLanguage)(l)).length > 0) {
|
if (await (0, tracer_config_1.shouldEnableIndirectTracing)(codeql, config, features)) {
|
||||||
extraArgs.push("--begin-tracing");
|
extraArgs.push("--begin-tracing");
|
||||||
extraArgs.push(...(await getTrapCachingExtractorConfigArgs(config)));
|
extraArgs.push(...(await getTrapCachingExtractorConfigArgs(config)));
|
||||||
extraArgs.push(`--trace-process-name=${processName}`);
|
extraArgs.push(`--trace-process-name=${processName}`);
|
||||||
@@ -292,8 +267,11 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
if (externalRepositoryToken) {
|
if (externalRepositoryToken) {
|
||||||
extraArgs.push("--external-repository-token-stdin");
|
extraArgs.push("--external-repository-token-stdin");
|
||||||
}
|
}
|
||||||
if (qlconfigFile !== undefined &&
|
if (config.buildMode !== undefined &&
|
||||||
(await util.codeQlVersionAbove(this, exports.CODEQL_VERSION_INIT_WITH_QLCONFIG))) {
|
(await this.supportsFeature(tools_features_1.ToolsFeature.BuildModeOption))) {
|
||||||
|
extraArgs.push(`--build-mode=${config.buildMode}`);
|
||||||
|
}
|
||||||
|
if (qlconfigFile !== undefined) {
|
||||||
extraArgs.push(`--qlconfig-file=${qlconfigFile}`);
|
extraArgs.push(`--qlconfig-file=${qlconfigFile}`);
|
||||||
}
|
}
|
||||||
if (await util.codeQlVersionAbove(this, exports.CODEQL_VERSION_LANGUAGE_BASELINE_CONFIG)) {
|
if (await util.codeQlVersionAbove(this, exports.CODEQL_VERSION_LANGUAGE_BASELINE_CONFIG)) {
|
||||||
@@ -308,27 +286,36 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
await runTool(cmd, [
|
await runTool(cmd, [
|
||||||
"database",
|
"database",
|
||||||
"init",
|
"init",
|
||||||
|
"--overwrite",
|
||||||
"--db-cluster",
|
"--db-cluster",
|
||||||
config.dbLocation,
|
config.dbLocation,
|
||||||
`--source-root=${sourceRoot}`,
|
`--source-root=${sourceRoot}`,
|
||||||
...(await getLanguageAliasingArguments(this)),
|
...(await getLanguageAliasingArguments(this)),
|
||||||
...extraArgs,
|
...extraArgs,
|
||||||
...getExtraOptionsFromEnv(["database", "init"]),
|
...getExtraOptionsFromEnv(["database", "init"], {
|
||||||
|
ignoringOptions: ["--overwrite"],
|
||||||
|
}),
|
||||||
], { stdin: externalRepositoryToken });
|
], { stdin: externalRepositoryToken });
|
||||||
},
|
},
|
||||||
async runAutobuild(language) {
|
async runAutobuild(config, language, features) {
|
||||||
|
applyAutobuildAzurePipelinesTimeoutFix();
|
||||||
|
if (await features.getValue(feature_flags_1.Feature.AutobuildDirectTracingEnabled, this)) {
|
||||||
|
await runTool(cmd, [
|
||||||
|
"database",
|
||||||
|
"trace-command",
|
||||||
|
...(await getTrapCachingExtractorConfigArgsForLang(config, language)),
|
||||||
|
...getExtractionVerbosityArguments(config.debugMode),
|
||||||
|
...getExtraOptionsFromEnv(["database", "trace-command"]),
|
||||||
|
util.getCodeQLDatabasePath(config, language),
|
||||||
|
]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
const autobuildCmd = path.join(await this.resolveExtractor(language), "tools", process.platform === "win32" ? "autobuild.cmd" : "autobuild.sh");
|
const autobuildCmd = path.join(await this.resolveExtractor(language), "tools", process.platform === "win32" ? "autobuild.cmd" : "autobuild.sh");
|
||||||
// Update JAVA_TOOL_OPTIONS to contain '-Dhttp.keepAlive=false'
|
// Bump the verbosity of the autobuild command if we're in debug mode
|
||||||
// This is because of an issue with Azure pipelines timing out connections after 4 minutes
|
if (config.debugMode) {
|
||||||
// and Maven not properly handling closed connections
|
process.env[environment_1.EnvVar.CLI_VERBOSITY] =
|
||||||
// Otherwise long build processes will timeout when pulling down Java packages
|
process.env[environment_1.EnvVar.CLI_VERBOSITY] || EXTRACTION_DEBUG_MODE_VERBOSITY;
|
||||||
// https://developercommunity.visualstudio.com/content/problem/292284/maven-hosted-agent-connection-timeout.html
|
}
|
||||||
const javaToolOptions = process.env["JAVA_TOOL_OPTIONS"] || "";
|
|
||||||
process.env["JAVA_TOOL_OPTIONS"] = [
|
|
||||||
...javaToolOptions.split(/\s+/),
|
|
||||||
"-Dhttp.keepAlive=false",
|
|
||||||
"-Dmaven.wagon.http.pool=false",
|
|
||||||
].join(" ");
|
|
||||||
// On macOS, System Integrity Protection (SIP) typically interferes with
|
// On macOS, System Integrity Protection (SIP) typically interferes with
|
||||||
// CodeQL build tracing of protected binaries.
|
// CodeQL build tracing of protected binaries.
|
||||||
// The usual workaround is to prefix `$CODEQL_RUNNER` to build commands:
|
// The usual workaround is to prefix `$CODEQL_RUNNER` to build commands:
|
||||||
@@ -350,32 +337,54 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
"trace-command",
|
"trace-command",
|
||||||
"--index-traceless-dbs",
|
"--index-traceless-dbs",
|
||||||
...(await getTrapCachingExtractorConfigArgsForLang(config, language)),
|
...(await getTrapCachingExtractorConfigArgsForLang(config, language)),
|
||||||
|
...getExtractionVerbosityArguments(config.debugMode),
|
||||||
...getExtraOptionsFromEnv(["database", "trace-command"]),
|
...getExtraOptionsFromEnv(["database", "trace-command"]),
|
||||||
util.getCodeQLDatabasePath(config, language),
|
util.getCodeQLDatabasePath(config, language),
|
||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
async finalizeDatabase(databasePath, threadsFlag, memoryFlag) {
|
async extractUsingBuildMode(config, language) {
|
||||||
|
if (config.buildMode === util_1.BuildMode.Autobuild) {
|
||||||
|
applyAutobuildAzurePipelinesTimeoutFix();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
await runTool(cmd, [
|
||||||
|
"database",
|
||||||
|
"trace-command",
|
||||||
|
"--use-build-mode",
|
||||||
|
...(await getTrapCachingExtractorConfigArgsForLang(config, language)),
|
||||||
|
...getExtractionVerbosityArguments(config.debugMode),
|
||||||
|
...getExtraOptionsFromEnv(["database", "trace-command"]),
|
||||||
|
util.getCodeQLDatabasePath(config, language),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
if (config.buildMode === util_1.BuildMode.Autobuild) {
|
||||||
|
const prefix = "We were unable to automatically build your code. " +
|
||||||
|
"Please change the build mode for this language to manual and specify build steps " +
|
||||||
|
"for your project. For more information, see " +
|
||||||
|
"https://docs.github.com/en/code-security/code-scanning/troubleshooting-code-scanning/automatic-build-failed.";
|
||||||
|
const ErrorConstructor = e instanceof util.ConfigurationError
|
||||||
|
? util.ConfigurationError
|
||||||
|
: Error;
|
||||||
|
throw new ErrorConstructor(`${prefix} ${util.wrapError(e).message}`);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async finalizeDatabase(databasePath, threadsFlag, memoryFlag, enableDebugLogging) {
|
||||||
const args = [
|
const args = [
|
||||||
"database",
|
"database",
|
||||||
"finalize",
|
"finalize",
|
||||||
"--finalize-dataset",
|
"--finalize-dataset",
|
||||||
threadsFlag,
|
threadsFlag,
|
||||||
memoryFlag,
|
memoryFlag,
|
||||||
|
...getExtractionVerbosityArguments(enableDebugLogging),
|
||||||
...getExtraOptionsFromEnv(["database", "finalize"]),
|
...getExtraOptionsFromEnv(["database", "finalize"]),
|
||||||
databasePath,
|
databasePath,
|
||||||
];
|
];
|
||||||
try {
|
await runTool(cmd, args);
|
||||||
await runTool(cmd, args);
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
if (e instanceof CommandInvocationError &&
|
|
||||||
!(await util.codeQlVersionAbove(this, exports.CODEQL_VERSION_BETTER_NO_CODE_ERROR_MESSAGE)) &&
|
|
||||||
isNoCodeFoundError(e)) {
|
|
||||||
throw new util.UserError("No code found during the build. Please see: " +
|
|
||||||
"https://gh.io/troubleshooting-code-scanning/no-source-code-seen-during-build");
|
|
||||||
}
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
async resolveLanguages() {
|
async resolveLanguages() {
|
||||||
const codeqlArgs = [
|
const codeqlArgs = [
|
||||||
@@ -447,25 +456,22 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
throw new Error(`Unexpected output from codeql resolve build-environment: ${e} in\n${output}`);
|
throw new Error(`Unexpected output from codeql resolve build-environment: ${e} in\n${output}`);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async databaseRunQueries(databasePath, flags, features) {
|
async databaseRunQueries(databasePath, flags) {
|
||||||
const codeqlArgs = [
|
const codeqlArgs = [
|
||||||
"database",
|
"database",
|
||||||
"run-queries",
|
"run-queries",
|
||||||
...flags,
|
...flags,
|
||||||
databasePath,
|
databasePath,
|
||||||
|
"--expect-discarded-cache",
|
||||||
"--min-disk-free=1024", // Try to leave at least 1GB free
|
"--min-disk-free=1024", // Try to leave at least 1GB free
|
||||||
"-v",
|
"-v",
|
||||||
...getExtraOptionsFromEnv(["database", "run-queries"]),
|
...getExtraOptionsFromEnv(["database", "run-queries"], {
|
||||||
|
ignoringOptions: ["--expect-discarded-cache"],
|
||||||
|
}),
|
||||||
];
|
];
|
||||||
if (await util.supportExpectDiscardedCache(this)) {
|
if (await util.codeQlVersionAbove(this, feature_flags_1.CODEQL_VERSION_FINE_GRAINED_PARALLELISM)) {
|
||||||
codeqlArgs.push("--expect-discarded-cache");
|
|
||||||
}
|
|
||||||
if (await features.getValue(feature_flags_1.Feature.EvaluatorFineGrainedParallelismEnabled, this)) {
|
|
||||||
codeqlArgs.push("--intra-layer-parallelism");
|
codeqlArgs.push("--intra-layer-parallelism");
|
||||||
}
|
}
|
||||||
else if (await util.codeQlVersionAbove(this, feature_flags_1.CODEQL_VERSION_FINE_GRAINED_PARALLELISM)) {
|
|
||||||
codeqlArgs.push("--no-intra-layer-parallelism");
|
|
||||||
}
|
|
||||||
await runTool(cmd, codeqlArgs);
|
await runTool(cmd, codeqlArgs);
|
||||||
},
|
},
|
||||||
async databaseInterpretResults(databasePath, querySuitePaths, sarifFile, addSnippetsFlag, threadsFlag, verbosityFlag, automationDetailsId, config, features, logger) {
|
async databaseInterpretResults(databasePath, querySuitePaths, sarifFile, addSnippetsFlag, threadsFlag, verbosityFlag, automationDetailsId, config, features, logger) {
|
||||||
@@ -486,9 +492,9 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
"--print-diagnostics-summary",
|
"--print-diagnostics-summary",
|
||||||
"--print-metrics-summary",
|
"--print-metrics-summary",
|
||||||
"--sarif-add-baseline-file-info",
|
"--sarif-add-baseline-file-info",
|
||||||
"--sarif-add-query-help",
|
`--sarif-codescanning-config=${getGeneratedCodeScanningConfigPath(config)}`,
|
||||||
"--sarif-group-rules-by-pack",
|
"--sarif-group-rules-by-pack",
|
||||||
...(await getCodeScanningConfigExportArguments(config, this)),
|
...(await getCodeScanningQueryHelpArguments(this)),
|
||||||
...getExtraOptionsFromEnv(["database", "interpret-results"]),
|
...getExtraOptionsFromEnv(["database", "interpret-results"]),
|
||||||
];
|
];
|
||||||
if (automationDetailsId !== undefined) {
|
if (automationDetailsId !== undefined) {
|
||||||
@@ -503,20 +509,13 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
if (shouldExportDiagnostics) {
|
if (shouldExportDiagnostics) {
|
||||||
codeqlArgs.push("--sarif-include-diagnostics");
|
codeqlArgs.push("--sarif-include-diagnostics");
|
||||||
}
|
}
|
||||||
else if (await util.codeQlVersionAbove(this, "2.12.4")) {
|
else {
|
||||||
codeqlArgs.push("--no-sarif-include-diagnostics");
|
codeqlArgs.push("--no-sarif-include-diagnostics");
|
||||||
}
|
}
|
||||||
if (
|
if ((await util.codeQlVersionAbove(this, exports.CODEQL_VERSION_ANALYSIS_SUMMARY_V2)) &&
|
||||||
// Analysis summary v2 links to the status page, so check the GHES version we're running on
|
!(0, tools_features_1.isSupportedToolsFeature)(await this.getVersion(), tools_features_1.ToolsFeature.AnalysisSummaryV2IsDefault)) {
|
||||||
// supports the status page.
|
|
||||||
(config.gitHubVersion.type !== util.GitHubVariant.GHES ||
|
|
||||||
semver.gte(config.gitHubVersion.version, "3.9.0")) &&
|
|
||||||
(await util.codeQlVersionAbove(this, exports.CODEQL_VERSION_ANALYSIS_SUMMARY_V2))) {
|
|
||||||
codeqlArgs.push("--new-analysis-summary");
|
codeqlArgs.push("--new-analysis-summary");
|
||||||
}
|
}
|
||||||
else if (await util.codeQlVersionAbove(this, exports.CODEQL_VERSION_ANALYSIS_SUMMARY_V2)) {
|
|
||||||
codeqlArgs.push("--no-new-analysis-summary");
|
|
||||||
}
|
|
||||||
codeqlArgs.push(databasePath);
|
codeqlArgs.push(databasePath);
|
||||||
if (querySuitePaths) {
|
if (querySuitePaths) {
|
||||||
codeqlArgs.push(...querySuitePaths);
|
codeqlArgs.push(...querySuitePaths);
|
||||||
@@ -636,7 +635,7 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
"export",
|
"export",
|
||||||
"--format=sarif-latest",
|
"--format=sarif-latest",
|
||||||
`--output=${sarifFile}`,
|
`--output=${sarifFile}`,
|
||||||
...(await getCodeScanningConfigExportArguments(config, this)),
|
`--sarif-codescanning-config=${getGeneratedCodeScanningConfigPath(config)}`,
|
||||||
...getExtraOptionsFromEnv(["diagnostics", "export"]),
|
...getExtraOptionsFromEnv(["diagnostics", "export"]),
|
||||||
];
|
];
|
||||||
if (automationDetailsId !== undefined) {
|
if (automationDetailsId !== undefined) {
|
||||||
@@ -668,6 +667,22 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
}).exec();
|
}).exec();
|
||||||
return JSON.parse(extractorPath);
|
return JSON.parse(extractorPath);
|
||||||
},
|
},
|
||||||
|
async mergeResults(sarifFiles, outputFile, { mergeRunsFromEqualCategory = false, }) {
|
||||||
|
const args = [
|
||||||
|
"github",
|
||||||
|
"merge-results",
|
||||||
|
"--output",
|
||||||
|
outputFile,
|
||||||
|
...getExtraOptionsFromEnv(["github", "merge-results"]),
|
||||||
|
];
|
||||||
|
for (const sarifFile of sarifFiles) {
|
||||||
|
args.push("--sarif", sarifFile);
|
||||||
|
}
|
||||||
|
if (mergeRunsFromEqualCategory) {
|
||||||
|
args.push("--sarif-merge-runs-from-equal-category");
|
||||||
|
}
|
||||||
|
await runTool(cmd, args);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
// To ensure that status reports include the CodeQL CLI version wherever
|
// To ensure that status reports include the CodeQL CLI version wherever
|
||||||
// possible, we want to call getVersion(), which populates the version value
|
// possible, we want to call getVersion(), which populates the version value
|
||||||
@@ -679,7 +694,7 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
// CodeQL object is created.
|
// CodeQL object is created.
|
||||||
if (checkVersion &&
|
if (checkVersion &&
|
||||||
!(await util.codeQlVersionAbove(codeql, CODEQL_MINIMUM_VERSION))) {
|
!(await util.codeQlVersionAbove(codeql, CODEQL_MINIMUM_VERSION))) {
|
||||||
throw new util.UserError(`Expected a CodeQL CLI with version at least ${CODEQL_MINIMUM_VERSION} but got version ${(await codeql.getVersion()).version}`);
|
throw new util.ConfigurationError(`Expected a CodeQL CLI with version at least ${CODEQL_MINIMUM_VERSION} but got version ${(await codeql.getVersion()).version}`);
|
||||||
}
|
}
|
||||||
else if (checkVersion &&
|
else if (checkVersion &&
|
||||||
process.env[environment_1.EnvVar.SUPPRESS_DEPRECATED_SOON_WARNING] !== "true" &&
|
process.env[environment_1.EnvVar.SUPPRESS_DEPRECATED_SOON_WARNING] !== "true" &&
|
||||||
@@ -693,8 +708,7 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
"version of the CLI using the 'tools' input to the 'init' Action, you can remove this " +
|
"version of the CLI using the 'tools' input to the 'init' Action, you can remove this " +
|
||||||
"input to use the default version.\n\n" +
|
"input to use the default version.\n\n" +
|
||||||
"Alternatively, if you want to continue using CodeQL CLI version " +
|
"Alternatively, if you want to continue using CodeQL CLI version " +
|
||||||
`${result.version}, you can replace 'github/codeql-action/*@v3' by ` +
|
`${result.version}, you can replace 'github/codeql-action/*@v${(0, actions_util_1.getActionVersion)().split(".")[0]}' by 'github/codeql-action/*@v${(0, actions_util_1.getActionVersion)()}' in your code scanning workflow to ` +
|
||||||
`'github/codeql-action/*@v${(0, actions_util_1.getActionVersion)()}' in your code scanning workflow to ` +
|
|
||||||
"continue using this version of the CodeQL Action.");
|
"continue using this version of the CodeQL Action.");
|
||||||
core.exportVariable(environment_1.EnvVar.SUPPRESS_DEPRECATED_SOON_WARNING, "true");
|
core.exportVariable(environment_1.EnvVar.SUPPRESS_DEPRECATED_SOON_WARNING, "true");
|
||||||
}
|
}
|
||||||
@@ -703,10 +717,13 @@ async function getCodeQLForCmd(cmd, checkVersion) {
|
|||||||
exports.getCodeQLForCmd = getCodeQLForCmd;
|
exports.getCodeQLForCmd = getCodeQLForCmd;
|
||||||
/**
|
/**
|
||||||
* Gets the options for `path` of `options` as an array of extra option strings.
|
* Gets the options for `path` of `options` as an array of extra option strings.
|
||||||
|
*
|
||||||
|
* @param ignoringOptions Options that should be ignored, for example because they have already
|
||||||
|
* been passed and it is an error to pass them more than once.
|
||||||
*/
|
*/
|
||||||
function getExtraOptionsFromEnv(paths) {
|
function getExtraOptionsFromEnv(paths, { ignoringOptions } = {}) {
|
||||||
const options = util.getExtraOptionsEnvParam();
|
const options = util.getExtraOptionsEnvParam();
|
||||||
return getExtraOptions(options, paths, []);
|
return getExtraOptions(options, paths, []).filter((option) => !ignoringOptions?.includes(option));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Gets `options` as an array of extra option strings.
|
* Gets `options` as an array of extra option strings.
|
||||||
@@ -754,16 +771,16 @@ exports.getExtraOptions = getExtraOptions;
|
|||||||
* (2) It avoids us hitting the limit of how much data we can send in our
|
* (2) It avoids us hitting the limit of how much data we can send in our
|
||||||
* status reports on GitHub.com.
|
* status reports on GitHub.com.
|
||||||
*/
|
*/
|
||||||
const maxErrorSize = 20000;
|
const maxErrorSize = 20_000;
|
||||||
async function runTool(cmd, args = [], opts = {}) {
|
async function runTool(cmd, args = [], opts = {}) {
|
||||||
let output = "";
|
let stdout = "";
|
||||||
let error = "";
|
let stderr = "";
|
||||||
process.stdout.write(`[command]${cmd} ${args.join(" ")}\n`);
|
process.stdout.write(`[command]${cmd} ${args.join(" ")}\n`);
|
||||||
const exitCode = await new toolrunner.ToolRunner(cmd, args, {
|
const exitCode = await new toolrunner.ToolRunner(cmd, args, {
|
||||||
ignoreReturnCode: true,
|
ignoreReturnCode: true,
|
||||||
listeners: {
|
listeners: {
|
||||||
stdout: (data) => {
|
stdout: (data) => {
|
||||||
output += data.toString("utf8");
|
stdout += data.toString("utf8");
|
||||||
if (!opts.noStreamStdout) {
|
if (!opts.noStreamStdout) {
|
||||||
process.stdout.write(data);
|
process.stdout.write(data);
|
||||||
}
|
}
|
||||||
@@ -775,7 +792,7 @@ async function runTool(cmd, args = [], opts = {}) {
|
|||||||
// Eg: if we have 20,000 the start index should be 2.
|
// Eg: if we have 20,000 the start index should be 2.
|
||||||
readStartIndex = data.length - maxErrorSize + 1;
|
readStartIndex = data.length - maxErrorSize + 1;
|
||||||
}
|
}
|
||||||
error += data.toString("utf8", readStartIndex);
|
stderr += data.toString("utf8", readStartIndex);
|
||||||
// Mimic the standard behavior of the toolrunner by writing stderr to stdout
|
// Mimic the standard behavior of the toolrunner by writing stderr to stdout
|
||||||
process.stdout.write(data);
|
process.stdout.write(data);
|
||||||
},
|
},
|
||||||
@@ -784,70 +801,10 @@ async function runTool(cmd, args = [], opts = {}) {
|
|||||||
...(opts.stdin ? { input: Buffer.from(opts.stdin || "") } : {}),
|
...(opts.stdin ? { input: Buffer.from(opts.stdin || "") } : {}),
|
||||||
}).exec();
|
}).exec();
|
||||||
if (exitCode !== 0) {
|
if (exitCode !== 0) {
|
||||||
throw new CommandInvocationError(cmd, args, exitCode, error, output);
|
const e = new cli_errors_1.CommandInvocationError(cmd, args, exitCode, stderr, stdout);
|
||||||
|
throw (0, cli_errors_1.wrapCliConfigurationError)(e);
|
||||||
}
|
}
|
||||||
return output;
|
return stdout;
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Provide a better error message from the stderr of a CLI invocation that failed with a fatal
|
|
||||||
* error.
|
|
||||||
*
|
|
||||||
* - If the CLI invocation failed with a fatal error, this returns that fatal error, followed by
|
|
||||||
* any fatal errors that occurred in plumbing commands.
|
|
||||||
* - If the CLI invocation did not fail with a fatal error, this returns `undefined`.
|
|
||||||
*
|
|
||||||
* ### Example
|
|
||||||
*
|
|
||||||
* ```
|
|
||||||
* Running TRAP import for CodeQL database at /home/runner/work/_temp/codeql_databases/javascript...
|
|
||||||
* A fatal error occurred: Evaluator heap must be at least 384.00 MiB
|
|
||||||
* A fatal error occurred: Dataset import for
|
|
||||||
* /home/runner/work/_temp/codeql_databases/javascript/db-javascript failed with code 2
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* becomes
|
|
||||||
*
|
|
||||||
* ```
|
|
||||||
* Encountered a fatal error while running "codeql-for-testing database finalize --finalize-dataset
|
|
||||||
* --threads=2 --ram=2048 db". Exit code was 32 and error was: A fatal error occurred: Dataset
|
|
||||||
* import for /home/runner/work/_temp/codeql_databases/javascript/db-javascript failed with code 2.
|
|
||||||
* Context: A fatal error occurred: Evaluator heap must be at least 384.00 MiB.
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* Where possible, this tries to summarize the error into a single line, as this displays better in
|
|
||||||
* the Actions UI.
|
|
||||||
*/
|
|
||||||
function extractFatalErrors(error) {
|
|
||||||
const fatalErrorRegex = /.*fatal error occurred:/gi;
|
|
||||||
let fatalErrors = [];
|
|
||||||
let lastFatalErrorIndex;
|
|
||||||
let match;
|
|
||||||
while ((match = fatalErrorRegex.exec(error)) !== null) {
|
|
||||||
if (lastFatalErrorIndex !== undefined) {
|
|
||||||
fatalErrors.push(error.slice(lastFatalErrorIndex, match.index).trim());
|
|
||||||
}
|
|
||||||
lastFatalErrorIndex = match.index;
|
|
||||||
}
|
|
||||||
if (lastFatalErrorIndex !== undefined) {
|
|
||||||
const lastError = error.slice(lastFatalErrorIndex).trim();
|
|
||||||
if (fatalErrors.length === 0) {
|
|
||||||
// No other errors
|
|
||||||
return lastError;
|
|
||||||
}
|
|
||||||
const isOneLiner = !fatalErrors.some((e) => e.includes("\n"));
|
|
||||||
if (isOneLiner) {
|
|
||||||
fatalErrors = fatalErrors.map(ensureEndsInPeriod);
|
|
||||||
}
|
|
||||||
return [
|
|
||||||
ensureEndsInPeriod(lastError),
|
|
||||||
"Context:",
|
|
||||||
...fatalErrors.reverse(),
|
|
||||||
].join(isOneLiner ? " " : "\n");
|
|
||||||
}
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
function ensureEndsInPeriod(text) {
|
|
||||||
return text[text.length - 1] === "." ? text : `${text}.`;
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Generates a code scanning configuration that is to be used for a scan.
|
* Generates a code scanning configuration that is to be used for a scan.
|
||||||
@@ -906,20 +863,6 @@ async function generateCodeScanningConfig(config, logger) {
|
|||||||
function cloneObject(obj) {
|
function cloneObject(obj) {
|
||||||
return JSON.parse(JSON.stringify(obj));
|
return JSON.parse(JSON.stringify(obj));
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Gets arguments for passing the code scanning configuration file to interpretation commands like
|
|
||||||
* `codeql database interpret-results` and `codeql database export-diagnostics`.
|
|
||||||
*
|
|
||||||
* Returns an empty list if a code scanning configuration file was not generated by the CLI.
|
|
||||||
*/
|
|
||||||
async function getCodeScanningConfigExportArguments(config, codeql) {
|
|
||||||
const codeScanningConfigPath = getGeneratedCodeScanningConfigPath(config);
|
|
||||||
if (fs.existsSync(codeScanningConfigPath) &&
|
|
||||||
(await util.codeQlVersionAbove(codeql, exports.CODEQL_VERSION_EXPORT_CODE_SCANNING_CONFIG))) {
|
|
||||||
return ["--sarif-codescanning-config", codeScanningConfigPath];
|
|
||||||
}
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
// This constant sets the size of each TRAP cache in megabytes.
|
// This constant sets the size of each TRAP cache in megabytes.
|
||||||
const TRAP_CACHE_SIZE_MB = 1024;
|
const TRAP_CACHE_SIZE_MB = 1024;
|
||||||
async function getTrapCachingExtractorConfigArgs(config) {
|
async function getTrapCachingExtractorConfigArgs(config) {
|
||||||
@@ -950,18 +893,6 @@ function getGeneratedCodeScanningConfigPath(config) {
|
|||||||
return path.resolve(config.tempDir, "user-config.yaml");
|
return path.resolve(config.tempDir, "user-config.yaml");
|
||||||
}
|
}
|
||||||
exports.getGeneratedCodeScanningConfigPath = getGeneratedCodeScanningConfigPath;
|
exports.getGeneratedCodeScanningConfigPath = getGeneratedCodeScanningConfigPath;
|
||||||
function isNoCodeFoundError(e) {
|
|
||||||
/**
|
|
||||||
* Earlier versions of the JavaScript extractor (pre-CodeQL 2.12.0) extract externs even if no
|
|
||||||
* source code was found. This means that we don't get the no code found error from
|
|
||||||
* `codeql database finalize`. To ensure users get a good error message, we detect this manually
|
|
||||||
* here, and upon detection override the error message.
|
|
||||||
*
|
|
||||||
* This can be removed once support for CodeQL 2.11.6 is removed.
|
|
||||||
*/
|
|
||||||
const javascriptNoCodeFoundWarning = "No JavaScript or TypeScript code found.";
|
|
||||||
return e.exitCode === 32 || e.stderr.includes(javascriptNoCodeFoundWarning);
|
|
||||||
}
|
|
||||||
async function isDiagnosticsExportInvalidSarifFixed(codeql) {
|
async function isDiagnosticsExportInvalidSarifFixed(codeql) {
|
||||||
return await util.codeQlVersionAbove(codeql, exports.CODEQL_VERSION_DIAGNOSTICS_EXPORT_FIXED);
|
return await util.codeQlVersionAbove(codeql, exports.CODEQL_VERSION_DIAGNOSTICS_EXPORT_FIXED);
|
||||||
}
|
}
|
||||||
@@ -978,4 +909,30 @@ async function isSublanguageFileCoverageEnabled(config, codeql) {
|
|||||||
semver.gte(config.gitHubVersion.version, "3.12.0")) &&
|
semver.gte(config.gitHubVersion.version, "3.12.0")) &&
|
||||||
(await util.codeQlVersionAbove(codeql, exports.CODEQL_VERSION_SUBLANGUAGE_FILE_COVERAGE)));
|
(await util.codeQlVersionAbove(codeql, exports.CODEQL_VERSION_SUBLANGUAGE_FILE_COVERAGE)));
|
||||||
}
|
}
|
||||||
|
async function getCodeScanningQueryHelpArguments(codeql) {
|
||||||
|
if (await util.codeQlVersionAbove(codeql, CODEQL_VERSION_INCLUDE_QUERY_HELP)) {
|
||||||
|
return ["--sarif-include-query-help=always"];
|
||||||
|
}
|
||||||
|
return ["--sarif-add-query-help"];
|
||||||
|
}
|
||||||
|
function getExtractionVerbosityArguments(enableDebugLogging) {
|
||||||
|
return enableDebugLogging
|
||||||
|
? [`--verbosity=${EXTRACTION_DEBUG_MODE_VERBOSITY}`]
|
||||||
|
: [];
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Updates the `JAVA_TOOL_OPTIONS` environment variable to resolve an issue with Azure Pipelines
|
||||||
|
* timing out connections after 4 minutes and Maven not properly handling closed connections.
|
||||||
|
*
|
||||||
|
* Without the fix, long build processes will timeout when pulling down Java packages
|
||||||
|
* https://developercommunity.visualstudio.com/content/problem/292284/maven-hosted-agent-connection-timeout.html
|
||||||
|
*/
|
||||||
|
function applyAutobuildAzurePipelinesTimeoutFix() {
|
||||||
|
const javaToolOptions = process.env["JAVA_TOOL_OPTIONS"] || "";
|
||||||
|
process.env["JAVA_TOOL_OPTIONS"] = [
|
||||||
|
...javaToolOptions.split(/\s+/),
|
||||||
|
"-Dhttp.keepAlive=false",
|
||||||
|
"-Dmaven.wagon.http.pool=false",
|
||||||
|
].join(" ");
|
||||||
|
}
|
||||||
//# sourceMappingURL=codeql.js.map
|
//# sourceMappingURL=codeql.js.map
|
||||||
File diff suppressed because one or more lines are too long
196
lib/codeql.test.js
generated
196
lib/codeql.test.js
generated
@@ -37,37 +37,23 @@ const yaml = __importStar(require("js-yaml"));
|
|||||||
const nock_1 = __importDefault(require("nock"));
|
const nock_1 = __importDefault(require("nock"));
|
||||||
const sinon = __importStar(require("sinon"));
|
const sinon = __importStar(require("sinon"));
|
||||||
const actionsUtil = __importStar(require("./actions-util"));
|
const actionsUtil = __importStar(require("./actions-util"));
|
||||||
|
const cli_errors_1 = require("./cli-errors");
|
||||||
const codeql = __importStar(require("./codeql"));
|
const codeql = __importStar(require("./codeql"));
|
||||||
const defaults = __importStar(require("./defaults.json"));
|
const defaults = __importStar(require("./defaults.json"));
|
||||||
const languages_1 = require("./languages");
|
const languages_1 = require("./languages");
|
||||||
const logging_1 = require("./logging");
|
const logging_1 = require("./logging");
|
||||||
const setup_codeql_1 = require("./setup-codeql");
|
const setup_codeql_1 = require("./setup-codeql");
|
||||||
const testing_utils_1 = require("./testing-utils");
|
const testing_utils_1 = require("./testing-utils");
|
||||||
|
const tools_features_1 = require("./tools-features");
|
||||||
const util = __importStar(require("./util"));
|
const util = __importStar(require("./util"));
|
||||||
const util_1 = require("./util");
|
const util_1 = require("./util");
|
||||||
(0, testing_utils_1.setupTests)(ava_1.default);
|
(0, testing_utils_1.setupTests)(ava_1.default);
|
||||||
let stubConfig;
|
let stubConfig;
|
||||||
ava_1.default.beforeEach(() => {
|
ava_1.default.beforeEach(() => {
|
||||||
(0, util_1.initializeEnvironment)("1.2.3");
|
(0, util_1.initializeEnvironment)("1.2.3");
|
||||||
stubConfig = {
|
stubConfig = (0, testing_utils_1.createTestConfig)({
|
||||||
languages: [languages_1.Language.cpp],
|
languages: [languages_1.Language.cpp],
|
||||||
originalUserInput: {},
|
});
|
||||||
tempDir: "",
|
|
||||||
codeQLCmd: "",
|
|
||||||
gitHubVersion: {
|
|
||||||
type: util.GitHubVariant.DOTCOM,
|
|
||||||
},
|
|
||||||
dbLocation: "",
|
|
||||||
debugMode: false,
|
|
||||||
debugArtifactName: util.DEFAULT_DEBUG_ARTIFACT_NAME,
|
|
||||||
debugDatabaseName: util.DEFAULT_DEBUG_DATABASE_NAME,
|
|
||||||
augmentationProperties: {
|
|
||||||
packsInputCombines: false,
|
|
||||||
queriesInputCombines: false,
|
|
||||||
},
|
|
||||||
trapCaches: {},
|
|
||||||
trapCacheDownloadTime: 0,
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
async function installIntoToolcache({ apiDetails = testing_utils_1.SAMPLE_DOTCOM_API_DETAILS, cliVersion, isPinned, tagName, tmpDir, }) {
|
async function installIntoToolcache({ apiDetails = testing_utils_1.SAMPLE_DOTCOM_API_DETAILS, cliVersion, isPinned, tagName, tmpDir, }) {
|
||||||
const url = (0, testing_utils_1.mockBundleDownloadApi)({ apiDetails, isPinned, tagName });
|
const url = (0, testing_utils_1.mockBundleDownloadApi)({ apiDetails, isPinned, tagName });
|
||||||
@@ -276,7 +262,7 @@ for (const toolcacheVersion of [
|
|||||||
mockApiDetails(testing_utils_1.SAMPLE_DOTCOM_API_DETAILS);
|
mockApiDetails(testing_utils_1.SAMPLE_DOTCOM_API_DETAILS);
|
||||||
sinon.stub(actionsUtil, "isRunningLocalAction").returns(true);
|
sinon.stub(actionsUtil, "isRunningLocalAction").returns(true);
|
||||||
const releasesApiMock = mockReleaseApi({
|
const releasesApiMock = mockReleaseApi({
|
||||||
assetNames: ["cli-version-2.12.2.txt"],
|
assetNames: ["cli-version-2.12.6.txt"],
|
||||||
tagName: "codeql-bundle-20230203",
|
tagName: "codeql-bundle-20230203",
|
||||||
});
|
});
|
||||||
(0, testing_utils_1.mockBundleDownloadApi)({
|
(0, testing_utils_1.mockBundleDownloadApi)({
|
||||||
@@ -329,7 +315,7 @@ const injectedConfigMacro = ava_1.default.macro({
|
|||||||
tempDir,
|
tempDir,
|
||||||
augmentationProperties,
|
augmentationProperties,
|
||||||
};
|
};
|
||||||
await codeqlObject.databaseInitCluster(thisStubConfig, "", undefined, undefined, (0, logging_1.getRunnerLogger)(true));
|
await codeqlObject.databaseInitCluster(thisStubConfig, "", undefined, undefined, (0, testing_utils_1.createFeatures)([]), (0, logging_1.getRunnerLogger)(true));
|
||||||
const args = runnerConstructorStub.firstCall.args[1];
|
const args = runnerConstructorStub.firstCall.args[1];
|
||||||
// should have used an config file
|
// should have used an config file
|
||||||
const configArg = args.find((arg) => arg.startsWith("--codescanning-config="));
|
const configArg = args.find((arg) => arg.startsWith("--codescanning-config="));
|
||||||
@@ -464,10 +450,8 @@ const injectedConfigMacro = ava_1.default.macro({
|
|||||||
await util.withTmpDir(async (tempDir) => {
|
await util.withTmpDir(async (tempDir) => {
|
||||||
const runnerConstructorStub = stubToolRunnerConstructor();
|
const runnerConstructorStub = stubToolRunnerConstructor();
|
||||||
const codeqlObject = await codeql.getCodeQLForTesting();
|
const codeqlObject = await codeql.getCodeQLForTesting();
|
||||||
sinon
|
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.6"));
|
||||||
.stub(codeqlObject, "getVersion")
|
await codeqlObject.databaseInitCluster({ ...stubConfig, tempDir }, "", undefined, "/path/to/qlconfig.yml", (0, testing_utils_1.createFeatures)([]), (0, logging_1.getRunnerLogger)(true));
|
||||||
.resolves((0, testing_utils_1.makeVersionInfo)(codeql.CODEQL_VERSION_INIT_WITH_QLCONFIG));
|
|
||||||
await codeqlObject.databaseInitCluster({ ...stubConfig, tempDir }, "", undefined, "/path/to/qlconfig.yml", (0, logging_1.getRunnerLogger)(true));
|
|
||||||
const args = runnerConstructorStub.firstCall.args[1];
|
const args = runnerConstructorStub.firstCall.args[1];
|
||||||
// should have used a config file
|
// should have used a config file
|
||||||
const hasCodeScanningConfigArg = args.some((arg) => arg.startsWith("--codescanning-config="));
|
const hasCodeScanningConfigArg = args.some((arg) => arg.startsWith("--codescanning-config="));
|
||||||
@@ -477,30 +461,13 @@ const injectedConfigMacro = ava_1.default.macro({
|
|||||||
t.truthy(hasQlconfigArg, "Should have injected a codescanning config");
|
t.truthy(hasQlconfigArg, "Should have injected a codescanning config");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("passes a code scanning config BUT NOT a qlconfig to the CLI for CodeQL v2.12.2", async (t) => {
|
|
||||||
await util.withTmpDir(async (tempDir) => {
|
|
||||||
const runnerConstructorStub = stubToolRunnerConstructor();
|
|
||||||
const codeqlObject = await codeql.getCodeQLForTesting();
|
|
||||||
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.2"));
|
|
||||||
await codeqlObject.databaseInitCluster({ ...stubConfig, tempDir }, "", undefined, "/path/to/qlconfig.yml", (0, logging_1.getRunnerLogger)(true));
|
|
||||||
const args = runnerConstructorStub.firstCall.args[1];
|
|
||||||
// should have used a config file
|
|
||||||
const hasCodeScanningConfigArg = args.some((arg) => arg.startsWith("--codescanning-config="));
|
|
||||||
t.true(hasCodeScanningConfigArg, "Should have injected a codescanning config");
|
|
||||||
// should not have passed a qlconfig file
|
|
||||||
const hasQlconfigArg = args.some((arg) => arg.startsWith("--qlconfig-file="));
|
|
||||||
t.false(hasQlconfigArg, "should NOT have injected a qlconfig");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
(0, ava_1.default)("does not pass a qlconfig to the CLI when it is undefined", async (t) => {
|
(0, ava_1.default)("does not pass a qlconfig to the CLI when it is undefined", async (t) => {
|
||||||
await util.withTmpDir(async (tempDir) => {
|
await util.withTmpDir(async (tempDir) => {
|
||||||
const runnerConstructorStub = stubToolRunnerConstructor();
|
const runnerConstructorStub = stubToolRunnerConstructor();
|
||||||
const codeqlObject = await codeql.getCodeQLForTesting();
|
const codeqlObject = await codeql.getCodeQLForTesting();
|
||||||
sinon
|
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.6"));
|
||||||
.stub(codeqlObject, "getVersion")
|
|
||||||
.resolves((0, testing_utils_1.makeVersionInfo)(codeql.CODEQL_VERSION_INIT_WITH_QLCONFIG));
|
|
||||||
await codeqlObject.databaseInitCluster({ ...stubConfig, tempDir }, "", undefined, undefined, // undefined qlconfigFile
|
await codeqlObject.databaseInitCluster({ ...stubConfig, tempDir }, "", undefined, undefined, // undefined qlconfigFile
|
||||||
(0, logging_1.getRunnerLogger)(true));
|
(0, testing_utils_1.createFeatures)([]), (0, logging_1.getRunnerLogger)(true));
|
||||||
const args = runnerConstructorStub.firstCall.args[1];
|
const args = runnerConstructorStub.firstCall.args[1];
|
||||||
const hasQlconfigArg = args.some((arg) => arg.startsWith("--qlconfig-file="));
|
const hasQlconfigArg = args.some((arg) => arg.startsWith("--qlconfig-file="));
|
||||||
t.false(hasQlconfigArg, "should NOT have injected a qlconfig");
|
t.false(hasQlconfigArg, "should NOT have injected a qlconfig");
|
||||||
@@ -508,7 +475,17 @@ const injectedConfigMacro = ava_1.default.macro({
|
|||||||
});
|
});
|
||||||
const NEW_ANALYSIS_SUMMARY_TEST_CASES = [
|
const NEW_ANALYSIS_SUMMARY_TEST_CASES = [
|
||||||
{
|
{
|
||||||
codeqlVersion: "2.15.0",
|
codeqlVersion: (0, testing_utils_1.makeVersionInfo)("2.15.0", {
|
||||||
|
[tools_features_1.ToolsFeature.AnalysisSummaryV2IsDefault]: true,
|
||||||
|
}),
|
||||||
|
githubVersion: {
|
||||||
|
type: util.GitHubVariant.DOTCOM,
|
||||||
|
},
|
||||||
|
flagPassed: false,
|
||||||
|
negativeFlagPassed: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
codeqlVersion: (0, testing_utils_1.makeVersionInfo)("2.15.0"),
|
||||||
githubVersion: {
|
githubVersion: {
|
||||||
type: util.GitHubVariant.DOTCOM,
|
type: util.GitHubVariant.DOTCOM,
|
||||||
},
|
},
|
||||||
@@ -516,7 +493,7 @@ const NEW_ANALYSIS_SUMMARY_TEST_CASES = [
|
|||||||
negativeFlagPassed: false,
|
negativeFlagPassed: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
codeqlVersion: "2.15.0",
|
codeqlVersion: (0, testing_utils_1.makeVersionInfo)("2.15.0"),
|
||||||
githubVersion: {
|
githubVersion: {
|
||||||
type: util.GitHubVariant.GHES,
|
type: util.GitHubVariant.GHES,
|
||||||
version: "3.9.0",
|
version: "3.9.0",
|
||||||
@@ -525,16 +502,7 @@ const NEW_ANALYSIS_SUMMARY_TEST_CASES = [
|
|||||||
negativeFlagPassed: false,
|
negativeFlagPassed: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
codeqlVersion: "2.15.0",
|
codeqlVersion: (0, testing_utils_1.makeVersionInfo)("2.14.6"),
|
||||||
githubVersion: {
|
|
||||||
type: util.GitHubVariant.GHES,
|
|
||||||
version: "3.8.6",
|
|
||||||
},
|
|
||||||
flagPassed: false,
|
|
||||||
negativeFlagPassed: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
codeqlVersion: "2.14.6",
|
|
||||||
githubVersion: {
|
githubVersion: {
|
||||||
type: util.GitHubVariant.DOTCOM,
|
type: util.GitHubVariant.DOTCOM,
|
||||||
},
|
},
|
||||||
@@ -547,12 +515,10 @@ for (const { codeqlVersion, flagPassed, githubVersion, negativeFlagPassed, } of
|
|||||||
? "--new-analysis-summary"
|
? "--new-analysis-summary"
|
||||||
: negativeFlagPassed
|
: negativeFlagPassed
|
||||||
? "--no-new-analysis-summary"
|
? "--no-new-analysis-summary"
|
||||||
: "nothing"} for CodeQL CLI v${codeqlVersion} and ${util.GitHubVariant[githubVersion.type]} ${githubVersion.version ? ` ${githubVersion.version}` : ""}`, async (t) => {
|
: "nothing"} for CodeQL version ${JSON.stringify(codeqlVersion)} and ${util.GitHubVariant[githubVersion.type]} ${githubVersion.version ? ` ${githubVersion.version}` : ""}`, async (t) => {
|
||||||
const runnerConstructorStub = stubToolRunnerConstructor();
|
const runnerConstructorStub = stubToolRunnerConstructor();
|
||||||
const codeqlObject = await codeql.getCodeQLForTesting();
|
const codeqlObject = await codeql.getCodeQLForTesting();
|
||||||
sinon
|
sinon.stub(codeqlObject, "getVersion").resolves(codeqlVersion);
|
||||||
.stub(codeqlObject, "getVersion")
|
|
||||||
.resolves((0, testing_utils_1.makeVersionInfo)(codeqlVersion));
|
|
||||||
// safeWhich throws because of the test CodeQL object.
|
// safeWhich throws because of the test CodeQL object.
|
||||||
sinon.stub(safeWhich, "safeWhich").resolves("");
|
sinon.stub(safeWhich, "safeWhich").resolves("");
|
||||||
await codeqlObject.databaseInterpretResults("", [], "", "", "", "-v", "", Object.assign({}, stubConfig, { gitHubVersion: githubVersion }), (0, testing_utils_1.createFeatures)([]), (0, logging_1.getRunnerLogger)(true));
|
await codeqlObject.databaseInterpretResults("", [], "", "", "", "-v", "", Object.assign({}, stubConfig, { gitHubVersion: githubVersion }), (0, testing_utils_1.createFeatures)([]), (0, logging_1.getRunnerLogger)(true));
|
||||||
@@ -560,40 +526,15 @@ for (const { codeqlVersion, flagPassed, githubVersion, negativeFlagPassed, } of
|
|||||||
t.is(runnerConstructorStub.firstCall.args[1].includes("--no-new-analysis-summary"), negativeFlagPassed, `--no-new-analysis-summary should${negativeFlagPassed ? "" : "n't"} be passed`);
|
t.is(runnerConstructorStub.firstCall.args[1].includes("--no-new-analysis-summary"), negativeFlagPassed, `--no-new-analysis-summary should${negativeFlagPassed ? "" : "n't"} be passed`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
(0, ava_1.default)("database finalize recognises JavaScript no code found error on CodeQL 2.11.6", async (t) => {
|
(0, ava_1.default)("database finalize does not override no code found error on CodeQL 2.12.6", async (t) => {
|
||||||
stubToolRunnerConstructor(1, `2020-09-07T17:39:53.9050522Z [2020-09-07 17:39:53] [build] Done extracting /opt/hostedtoolcache/CodeQL/0.0.0-20200630/x64/codeql/javascript/tools/data/externs/web/ie_vml.js (3 ms)
|
|
||||||
2020-09-07T17:39:53.9051849Z [2020-09-07 17:39:53] [build-err] No JavaScript or TypeScript code found.
|
|
||||||
2020-09-07T17:39:53.9052444Z [2020-09-07 17:39:53] [build-err] No JavaScript or TypeScript code found.
|
|
||||||
2020-09-07T17:39:53.9251124Z [2020-09-07 17:39:53] [ERROR] Spawned process exited abnormally (code 255; tried to run: [/opt/hostedtoolcache/CodeQL/0.0.0-20200630/x64/codeql/javascript/tools/autobuild.sh])`);
|
|
||||||
const codeqlObject = await codeql.getCodeQLForTesting();
|
|
||||||
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.11.6"));
|
|
||||||
// safeWhich throws because of the test CodeQL object.
|
|
||||||
sinon.stub(safeWhich, "safeWhich").resolves("");
|
|
||||||
await t.throwsAsync(async () => await codeqlObject.finalizeDatabase("", "", ""), {
|
|
||||||
message: "No code found during the build. Please see: " +
|
|
||||||
"https://gh.io/troubleshooting-code-scanning/no-source-code-seen-during-build",
|
|
||||||
});
|
|
||||||
});
|
|
||||||
(0, ava_1.default)("database finalize overrides no code found error on CodeQL 2.11.6", async (t) => {
|
|
||||||
stubToolRunnerConstructor(32);
|
|
||||||
const codeqlObject = await codeql.getCodeQLForTesting();
|
|
||||||
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.11.6"));
|
|
||||||
// safeWhich throws because of the test CodeQL object.
|
|
||||||
sinon.stub(safeWhich, "safeWhich").resolves("");
|
|
||||||
await t.throwsAsync(async () => await codeqlObject.finalizeDatabase("", "", ""), {
|
|
||||||
message: "No code found during the build. Please see: " +
|
|
||||||
"https://gh.io/troubleshooting-code-scanning/no-source-code-seen-during-build",
|
|
||||||
});
|
|
||||||
});
|
|
||||||
(0, ava_1.default)("database finalize does not override no code found error on CodeQL 2.12.4", async (t) => {
|
|
||||||
const cliMessage = "CodeQL did not detect any code written in languages supported by CodeQL. Review our troubleshooting guide at " +
|
const cliMessage = "CodeQL did not detect any code written in languages supported by CodeQL. Review our troubleshooting guide at " +
|
||||||
"https://gh.io/troubleshooting-code-scanning/no-source-code-seen-during-build.";
|
"https://gh.io/troubleshooting-code-scanning/no-source-code-seen-during-build.";
|
||||||
stubToolRunnerConstructor(32, cliMessage);
|
stubToolRunnerConstructor(32, cliMessage);
|
||||||
const codeqlObject = await codeql.getCodeQLForTesting();
|
const codeqlObject = await codeql.getCodeQLForTesting();
|
||||||
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.4"));
|
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.6"));
|
||||||
// safeWhich throws because of the test CodeQL object.
|
// safeWhich throws because of the test CodeQL object.
|
||||||
sinon.stub(safeWhich, "safeWhich").resolves("");
|
sinon.stub(safeWhich, "safeWhich").resolves("");
|
||||||
await t.throwsAsync(async () => await codeqlObject.finalizeDatabase("db", "--threads=2", "--ram=2048"), {
|
await t.throwsAsync(async () => await codeqlObject.finalizeDatabase("db", "--threads=2", "--ram=2048", false), {
|
||||||
message: 'Encountered a fatal error while running "codeql-for-testing database finalize --finalize-dataset --threads=2 --ram=2048 db". ' +
|
message: 'Encountered a fatal error while running "codeql-for-testing database finalize --finalize-dataset --threads=2 --ram=2048 db". ' +
|
||||||
`Exit code was 32 and last log line was: ${cliMessage} See the logs for more details.`,
|
`Exit code was 32 and last log line was: ${cliMessage} See the logs for more details.`,
|
||||||
});
|
});
|
||||||
@@ -605,26 +546,91 @@ for (const { codeqlVersion, flagPassed, githubVersion, negativeFlagPassed, } of
|
|||||||
`${heapError}\n${datasetImportError}.`;
|
`${heapError}\n${datasetImportError}.`;
|
||||||
stubToolRunnerConstructor(32, cliStderr);
|
stubToolRunnerConstructor(32, cliStderr);
|
||||||
const codeqlObject = await codeql.getCodeQLForTesting();
|
const codeqlObject = await codeql.getCodeQLForTesting();
|
||||||
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.4"));
|
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.6"));
|
||||||
// safeWhich throws because of the test CodeQL object.
|
// safeWhich throws because of the test CodeQL object.
|
||||||
sinon.stub(safeWhich, "safeWhich").resolves("");
|
sinon.stub(safeWhich, "safeWhich").resolves("");
|
||||||
await t.throwsAsync(async () => await codeqlObject.finalizeDatabase("db", "--threads=2", "--ram=2048"), {
|
await t.throwsAsync(async () => await codeqlObject.finalizeDatabase("db", "--threads=2", "--ram=2048", false), {
|
||||||
message: 'Encountered a fatal error while running "codeql-for-testing database finalize --finalize-dataset --threads=2 --ram=2048 db". ' +
|
instanceOf: util.ConfigurationError,
|
||||||
`Exit code was 32 and error was: ${datasetImportError}. Context: ${heapError}. See the logs for more details.`,
|
message: new RegExp('Encountered a fatal error while running \\"codeql-for-testing database finalize --finalize-dataset --threads=2 --ram=2048 db\\"\\. ' +
|
||||||
|
`Exit code was 32 and error was: ${datasetImportError.replaceAll(".", "\\.")}\\. Context: ${heapError.replaceAll(".", "\\.")}\\. See the logs for more details\\.`),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
(0, ava_1.default)("runTool summarizes autobuilder errors", async (t) => {
|
||||||
|
const stderr = `
|
||||||
|
[2019-09-18 12:00:00] [autobuild] A non-error message
|
||||||
|
[2019-09-18 12:00:00] Untagged message
|
||||||
|
[2019-09-18 12:00:00] [autobuild] [ERROR] Start of the error message
|
||||||
|
[2019-09-18 12:00:00] [autobuild] An interspersed non-error message
|
||||||
|
[2019-09-18 12:00:01] [autobuild] [ERROR] Some more context about the error message
|
||||||
|
[2019-09-18 12:00:01] [autobuild] [ERROR] continued
|
||||||
|
[2019-09-18 12:00:01] [autobuild] [ERROR] and finished here.
|
||||||
|
[2019-09-18 12:00:01] [autobuild] A non-error message
|
||||||
|
`;
|
||||||
|
stubToolRunnerConstructor(1, stderr);
|
||||||
|
const codeqlObject = await codeql.getCodeQLForTesting();
|
||||||
|
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.6"));
|
||||||
|
sinon.stub(codeqlObject, "resolveExtractor").resolves("/path/to/extractor");
|
||||||
|
// safeWhich throws because of the test CodeQL object.
|
||||||
|
sinon.stub(safeWhich, "safeWhich").resolves("");
|
||||||
|
await t.throwsAsync(async () => await codeqlObject.runAutobuild(stubConfig, languages_1.Language.java, (0, testing_utils_1.createFeatures)([])), {
|
||||||
|
instanceOf: cli_errors_1.CommandInvocationError,
|
||||||
|
message: "We were unable to automatically build your code. Please provide manual build steps. " +
|
||||||
|
"For more information, see " +
|
||||||
|
"https://docs.github.com/en/code-security/code-scanning/troubleshooting-code-scanning/automatic-build-failed. " +
|
||||||
|
"Encountered the following error: Start of the error message\n" +
|
||||||
|
" Some more context about the error message\n" +
|
||||||
|
" continued\n" +
|
||||||
|
" and finished here.",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
(0, ava_1.default)("runTool truncates long autobuilder errors", async (t) => {
|
||||||
|
const stderr = Array.from({ length: 20 }, (_, i) => `[2019-09-18 12:00:00] [autobuild] [ERROR] line${i + 1}`).join("\n");
|
||||||
|
stubToolRunnerConstructor(1, stderr);
|
||||||
|
const codeqlObject = await codeql.getCodeQLForTesting();
|
||||||
|
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.6"));
|
||||||
|
sinon.stub(codeqlObject, "resolveExtractor").resolves("/path/to/extractor");
|
||||||
|
// safeWhich throws because of the test CodeQL object.
|
||||||
|
sinon.stub(safeWhich, "safeWhich").resolves("");
|
||||||
|
await t.throwsAsync(async () => await codeqlObject.runAutobuild(stubConfig, languages_1.Language.java, (0, testing_utils_1.createFeatures)([])), {
|
||||||
|
instanceOf: cli_errors_1.CommandInvocationError,
|
||||||
|
message: "We were unable to automatically build your code. Please provide manual build steps. " +
|
||||||
|
"For more information, see " +
|
||||||
|
"https://docs.github.com/en/code-security/code-scanning/troubleshooting-code-scanning/automatic-build-failed. " +
|
||||||
|
"Encountered the following error: " +
|
||||||
|
`${Array.from({ length: 10 }, (_, i) => `line${i + 1}`).join("\n")}\n(truncated)`,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("runTool outputs last line of stderr if fatal error could not be found", async (t) => {
|
(0, ava_1.default)("runTool outputs last line of stderr if fatal error could not be found", async (t) => {
|
||||||
const cliStderr = "line1\nline2\nline3\nline4\nline5";
|
const cliStderr = "line1\nline2\nline3\nline4\nline5";
|
||||||
stubToolRunnerConstructor(32, cliStderr);
|
stubToolRunnerConstructor(32, cliStderr);
|
||||||
const codeqlObject = await codeql.getCodeQLForTesting();
|
const codeqlObject = await codeql.getCodeQLForTesting();
|
||||||
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.4"));
|
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.6"));
|
||||||
// safeWhich throws because of the test CodeQL object.
|
// safeWhich throws because of the test CodeQL object.
|
||||||
sinon.stub(safeWhich, "safeWhich").resolves("");
|
sinon.stub(safeWhich, "safeWhich").resolves("");
|
||||||
await t.throwsAsync(async () => await codeqlObject.finalizeDatabase("db", "--threads=2", "--ram=2048"), {
|
await t.throwsAsync(async () => await codeqlObject.finalizeDatabase("db", "--threads=2", "--ram=2048", false), {
|
||||||
message: 'Encountered a fatal error while running "codeql-for-testing database finalize --finalize-dataset --threads=2 --ram=2048 db". ' +
|
instanceOf: util.ConfigurationError,
|
||||||
"Exit code was 32 and last log line was: line5. See the logs for more details.",
|
message: new RegExp('Encountered a fatal error while running \\"codeql-for-testing database finalize --finalize-dataset --threads=2 --ram=2048 db\\"\\. ' +
|
||||||
|
"Exit code was 32 and last log line was: line5\\. See the logs for more details\\."),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
(0, ava_1.default)("Avoids duplicating --overwrite flag if specified in CODEQL_ACTION_EXTRA_OPTIONS", async (t) => {
|
||||||
|
const runnerConstructorStub = stubToolRunnerConstructor();
|
||||||
|
const codeqlObject = await codeql.getCodeQLForTesting();
|
||||||
|
sinon.stub(codeqlObject, "getVersion").resolves((0, testing_utils_1.makeVersionInfo)("2.12.6"));
|
||||||
|
// safeWhich throws because of the test CodeQL object.
|
||||||
|
sinon.stub(safeWhich, "safeWhich").resolves("");
|
||||||
|
process.env["CODEQL_ACTION_EXTRA_OPTIONS"] =
|
||||||
|
'{ "database": { "init": ["--overwrite"] } }';
|
||||||
|
await codeqlObject.databaseInitCluster(stubConfig, "sourceRoot", undefined, undefined, (0, testing_utils_1.createFeatures)([]), (0, logging_1.getRunnerLogger)(false));
|
||||||
|
t.true(runnerConstructorStub.calledOnce);
|
||||||
|
const args = runnerConstructorStub.firstCall.args[1];
|
||||||
|
t.is(args.filter((option) => option === "--overwrite").length, 1, "--overwrite should only be passed once");
|
||||||
|
// Clean up
|
||||||
|
const configArg = args.find((arg) => arg.startsWith("--codescanning-config="));
|
||||||
|
t.truthy(configArg, "Should have injected a codescanning config");
|
||||||
|
const configFile = configArg.split("=")[1];
|
||||||
|
await (0, del_1.default)(configFile, { force: true });
|
||||||
|
});
|
||||||
function stubToolRunnerConstructor(exitCode = 0, stderr) {
|
function stubToolRunnerConstructor(exitCode = 0, stderr) {
|
||||||
const runnerObjectStub = sinon.createStubInstance(toolrunner.ToolRunner);
|
const runnerObjectStub = sinon.createStubInstance(toolrunner.ToolRunner);
|
||||||
const runnerConstructorStub = sinon.stub(toolrunner, "ToolRunner");
|
const runnerConstructorStub = sinon.stub(toolrunner, "ToolRunner");
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
122
lib/config-utils.js
generated
122
lib/config-utils.js
generated
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.wrapEnvironment = exports.generateRegistries = exports.getConfig = exports.getPathToParsedConfigFile = exports.initConfig = exports.validatePackSpecification = exports.parsePacksSpecification = exports.parsePacksFromInput = exports.calculateAugmentation = exports.getDefaultConfig = exports.getRawLanguages = exports.getLanguageAliases = exports.getLanguages = exports.getLanguagesInRepo = exports.getUnknownLanguagesError = exports.getNoLanguagesError = exports.getConfigFileDirectoryGivenMessage = exports.getConfigFileFormatInvalidMessage = exports.getConfigFileRepoFormatInvalidMessage = exports.getConfigFileDoesNotExistErrorMessage = exports.getConfigFileOutsideWorkspaceErrorMessage = exports.getPacksStrInvalid = exports.defaultAugmentationProperties = void 0;
|
exports.parseBuildModeInput = exports.wrapEnvironment = exports.generateRegistries = exports.getConfig = exports.getPathToParsedConfigFile = exports.initConfig = exports.validatePackSpecification = exports.parsePacksSpecification = exports.parsePacksFromInput = exports.calculateAugmentation = exports.getDefaultConfig = exports.getRawLanguages = exports.getLanguageAliases = exports.getLanguages = exports.getLanguagesInRepo = exports.getUnknownLanguagesError = exports.getNoLanguagesError = exports.getConfigFileDirectoryGivenMessage = exports.getConfigFileFormatInvalidMessage = exports.getConfigFileRepoFormatInvalidMessage = exports.getConfigFileDoesNotExistErrorMessage = exports.getConfigFileOutsideWorkspaceErrorMessage = exports.getPacksStrInvalid = exports.defaultAugmentationProperties = void 0;
|
||||||
const fs = __importStar(require("fs"));
|
const fs = __importStar(require("fs"));
|
||||||
const path = __importStar(require("path"));
|
const path = __importStar(require("path"));
|
||||||
const perf_hooks_1 = require("perf_hooks");
|
const perf_hooks_1 = require("perf_hooks");
|
||||||
@@ -31,6 +31,7 @@ const yaml = __importStar(require("js-yaml"));
|
|||||||
const semver = __importStar(require("semver"));
|
const semver = __importStar(require("semver"));
|
||||||
const api = __importStar(require("./api-client"));
|
const api = __importStar(require("./api-client"));
|
||||||
const codeql_1 = require("./codeql");
|
const codeql_1 = require("./codeql");
|
||||||
|
const feature_flags_1 = require("./feature-flags");
|
||||||
const languages_1 = require("./languages");
|
const languages_1 = require("./languages");
|
||||||
const trap_caching_1 = require("./trap-caching");
|
const trap_caching_1 = require("./trap-caching");
|
||||||
const util_1 = require("./util");
|
const util_1 = require("./util");
|
||||||
@@ -148,7 +149,7 @@ async function getLanguages(codeQL, languagesInput, repository, logger) {
|
|||||||
// If the languages parameter was not given and no languages were
|
// If the languages parameter was not given and no languages were
|
||||||
// detected then fail here as this is a workflow configuration error.
|
// detected then fail here as this is a workflow configuration error.
|
||||||
if (languages.length === 0) {
|
if (languages.length === 0) {
|
||||||
throw new util_1.UserError(getNoLanguagesError());
|
throw new util_1.ConfigurationError(getNoLanguagesError());
|
||||||
}
|
}
|
||||||
// Make sure they are supported
|
// Make sure they are supported
|
||||||
const parsedLanguages = [];
|
const parsedLanguages = [];
|
||||||
@@ -165,7 +166,7 @@ async function getLanguages(codeQL, languagesInput, repository, logger) {
|
|||||||
// Any unknown languages here would have come directly from the input
|
// Any unknown languages here would have come directly from the input
|
||||||
// since we filter unknown languages coming from the GitHub API.
|
// since we filter unknown languages coming from the GitHub API.
|
||||||
if (unknownLanguages.length > 0) {
|
if (unknownLanguages.length > 0) {
|
||||||
throw new util_1.UserError(getUnknownLanguagesError(unknownLanguages));
|
throw new util_1.ConfigurationError(getUnknownLanguagesError(unknownLanguages));
|
||||||
}
|
}
|
||||||
return parsedLanguages;
|
return parsedLanguages;
|
||||||
}
|
}
|
||||||
@@ -212,16 +213,18 @@ exports.getRawLanguages = getRawLanguages;
|
|||||||
/**
|
/**
|
||||||
* Get the default config for when the user has not supplied one.
|
* Get the default config for when the user has not supplied one.
|
||||||
*/
|
*/
|
||||||
async function getDefaultConfig(languagesInput, rawQueriesInput, rawPacksInput, dbLocation, trapCachingEnabled, debugMode, debugArtifactName, debugDatabaseName, repository, tempDir, codeQL, gitHubVersion, logger) {
|
async function getDefaultConfig({ languagesInput, queriesInput, packsInput, buildModeInput, dbLocation, trapCachingEnabled, debugMode, debugArtifactName, debugDatabaseName, repository, tempDir, codeql, githubVersion, features, logger, }) {
|
||||||
const languages = await getLanguages(codeQL, languagesInput, repository, logger);
|
const languages = await getLanguages(codeql, languagesInput, repository, logger);
|
||||||
const augmentationProperties = calculateAugmentation(rawPacksInput, rawQueriesInput, languages);
|
const buildMode = await parseBuildModeInput(buildModeInput, languages, features, logger);
|
||||||
const { trapCaches, trapCacheDownloadTime } = await downloadCacheWithTime(trapCachingEnabled, codeQL, languages, logger);
|
const augmentationProperties = calculateAugmentation(packsInput, queriesInput, languages);
|
||||||
|
const { trapCaches, trapCacheDownloadTime } = await downloadCacheWithTime(trapCachingEnabled, codeql, languages, logger);
|
||||||
return {
|
return {
|
||||||
languages,
|
languages,
|
||||||
|
buildMode,
|
||||||
originalUserInput: {},
|
originalUserInput: {},
|
||||||
tempDir,
|
tempDir,
|
||||||
codeQLCmd: codeQL.getPath(),
|
codeQLCmd: codeql.getPath(),
|
||||||
gitHubVersion,
|
gitHubVersion: githubVersion,
|
||||||
dbLocation: dbLocationOrDefault(dbLocation, tempDir),
|
dbLocation: dbLocationOrDefault(dbLocation, tempDir),
|
||||||
debugMode,
|
debugMode,
|
||||||
debugArtifactName,
|
debugArtifactName,
|
||||||
@@ -245,25 +248,33 @@ async function downloadCacheWithTime(trapCachingEnabled, codeQL, languages, logg
|
|||||||
/**
|
/**
|
||||||
* Load the config from the given file.
|
* Load the config from the given file.
|
||||||
*/
|
*/
|
||||||
async function loadConfig(languagesInput, rawQueriesInput, rawPacksInput, configFile, dbLocation, trapCachingEnabled, debugMode, debugArtifactName, debugDatabaseName, repository, tempDir, codeQL, workspacePath, gitHubVersion, apiDetails, logger) {
|
async function loadConfig({ languagesInput, queriesInput, packsInput, buildModeInput, configFile, dbLocation, trapCachingEnabled, debugMode, debugArtifactName, debugDatabaseName, repository, tempDir, codeql, workspacePath, githubVersion, apiDetails, features, logger, }) {
|
||||||
let parsedYAML;
|
let parsedYAML;
|
||||||
if (isLocal(configFile)) {
|
if (isLocal(configFile)) {
|
||||||
// Treat the config file as relative to the workspace
|
if (configFile !== userConfigFromActionPath(tempDir)) {
|
||||||
configFile = path.resolve(workspacePath, configFile);
|
// If the config file is not generated by the Action, it should be relative to the workspace.
|
||||||
parsedYAML = getLocalConfig(configFile, workspacePath);
|
configFile = path.resolve(workspacePath, configFile);
|
||||||
|
// Error if the config file is now outside of the workspace
|
||||||
|
if (!(configFile + path.sep).startsWith(workspacePath + path.sep)) {
|
||||||
|
throw new util_1.ConfigurationError(getConfigFileOutsideWorkspaceErrorMessage(configFile));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parsedYAML = getLocalConfig(configFile);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
parsedYAML = await getRemoteConfig(configFile, apiDetails);
|
parsedYAML = await getRemoteConfig(configFile, apiDetails);
|
||||||
}
|
}
|
||||||
const languages = await getLanguages(codeQL, languagesInput, repository, logger);
|
const languages = await getLanguages(codeql, languagesInput, repository, logger);
|
||||||
const augmentationProperties = calculateAugmentation(rawPacksInput, rawQueriesInput, languages);
|
const buildMode = await parseBuildModeInput(buildModeInput, languages, features, logger);
|
||||||
const { trapCaches, trapCacheDownloadTime } = await downloadCacheWithTime(trapCachingEnabled, codeQL, languages, logger);
|
const augmentationProperties = calculateAugmentation(packsInput, queriesInput, languages);
|
||||||
|
const { trapCaches, trapCacheDownloadTime } = await downloadCacheWithTime(trapCachingEnabled, codeql, languages, logger);
|
||||||
return {
|
return {
|
||||||
languages,
|
languages,
|
||||||
|
buildMode,
|
||||||
originalUserInput: parsedYAML,
|
originalUserInput: parsedYAML,
|
||||||
tempDir,
|
tempDir,
|
||||||
codeQLCmd: codeQL.getPath(),
|
codeQLCmd: codeql.getPath(),
|
||||||
gitHubVersion,
|
gitHubVersion: githubVersion,
|
||||||
dbLocation: dbLocationOrDefault(dbLocation, tempDir),
|
dbLocation: dbLocationOrDefault(dbLocation, tempDir),
|
||||||
debugMode,
|
debugMode,
|
||||||
debugArtifactName,
|
debugArtifactName,
|
||||||
@@ -313,7 +324,7 @@ function parseQueriesFromInput(rawQueriesInput, queriesInputCombines) {
|
|||||||
? rawQueriesInput.trim().slice(1).trim()
|
? rawQueriesInput.trim().slice(1).trim()
|
||||||
: rawQueriesInput?.trim() ?? "";
|
: rawQueriesInput?.trim() ?? "";
|
||||||
if (queriesInputCombines && trimmedInput.length === 0) {
|
if (queriesInputCombines && trimmedInput.length === 0) {
|
||||||
throw new util_1.UserError(getConfigFilePropertyError(undefined, "queries", "A '+' was used in the 'queries' input to specify that you wished to add some packs to your CodeQL analysis. However, no packs were specified. Please either remove the '+' or specify some packs."));
|
throw new util_1.ConfigurationError(getConfigFilePropertyError(undefined, "queries", "A '+' was used in the 'queries' input to specify that you wished to add some packs to your CodeQL analysis. However, no packs were specified. Please either remove the '+' or specify some packs."));
|
||||||
}
|
}
|
||||||
return trimmedInput.split(",").map((query) => ({ uses: query.trim() }));
|
return trimmedInput.split(",").map((query) => ({ uses: query.trim() }));
|
||||||
}
|
}
|
||||||
@@ -333,16 +344,16 @@ function parsePacksFromInput(rawPacksInput, languages, packsInputCombines) {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
if (languages.length > 1) {
|
if (languages.length > 1) {
|
||||||
throw new util_1.UserError("Cannot specify a 'packs' input in a multi-language analysis. Use a codeql-config.yml file instead and specify packs by language.");
|
throw new util_1.ConfigurationError("Cannot specify a 'packs' input in a multi-language analysis. Use a codeql-config.yml file instead and specify packs by language.");
|
||||||
}
|
}
|
||||||
else if (languages.length === 0) {
|
else if (languages.length === 0) {
|
||||||
throw new util_1.UserError("No languages specified. Cannot process the packs input.");
|
throw new util_1.ConfigurationError("No languages specified. Cannot process the packs input.");
|
||||||
}
|
}
|
||||||
rawPacksInput = rawPacksInput.trim();
|
rawPacksInput = rawPacksInput.trim();
|
||||||
if (packsInputCombines) {
|
if (packsInputCombines) {
|
||||||
rawPacksInput = rawPacksInput.trim().substring(1).trim();
|
rawPacksInput = rawPacksInput.trim().substring(1).trim();
|
||||||
if (!rawPacksInput) {
|
if (!rawPacksInput) {
|
||||||
throw new util_1.UserError(getConfigFilePropertyError(undefined, "packs", "A '+' was used in the 'packs' input to specify that you wished to add some packs to your CodeQL analysis. However, no packs were specified. Please either remove the '+' or specify some packs."));
|
throw new util_1.ConfigurationError(getConfigFilePropertyError(undefined, "packs", "A '+' was used in the 'packs' input to specify that you wished to add some packs to your CodeQL analysis. However, no packs were specified. Please either remove the '+' or specify some packs."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
@@ -373,7 +384,7 @@ exports.parsePacksFromInput = parsePacksFromInput;
|
|||||||
*/
|
*/
|
||||||
function parsePacksSpecification(packStr) {
|
function parsePacksSpecification(packStr) {
|
||||||
if (typeof packStr !== "string") {
|
if (typeof packStr !== "string") {
|
||||||
throw new util_1.UserError(getPacksStrInvalid(packStr));
|
throw new util_1.ConfigurationError(getPacksStrInvalid(packStr));
|
||||||
}
|
}
|
||||||
packStr = packStr.trim();
|
packStr = packStr.trim();
|
||||||
const atIndex = packStr.indexOf("@");
|
const atIndex = packStr.indexOf("@");
|
||||||
@@ -394,7 +405,7 @@ function parsePacksSpecification(packStr) {
|
|||||||
? packStr.slice(pathStart, pathEnd).trim()
|
? packStr.slice(pathStart, pathEnd).trim()
|
||||||
: undefined;
|
: undefined;
|
||||||
if (!PACK_IDENTIFIER_PATTERN.test(packName)) {
|
if (!PACK_IDENTIFIER_PATTERN.test(packName)) {
|
||||||
throw new util_1.UserError(getPacksStrInvalid(packStr));
|
throw new util_1.ConfigurationError(getPacksStrInvalid(packStr));
|
||||||
}
|
}
|
||||||
if (version) {
|
if (version) {
|
||||||
try {
|
try {
|
||||||
@@ -402,7 +413,7 @@ function parsePacksSpecification(packStr) {
|
|||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
// The range string is invalid. OK to ignore the caught error
|
// The range string is invalid. OK to ignore the caught error
|
||||||
throw new util_1.UserError(getPacksStrInvalid(packStr));
|
throw new util_1.ConfigurationError(getPacksStrInvalid(packStr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (packPath &&
|
if (packPath &&
|
||||||
@@ -413,11 +424,11 @@ function parsePacksSpecification(packStr) {
|
|||||||
// which seems more awkward.
|
// which seems more awkward.
|
||||||
path.normalize(packPath).split(path.sep).join("/") !==
|
path.normalize(packPath).split(path.sep).join("/") !==
|
||||||
packPath.split(path.sep).join("/"))) {
|
packPath.split(path.sep).join("/"))) {
|
||||||
throw new util_1.UserError(getPacksStrInvalid(packStr));
|
throw new util_1.ConfigurationError(getPacksStrInvalid(packStr));
|
||||||
}
|
}
|
||||||
if (!packPath && pathStart) {
|
if (!packPath && pathStart) {
|
||||||
// 0 length path
|
// 0 length path
|
||||||
throw new util_1.UserError(getPacksStrInvalid(packStr));
|
throw new util_1.ConfigurationError(getPacksStrInvalid(packStr));
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
name: packName,
|
name: packName,
|
||||||
@@ -446,30 +457,35 @@ function shouldCombine(inputValue) {
|
|||||||
function dbLocationOrDefault(dbLocation, tempDir) {
|
function dbLocationOrDefault(dbLocation, tempDir) {
|
||||||
return dbLocation || path.resolve(tempDir, "codeql_databases");
|
return dbLocation || path.resolve(tempDir, "codeql_databases");
|
||||||
}
|
}
|
||||||
|
function userConfigFromActionPath(tempDir) {
|
||||||
|
return path.resolve(tempDir, "user-config-from-action.yml");
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Load and return the config.
|
* Load and return the config.
|
||||||
*
|
*
|
||||||
* This will parse the config from the user input if present, or generate
|
* This will parse the config from the user input if present, or generate
|
||||||
* a default config. The parsed config is then stored to a known location.
|
* a default config. The parsed config is then stored to a known location.
|
||||||
*/
|
*/
|
||||||
async function initConfig(languagesInput, queriesInput, packsInput, configFile, dbLocation, configInput, trapCachingEnabled, debugMode, debugArtifactName, debugDatabaseName, repository, tempDir, codeQL, workspacePath, gitHubVersion, apiDetails, logger) {
|
async function initConfig(inputs) {
|
||||||
let config;
|
let config;
|
||||||
|
const { logger, tempDir } = inputs;
|
||||||
// if configInput is set, it takes precedence over configFile
|
// if configInput is set, it takes precedence over configFile
|
||||||
if (configInput) {
|
if (inputs.configInput) {
|
||||||
if (configFile) {
|
if (inputs.configFile) {
|
||||||
logger.warning(`Both a config file and config input were provided. Ignoring config file.`);
|
logger.warning(`Both a config file and config input were provided. Ignoring config file.`);
|
||||||
}
|
}
|
||||||
configFile = path.resolve(workspacePath, "user-config-from-action.yml");
|
inputs.configFile = userConfigFromActionPath(tempDir);
|
||||||
fs.writeFileSync(configFile, configInput);
|
fs.writeFileSync(inputs.configFile, inputs.configInput);
|
||||||
logger.debug(`Using config from action input: ${configFile}`);
|
logger.debug(`Using config from action input: ${inputs.configFile}`);
|
||||||
}
|
}
|
||||||
// If no config file was provided create an empty one
|
// If no config file was provided create an empty one
|
||||||
if (!configFile) {
|
if (!inputs.configFile) {
|
||||||
logger.debug("No configuration file was provided");
|
logger.debug("No configuration file was provided");
|
||||||
config = await getDefaultConfig(languagesInput, queriesInput, packsInput, dbLocation, trapCachingEnabled, debugMode, debugArtifactName, debugDatabaseName, repository, tempDir, codeQL, gitHubVersion, logger);
|
config = await getDefaultConfig(inputs);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
config = await loadConfig(languagesInput, queriesInput, packsInput, configFile, dbLocation, trapCachingEnabled, debugMode, debugArtifactName, debugDatabaseName, repository, tempDir, codeQL, workspacePath, gitHubVersion, apiDetails, logger);
|
// Convince the type checker that inputs.configFile is defined.
|
||||||
|
config = await loadConfig({ ...inputs, configFile: inputs.configFile });
|
||||||
}
|
}
|
||||||
// Save the config so we can easily access it again in the future
|
// Save the config so we can easily access it again in the future
|
||||||
await saveConfig(config, logger);
|
await saveConfig(config, logger);
|
||||||
@@ -483,7 +499,7 @@ function parseRegistries(registriesInput) {
|
|||||||
: undefined;
|
: undefined;
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
throw new util_1.UserError("Invalid registries input. Must be a YAML string.");
|
throw new util_1.ConfigurationError("Invalid registries input. Must be a YAML string.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function isLocal(configPath) {
|
function isLocal(configPath) {
|
||||||
@@ -493,14 +509,10 @@ function isLocal(configPath) {
|
|||||||
}
|
}
|
||||||
return configPath.indexOf("@") === -1;
|
return configPath.indexOf("@") === -1;
|
||||||
}
|
}
|
||||||
function getLocalConfig(configFile, workspacePath) {
|
function getLocalConfig(configFile) {
|
||||||
// Error if the config file is now outside of the workspace
|
|
||||||
if (!(configFile + path.sep).startsWith(workspacePath + path.sep)) {
|
|
||||||
throw new util_1.UserError(getConfigFileOutsideWorkspaceErrorMessage(configFile));
|
|
||||||
}
|
|
||||||
// Error if the file does not exist
|
// Error if the file does not exist
|
||||||
if (!fs.existsSync(configFile)) {
|
if (!fs.existsSync(configFile)) {
|
||||||
throw new util_1.UserError(getConfigFileDoesNotExistErrorMessage(configFile));
|
throw new util_1.ConfigurationError(getConfigFileDoesNotExistErrorMessage(configFile));
|
||||||
}
|
}
|
||||||
return yaml.load(fs.readFileSync(configFile, "utf8"));
|
return yaml.load(fs.readFileSync(configFile, "utf8"));
|
||||||
}
|
}
|
||||||
@@ -510,7 +522,7 @@ async function getRemoteConfig(configFile, apiDetails) {
|
|||||||
const pieces = format.exec(configFile);
|
const pieces = format.exec(configFile);
|
||||||
// 5 = 4 groups + the whole expression
|
// 5 = 4 groups + the whole expression
|
||||||
if (pieces === null || pieces.groups === undefined || pieces.length < 5) {
|
if (pieces === null || pieces.groups === undefined || pieces.length < 5) {
|
||||||
throw new util_1.UserError(getConfigFileRepoFormatInvalidMessage(configFile));
|
throw new util_1.ConfigurationError(getConfigFileRepoFormatInvalidMessage(configFile));
|
||||||
}
|
}
|
||||||
const response = await api
|
const response = await api
|
||||||
.getApiClientWithExternalAuth(apiDetails)
|
.getApiClientWithExternalAuth(apiDetails)
|
||||||
@@ -525,10 +537,10 @@ async function getRemoteConfig(configFile, apiDetails) {
|
|||||||
fileContents = response.data.content;
|
fileContents = response.data.content;
|
||||||
}
|
}
|
||||||
else if (Array.isArray(response.data)) {
|
else if (Array.isArray(response.data)) {
|
||||||
throw new util_1.UserError(getConfigFileDirectoryGivenMessage(configFile));
|
throw new util_1.ConfigurationError(getConfigFileDirectoryGivenMessage(configFile));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw new util_1.UserError(getConfigFileFormatInvalidMessage(configFile));
|
throw new util_1.ConfigurationError(getConfigFileFormatInvalidMessage(configFile));
|
||||||
}
|
}
|
||||||
return yaml.load(Buffer.from(fileContents, "base64").toString("binary"));
|
return yaml.load(Buffer.from(fileContents, "base64").toString("binary"));
|
||||||
}
|
}
|
||||||
@@ -607,7 +619,7 @@ exports.generateRegistries = generateRegistries;
|
|||||||
function createRegistriesBlock(registries) {
|
function createRegistriesBlock(registries) {
|
||||||
if (!Array.isArray(registries) ||
|
if (!Array.isArray(registries) ||
|
||||||
registries.some((r) => !r.url || !r.packages)) {
|
registries.some((r) => !r.url || !r.packages)) {
|
||||||
throw new util_1.UserError("Invalid 'registries' input. Must be an array of objects with 'url' and 'packages' properties.");
|
throw new util_1.ConfigurationError("Invalid 'registries' input. Must be an array of objects with 'url' and 'packages' properties.");
|
||||||
}
|
}
|
||||||
// be sure to remove the `token` field from the registry before writing it to disk.
|
// be sure to remove the `token` field from the registry before writing it to disk.
|
||||||
const safeRegistries = registries.map((registry) => ({
|
const safeRegistries = registries.map((registry) => ({
|
||||||
@@ -654,4 +666,20 @@ async function wrapEnvironment(env, operation) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.wrapEnvironment = wrapEnvironment;
|
exports.wrapEnvironment = wrapEnvironment;
|
||||||
|
// Exported for testing
|
||||||
|
async function parseBuildModeInput(input, languages, features, logger) {
|
||||||
|
if (input === undefined) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
if (!Object.values(util_1.BuildMode).includes(input)) {
|
||||||
|
throw new util_1.ConfigurationError(`Invalid build mode: '${input}'. Supported build modes are: ${Object.values(util_1.BuildMode).join(", ")}.`);
|
||||||
|
}
|
||||||
|
if (languages.includes(languages_1.Language.java) &&
|
||||||
|
(await features.getValue(feature_flags_1.Feature.DisableJavaBuildlessEnabled))) {
|
||||||
|
logger.warning("Scanning Java code without a build is temporarily unavailable. Falling back to 'autobuild' build mode.");
|
||||||
|
return util_1.BuildMode.Autobuild;
|
||||||
|
}
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
exports.parseBuildModeInput = parseBuildModeInput;
|
||||||
//# sourceMappingURL=config-utils.js.map
|
//# sourceMappingURL=config-utils.js.map
|
||||||
File diff suppressed because one or more lines are too long
255
lib/config-utils.test.js
generated
255
lib/config-utils.test.js
generated
@@ -35,20 +35,43 @@ const sinon = __importStar(require("sinon"));
|
|||||||
const api = __importStar(require("./api-client"));
|
const api = __importStar(require("./api-client"));
|
||||||
const codeql_1 = require("./codeql");
|
const codeql_1 = require("./codeql");
|
||||||
const configUtils = __importStar(require("./config-utils"));
|
const configUtils = __importStar(require("./config-utils"));
|
||||||
|
const feature_flags_1 = require("./feature-flags");
|
||||||
const languages_1 = require("./languages");
|
const languages_1 = require("./languages");
|
||||||
const logging_1 = require("./logging");
|
const logging_1 = require("./logging");
|
||||||
const repository_1 = require("./repository");
|
const repository_1 = require("./repository");
|
||||||
const testing_utils_1 = require("./testing-utils");
|
const testing_utils_1 = require("./testing-utils");
|
||||||
const util_1 = require("./util");
|
const util_1 = require("./util");
|
||||||
(0, testing_utils_1.setupTests)(ava_1.default);
|
(0, testing_utils_1.setupTests)(ava_1.default);
|
||||||
const sampleApiDetails = {
|
const githubVersion = { type: util_1.GitHubVariant.DOTCOM };
|
||||||
auth: "token",
|
function createTestInitConfigInputs(overrides) {
|
||||||
externalRepoAuth: "token",
|
return Object.assign({}, {
|
||||||
url: "https://github.example.com",
|
languagesInput: undefined,
|
||||||
apiURL: undefined,
|
queriesInput: undefined,
|
||||||
registriesAuthTokens: undefined,
|
packsInput: undefined,
|
||||||
};
|
configFile: undefined,
|
||||||
const gitHubVersion = { type: util_1.GitHubVariant.DOTCOM };
|
dbLocation: undefined,
|
||||||
|
configInput: undefined,
|
||||||
|
buildModeInput: undefined,
|
||||||
|
trapCachingEnabled: false,
|
||||||
|
debugMode: false,
|
||||||
|
debugArtifactName: "",
|
||||||
|
debugDatabaseName: "",
|
||||||
|
repository: { owner: "github", repo: "example" },
|
||||||
|
tempDir: "",
|
||||||
|
codeql: {},
|
||||||
|
workspacePath: "",
|
||||||
|
githubVersion,
|
||||||
|
apiDetails: {
|
||||||
|
auth: "token",
|
||||||
|
externalRepoAuth: "token",
|
||||||
|
url: "https://github.example.com",
|
||||||
|
apiURL: undefined,
|
||||||
|
registriesAuthTokens: undefined,
|
||||||
|
},
|
||||||
|
features: (0, testing_utils_1.createFeatures)([]),
|
||||||
|
logger: (0, logging_1.getRunnerLogger)(true),
|
||||||
|
}, overrides);
|
||||||
|
}
|
||||||
// Returns the filepath of the newly-created file
|
// Returns the filepath of the newly-created file
|
||||||
function createConfigFile(inputFileContents, tmpDir) {
|
function createConfigFile(inputFileContents, tmpDir) {
|
||||||
const configFilePath = path.join(tmpDir, "input");
|
const configFilePath = path.join(tmpDir, "input");
|
||||||
@@ -83,10 +106,10 @@ function mockListLanguages(languages) {
|
|||||||
sinon.stub(api, "getApiClient").value(() => client);
|
sinon.stub(api, "getApiClient").value(() => client);
|
||||||
}
|
}
|
||||||
(0, ava_1.default)("load empty config", async (t) => {
|
(0, ava_1.default)("load empty config", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
const logger = (0, logging_1.getRunnerLogger)(true);
|
const logger = (0, logging_1.getRunnerLogger)(true);
|
||||||
const languages = "javascript,python";
|
const languages = "javascript,python";
|
||||||
const codeQL = (0, codeql_1.setCodeQL)({
|
const codeql = (0, codeql_1.setCodeQL)({
|
||||||
async resolveQueries() {
|
async resolveQueries() {
|
||||||
return {
|
return {
|
||||||
byLanguage: {
|
byLanguage: {
|
||||||
@@ -101,14 +124,25 @@ function mockListLanguages(languages) {
|
|||||||
return { packs: [] };
|
return { packs: [] };
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const config = await configUtils.initConfig(languages, undefined, undefined, undefined, undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, codeQL, tmpDir, gitHubVersion, sampleApiDetails, logger);
|
const config = await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
t.deepEqual(config, await configUtils.getDefaultConfig(languages, undefined, undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, codeQL, gitHubVersion, logger));
|
languagesInput: languages,
|
||||||
|
repository: { owner: "github", repo: "example" },
|
||||||
|
tempDir,
|
||||||
|
codeql,
|
||||||
|
logger,
|
||||||
|
}));
|
||||||
|
t.deepEqual(config, await configUtils.getDefaultConfig(createTestInitConfigInputs({
|
||||||
|
languagesInput: languages,
|
||||||
|
tempDir,
|
||||||
|
codeql,
|
||||||
|
logger,
|
||||||
|
})));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("loading config saves config", async (t) => {
|
(0, ava_1.default)("loading config saves config", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
const logger = (0, logging_1.getRunnerLogger)(true);
|
const logger = (0, logging_1.getRunnerLogger)(true);
|
||||||
const codeQL = (0, codeql_1.setCodeQL)({
|
const codeql = (0, codeql_1.setCodeQL)({
|
||||||
async resolveQueries() {
|
async resolveQueries() {
|
||||||
return {
|
return {
|
||||||
byLanguage: {
|
byLanguage: {
|
||||||
@@ -124,14 +158,20 @@ function mockListLanguages(languages) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
// Sanity check the saved config file does not already exist
|
// Sanity check the saved config file does not already exist
|
||||||
t.false(fs.existsSync(configUtils.getPathToParsedConfigFile(tmpDir)));
|
t.false(fs.existsSync(configUtils.getPathToParsedConfigFile(tempDir)));
|
||||||
// Sanity check that getConfig returns undefined before we have called initConfig
|
// Sanity check that getConfig returns undefined before we have called initConfig
|
||||||
t.deepEqual(await configUtils.getConfig(tmpDir, logger), undefined);
|
t.deepEqual(await configUtils.getConfig(tempDir, logger), undefined);
|
||||||
const config1 = await configUtils.initConfig("javascript,python", undefined, undefined, undefined, undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, codeQL, tmpDir, gitHubVersion, sampleApiDetails, logger);
|
const config1 = await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
languagesInput: "javascript,python",
|
||||||
|
tempDir,
|
||||||
|
codeql,
|
||||||
|
workspacePath: tempDir,
|
||||||
|
logger,
|
||||||
|
}));
|
||||||
// The saved config file should now exist
|
// The saved config file should now exist
|
||||||
t.true(fs.existsSync(configUtils.getPathToParsedConfigFile(tmpDir)));
|
t.true(fs.existsSync(configUtils.getPathToParsedConfigFile(tempDir)));
|
||||||
// And that same newly-initialised config should now be returned by getConfig
|
// And that same newly-initialised config should now be returned by getConfig
|
||||||
const config2 = await configUtils.getConfig(tmpDir, logger);
|
const config2 = await configUtils.getConfig(tempDir, logger);
|
||||||
t.not(config2, undefined);
|
t.not(config2, undefined);
|
||||||
if (config2 !== undefined) {
|
if (config2 !== undefined) {
|
||||||
// removes properties assigned to undefined.
|
// removes properties assigned to undefined.
|
||||||
@@ -141,46 +181,62 @@ function mockListLanguages(languages) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("load input outside of workspace", async (t) => {
|
(0, ava_1.default)("load input outside of workspace", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
try {
|
try {
|
||||||
await configUtils.initConfig(undefined, undefined, undefined, "../input", undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, (0, codeql_1.getCachedCodeQL)(), tmpDir, gitHubVersion, sampleApiDetails, (0, logging_1.getRunnerLogger)(true));
|
await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
configFile: "../input",
|
||||||
|
tempDir,
|
||||||
|
codeql: (0, codeql_1.getCachedCodeQL)(),
|
||||||
|
workspacePath: tempDir,
|
||||||
|
}));
|
||||||
throw new Error("initConfig did not throw error");
|
throw new Error("initConfig did not throw error");
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
t.deepEqual(err, new util_1.UserError(configUtils.getConfigFileOutsideWorkspaceErrorMessage(path.join(tmpDir, "../input"))));
|
t.deepEqual(err, new util_1.ConfigurationError(configUtils.getConfigFileOutsideWorkspaceErrorMessage(path.join(tempDir, "../input"))));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("load non-local input with invalid repo syntax", async (t) => {
|
(0, ava_1.default)("load non-local input with invalid repo syntax", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
// no filename given, just a repo
|
// no filename given, just a repo
|
||||||
const configFile = "octo-org/codeql-config@main";
|
const configFile = "octo-org/codeql-config@main";
|
||||||
try {
|
try {
|
||||||
await configUtils.initConfig(undefined, undefined, undefined, configFile, undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, (0, codeql_1.getCachedCodeQL)(), tmpDir, gitHubVersion, sampleApiDetails, (0, logging_1.getRunnerLogger)(true));
|
await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
configFile,
|
||||||
|
tempDir,
|
||||||
|
codeql: (0, codeql_1.getCachedCodeQL)(),
|
||||||
|
workspacePath: tempDir,
|
||||||
|
}));
|
||||||
throw new Error("initConfig did not throw error");
|
throw new Error("initConfig did not throw error");
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
t.deepEqual(err, new util_1.UserError(configUtils.getConfigFileRepoFormatInvalidMessage("octo-org/codeql-config@main")));
|
t.deepEqual(err, new util_1.ConfigurationError(configUtils.getConfigFileRepoFormatInvalidMessage("octo-org/codeql-config@main")));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("load non-existent input", async (t) => {
|
(0, ava_1.default)("load non-existent input", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
const languages = "javascript";
|
const languagesInput = "javascript";
|
||||||
const configFile = "input";
|
const configFile = "input";
|
||||||
t.false(fs.existsSync(path.join(tmpDir, configFile)));
|
t.false(fs.existsSync(path.join(tempDir, configFile)));
|
||||||
try {
|
try {
|
||||||
await configUtils.initConfig(languages, undefined, undefined, configFile, undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, (0, codeql_1.getCachedCodeQL)(), tmpDir, gitHubVersion, sampleApiDetails, (0, logging_1.getRunnerLogger)(true));
|
await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
languagesInput,
|
||||||
|
configFile,
|
||||||
|
tempDir,
|
||||||
|
codeql: (0, codeql_1.getCachedCodeQL)(),
|
||||||
|
workspacePath: tempDir,
|
||||||
|
}));
|
||||||
throw new Error("initConfig did not throw error");
|
throw new Error("initConfig did not throw error");
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
t.deepEqual(err, new util_1.UserError(configUtils.getConfigFileDoesNotExistErrorMessage(path.join(tmpDir, "input"))));
|
t.deepEqual(err, new util_1.ConfigurationError(configUtils.getConfigFileDoesNotExistErrorMessage(path.join(tempDir, "input"))));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("load non-empty input", async (t) => {
|
(0, ava_1.default)("load non-empty input", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
const codeQL = (0, codeql_1.setCodeQL)({
|
const codeql = (0, codeql_1.setCodeQL)({
|
||||||
async resolveQueries() {
|
async resolveQueries() {
|
||||||
return {
|
return {
|
||||||
byLanguage: {
|
byLanguage: {
|
||||||
@@ -208,10 +264,11 @@ function mockListLanguages(languages) {
|
|||||||
- b
|
- b
|
||||||
paths:
|
paths:
|
||||||
- c/d`;
|
- c/d`;
|
||||||
fs.mkdirSync(path.join(tmpDir, "foo"));
|
fs.mkdirSync(path.join(tempDir, "foo"));
|
||||||
// And the config we expect it to parse to
|
// And the config we expect it to parse to
|
||||||
const expectedConfig = {
|
const expectedConfig = {
|
||||||
languages: [languages_1.Language.javascript],
|
languages: [languages_1.Language.javascript],
|
||||||
|
buildMode: util_1.BuildMode.None,
|
||||||
originalUserInput: {
|
originalUserInput: {
|
||||||
name: "my config",
|
name: "my config",
|
||||||
"disable-default-queries": true,
|
"disable-default-queries": true,
|
||||||
@@ -219,10 +276,10 @@ function mockListLanguages(languages) {
|
|||||||
"paths-ignore": ["a", "b"],
|
"paths-ignore": ["a", "b"],
|
||||||
paths: ["c/d"],
|
paths: ["c/d"],
|
||||||
},
|
},
|
||||||
tempDir: tmpDir,
|
tempDir,
|
||||||
codeQLCmd: codeQL.getPath(),
|
codeQLCmd: codeql.getPath(),
|
||||||
gitHubVersion,
|
gitHubVersion: githubVersion,
|
||||||
dbLocation: path.resolve(tmpDir, "codeql_databases"),
|
dbLocation: path.resolve(tempDir, "codeql_databases"),
|
||||||
debugMode: false,
|
debugMode: false,
|
||||||
debugArtifactName: "my-artifact",
|
debugArtifactName: "my-artifact",
|
||||||
debugDatabaseName: "my-db",
|
debugDatabaseName: "my-db",
|
||||||
@@ -230,9 +287,18 @@ function mockListLanguages(languages) {
|
|||||||
trapCaches: {},
|
trapCaches: {},
|
||||||
trapCacheDownloadTime: 0,
|
trapCacheDownloadTime: 0,
|
||||||
};
|
};
|
||||||
const languages = "javascript";
|
const languagesInput = "javascript";
|
||||||
const configFilePath = createConfigFile(inputFileContents, tmpDir);
|
const configFilePath = createConfigFile(inputFileContents, tempDir);
|
||||||
const actualConfig = await configUtils.initConfig(languages, undefined, undefined, configFilePath, undefined, undefined, false, false, "my-artifact", "my-db", { owner: "github", repo: "example" }, tmpDir, codeQL, tmpDir, gitHubVersion, sampleApiDetails, (0, logging_1.getRunnerLogger)(true));
|
const actualConfig = await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
languagesInput,
|
||||||
|
buildModeInput: "none",
|
||||||
|
configFile: configFilePath,
|
||||||
|
debugArtifactName: "my-artifact",
|
||||||
|
debugDatabaseName: "my-db",
|
||||||
|
tempDir,
|
||||||
|
codeql,
|
||||||
|
workspacePath: tempDir,
|
||||||
|
}));
|
||||||
// Should exactly equal the object we constructed earlier
|
// Should exactly equal the object we constructed earlier
|
||||||
t.deepEqual(actualConfig, expectedConfig);
|
t.deepEqual(actualConfig, expectedConfig);
|
||||||
});
|
});
|
||||||
@@ -256,14 +322,14 @@ function queriesToResolvedQueryForm(queries) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
(0, ava_1.default)("Using config input and file together, config input should be used.", async (t) => {
|
(0, ava_1.default)("Using config input and file together, config input should be used.", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
process.env["RUNNER_TEMP"] = tmpDir;
|
process.env["RUNNER_TEMP"] = tempDir;
|
||||||
process.env["GITHUB_WORKSPACE"] = tmpDir;
|
process.env["GITHUB_WORKSPACE"] = tempDir;
|
||||||
const inputFileContents = `
|
const inputFileContents = `
|
||||||
name: my config
|
name: my config
|
||||||
queries:
|
queries:
|
||||||
- uses: ./foo_file`;
|
- uses: ./foo_file`;
|
||||||
const configFilePath = createConfigFile(inputFileContents, tmpDir);
|
const configFilePath = createConfigFile(inputFileContents, tempDir);
|
||||||
const configInput = `
|
const configInput = `
|
||||||
name: my config
|
name: my config
|
||||||
queries:
|
queries:
|
||||||
@@ -274,9 +340,9 @@ function queriesToResolvedQueryForm(queries) {
|
|||||||
python:
|
python:
|
||||||
- c/d@1.2.3
|
- c/d@1.2.3
|
||||||
`;
|
`;
|
||||||
fs.mkdirSync(path.join(tmpDir, "foo"));
|
fs.mkdirSync(path.join(tempDir, "foo"));
|
||||||
const resolveQueriesArgs = [];
|
const resolveQueriesArgs = [];
|
||||||
const codeQL = (0, codeql_1.setCodeQL)({
|
const codeql = (0, codeql_1.setCodeQL)({
|
||||||
async resolveQueries(queries, extraSearchPath) {
|
async resolveQueries(queries, extraSearchPath) {
|
||||||
resolveQueriesArgs.push({ queries, extraSearchPath });
|
resolveQueriesArgs.push({ queries, extraSearchPath });
|
||||||
return queriesToResolvedQueryForm(queries);
|
return queriesToResolvedQueryForm(queries);
|
||||||
@@ -286,14 +352,21 @@ function queriesToResolvedQueryForm(queries) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
// Only JS, python packs will be ignored
|
// Only JS, python packs will be ignored
|
||||||
const languages = "javascript";
|
const languagesInput = "javascript";
|
||||||
const config = await configUtils.initConfig(languages, undefined, undefined, undefined, configFilePath, configInput, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, codeQL, tmpDir, gitHubVersion, sampleApiDetails, (0, logging_1.getRunnerLogger)(true));
|
const config = await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
languagesInput,
|
||||||
|
configFile: configFilePath,
|
||||||
|
configInput,
|
||||||
|
tempDir,
|
||||||
|
codeql,
|
||||||
|
workspacePath: tempDir,
|
||||||
|
}));
|
||||||
t.deepEqual(config.originalUserInput, yaml.load(configInput));
|
t.deepEqual(config.originalUserInput, yaml.load(configInput));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("API client used when reading remote config", async (t) => {
|
(0, ava_1.default)("API client used when reading remote config", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
const codeQL = (0, codeql_1.setCodeQL)({
|
const codeql = (0, codeql_1.setCodeQL)({
|
||||||
async resolveQueries() {
|
async resolveQueries() {
|
||||||
return {
|
return {
|
||||||
byLanguage: {
|
byLanguage: {
|
||||||
@@ -326,47 +399,63 @@ function queriesToResolvedQueryForm(queries) {
|
|||||||
};
|
};
|
||||||
const spyGetContents = mockGetContents(dummyResponse);
|
const spyGetContents = mockGetContents(dummyResponse);
|
||||||
// Create checkout directory for remote queries repository
|
// Create checkout directory for remote queries repository
|
||||||
fs.mkdirSync(path.join(tmpDir, "foo/bar/dev"), { recursive: true });
|
fs.mkdirSync(path.join(tempDir, "foo/bar/dev"), { recursive: true });
|
||||||
const configFile = "octo-org/codeql-config/config.yaml@main";
|
const configFile = "octo-org/codeql-config/config.yaml@main";
|
||||||
const languages = "javascript";
|
const languagesInput = "javascript";
|
||||||
await configUtils.initConfig(languages, undefined, undefined, configFile, undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, codeQL, tmpDir, gitHubVersion, sampleApiDetails, (0, logging_1.getRunnerLogger)(true));
|
await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
languagesInput,
|
||||||
|
configFile,
|
||||||
|
tempDir,
|
||||||
|
codeql,
|
||||||
|
workspacePath: tempDir,
|
||||||
|
}));
|
||||||
t.assert(spyGetContents.called);
|
t.assert(spyGetContents.called);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("Remote config handles the case where a directory is provided", async (t) => {
|
(0, ava_1.default)("Remote config handles the case where a directory is provided", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
const dummyResponse = []; // directories are returned as arrays
|
const dummyResponse = []; // directories are returned as arrays
|
||||||
mockGetContents(dummyResponse);
|
mockGetContents(dummyResponse);
|
||||||
const repoReference = "octo-org/codeql-config/config.yaml@main";
|
const repoReference = "octo-org/codeql-config/config.yaml@main";
|
||||||
try {
|
try {
|
||||||
await configUtils.initConfig(undefined, undefined, undefined, repoReference, undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, (0, codeql_1.getCachedCodeQL)(), tmpDir, gitHubVersion, sampleApiDetails, (0, logging_1.getRunnerLogger)(true));
|
await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
configFile: repoReference,
|
||||||
|
tempDir,
|
||||||
|
codeql: (0, codeql_1.getCachedCodeQL)(),
|
||||||
|
workspacePath: tempDir,
|
||||||
|
}));
|
||||||
throw new Error("initConfig did not throw error");
|
throw new Error("initConfig did not throw error");
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
t.deepEqual(err, new util_1.UserError(configUtils.getConfigFileDirectoryGivenMessage(repoReference)));
|
t.deepEqual(err, new util_1.ConfigurationError(configUtils.getConfigFileDirectoryGivenMessage(repoReference)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("Invalid format of remote config handled correctly", async (t) => {
|
(0, ava_1.default)("Invalid format of remote config handled correctly", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
const dummyResponse = {
|
const dummyResponse = {
|
||||||
// note no "content" property here
|
// note no "content" property here
|
||||||
};
|
};
|
||||||
mockGetContents(dummyResponse);
|
mockGetContents(dummyResponse);
|
||||||
const repoReference = "octo-org/codeql-config/config.yaml@main";
|
const repoReference = "octo-org/codeql-config/config.yaml@main";
|
||||||
try {
|
try {
|
||||||
await configUtils.initConfig(undefined, undefined, undefined, repoReference, undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, (0, codeql_1.getCachedCodeQL)(), tmpDir, gitHubVersion, sampleApiDetails, (0, logging_1.getRunnerLogger)(true));
|
await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
configFile: repoReference,
|
||||||
|
tempDir,
|
||||||
|
codeql: (0, codeql_1.getCachedCodeQL)(),
|
||||||
|
workspacePath: tempDir,
|
||||||
|
}));
|
||||||
throw new Error("initConfig did not throw error");
|
throw new Error("initConfig did not throw error");
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
t.deepEqual(err, new util_1.UserError(configUtils.getConfigFileFormatInvalidMessage(repoReference)));
|
t.deepEqual(err, new util_1.ConfigurationError(configUtils.getConfigFileFormatInvalidMessage(repoReference)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("No detected languages", async (t) => {
|
(0, ava_1.default)("No detected languages", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
mockListLanguages([]);
|
mockListLanguages([]);
|
||||||
const codeQL = (0, codeql_1.setCodeQL)({
|
const codeql = (0, codeql_1.setCodeQL)({
|
||||||
async resolveLanguages() {
|
async resolveLanguages() {
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
@@ -375,23 +464,32 @@ function queriesToResolvedQueryForm(queries) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
await configUtils.initConfig(undefined, undefined, undefined, undefined, undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, codeQL, tmpDir, gitHubVersion, sampleApiDetails, (0, logging_1.getRunnerLogger)(true));
|
await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
tempDir,
|
||||||
|
codeql,
|
||||||
|
workspacePath: tempDir,
|
||||||
|
}));
|
||||||
throw new Error("initConfig did not throw error");
|
throw new Error("initConfig did not throw error");
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
t.deepEqual(err, new util_1.UserError(configUtils.getNoLanguagesError()));
|
t.deepEqual(err, new util_1.ConfigurationError(configUtils.getNoLanguagesError()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
(0, ava_1.default)("Unknown languages", async (t) => {
|
(0, ava_1.default)("Unknown languages", async (t) => {
|
||||||
return await (0, util_1.withTmpDir)(async (tmpDir) => {
|
return await (0, util_1.withTmpDir)(async (tempDir) => {
|
||||||
const languages = "rubbish,english";
|
const languagesInput = "rubbish,english";
|
||||||
try {
|
try {
|
||||||
await configUtils.initConfig(languages, undefined, undefined, undefined, undefined, undefined, false, false, "", "", { owner: "github", repo: "example" }, tmpDir, (0, codeql_1.getCachedCodeQL)(), tmpDir, gitHubVersion, sampleApiDetails, (0, logging_1.getRunnerLogger)(true));
|
await configUtils.initConfig(createTestInitConfigInputs({
|
||||||
|
languagesInput,
|
||||||
|
tempDir,
|
||||||
|
codeql: (0, codeql_1.getCachedCodeQL)(),
|
||||||
|
workspacePath: tempDir,
|
||||||
|
}));
|
||||||
throw new Error("initConfig did not throw error");
|
throw new Error("initConfig did not throw error");
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
t.deepEqual(err, new util_1.UserError(configUtils.getUnknownLanguagesError(["rubbish", "english"])));
|
t.deepEqual(err, new util_1.ConfigurationError(configUtils.getUnknownLanguagesError(["rubbish", "english"])));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -666,4 +764,27 @@ const mockRepositoryNwo = (0, repository_1.parseRepositoryNwo)("owner/repo");
|
|||||||
t.deepEqual(mockRequest.called, args.expectedApiCall);
|
t.deepEqual(mockRequest.called, args.expectedApiCall);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
(0, ava_1.default)("Build mode not overridden when disable Java buildless feature flag disabled", async (t) => {
|
||||||
|
const messages = [];
|
||||||
|
const buildMode = await configUtils.parseBuildModeInput("none", [languages_1.Language.java], (0, testing_utils_1.createFeatures)([]), (0, testing_utils_1.getRecordingLogger)(messages));
|
||||||
|
t.is(buildMode, util_1.BuildMode.None);
|
||||||
|
t.deepEqual(messages, []);
|
||||||
|
});
|
||||||
|
(0, ava_1.default)("Build mode not overridden for other languages", async (t) => {
|
||||||
|
const messages = [];
|
||||||
|
const buildMode = await configUtils.parseBuildModeInput("none", [languages_1.Language.python], (0, testing_utils_1.createFeatures)([feature_flags_1.Feature.DisableJavaBuildlessEnabled]), (0, testing_utils_1.getRecordingLogger)(messages));
|
||||||
|
t.is(buildMode, util_1.BuildMode.None);
|
||||||
|
t.deepEqual(messages, []);
|
||||||
|
});
|
||||||
|
(0, ava_1.default)("Build mode overridden when analyzing Java and disable Java buildless feature flag enabled", async (t) => {
|
||||||
|
const messages = [];
|
||||||
|
const buildMode = await configUtils.parseBuildModeInput("none", [languages_1.Language.java], (0, testing_utils_1.createFeatures)([feature_flags_1.Feature.DisableJavaBuildlessEnabled]), (0, testing_utils_1.getRecordingLogger)(messages));
|
||||||
|
t.is(buildMode, util_1.BuildMode.Autobuild);
|
||||||
|
t.deepEqual(messages, [
|
||||||
|
{
|
||||||
|
message: "Scanning Java code without a build is temporarily unavailable. Falling back to 'autobuild' build mode.",
|
||||||
|
type: "warning",
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
//# sourceMappingURL=config-utils.test.js.map
|
//# sourceMappingURL=config-utils.test.js.map
|
||||||
File diff suppressed because one or more lines are too long
15
lib/database-upload.test.js
generated
15
lib/database-upload.test.js
generated
@@ -33,7 +33,6 @@ const sinon = __importStar(require("sinon"));
|
|||||||
const actionsUtil = __importStar(require("./actions-util"));
|
const actionsUtil = __importStar(require("./actions-util"));
|
||||||
const apiClient = __importStar(require("./api-client"));
|
const apiClient = __importStar(require("./api-client"));
|
||||||
const codeql_1 = require("./codeql");
|
const codeql_1 = require("./codeql");
|
||||||
const config_utils_1 = require("./config-utils");
|
|
||||||
const database_upload_1 = require("./database-upload");
|
const database_upload_1 = require("./database-upload");
|
||||||
const languages_1 = require("./languages");
|
const languages_1 = require("./languages");
|
||||||
const testing_utils_1 = require("./testing-utils");
|
const testing_utils_1 = require("./testing-utils");
|
||||||
@@ -49,20 +48,10 @@ const testApiDetails = {
|
|||||||
apiURL: undefined,
|
apiURL: undefined,
|
||||||
};
|
};
|
||||||
function getTestConfig(tmpDir) {
|
function getTestConfig(tmpDir) {
|
||||||
return {
|
return (0, testing_utils_1.createTestConfig)({
|
||||||
languages: [languages_1.Language.javascript],
|
languages: [languages_1.Language.javascript],
|
||||||
originalUserInput: {},
|
|
||||||
tempDir: tmpDir,
|
|
||||||
codeQLCmd: "foo",
|
|
||||||
gitHubVersion: { type: util_1.GitHubVariant.DOTCOM },
|
|
||||||
dbLocation: tmpDir,
|
dbLocation: tmpDir,
|
||||||
debugMode: false,
|
});
|
||||||
debugArtifactName: util_1.DEFAULT_DEBUG_ARTIFACT_NAME,
|
|
||||||
debugDatabaseName: util_1.DEFAULT_DEBUG_DATABASE_NAME,
|
|
||||||
augmentationProperties: config_utils_1.defaultAugmentationProperties,
|
|
||||||
trapCaches: {},
|
|
||||||
trapCacheDownloadTime: 0,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
async function mockHttpRequests(databaseUploadStatusCode) {
|
async function mockHttpRequests(databaseUploadStatusCode) {
|
||||||
// Passing an auth token is required, so we just use a dummy value
|
// Passing an auth token is required, so we just use a dummy value
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
6
lib/debug-artifacts.js
generated
6
lib/debug-artifacts.js
generated
@@ -56,7 +56,11 @@ async function uploadDebugArtifacts(toUpload, rootDir, artifactName) {
|
|||||||
core.info("Could not parse user-specified `matrix` input into JSON. The debug artifact will not be named with the user's `matrix` input.");
|
core.info("Could not parse user-specified `matrix` input into JSON. The debug artifact will not be named with the user's `matrix` input.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await artifact.create().uploadArtifact(sanitizeArifactName(`${artifactName}${suffix}`), toUpload.map((file) => path.normalize(file)), path.normalize(rootDir), { continueOnError: true });
|
await artifact.create().uploadArtifact(sanitizeArifactName(`${artifactName}${suffix}`), toUpload.map((file) => path.normalize(file)), path.normalize(rootDir), {
|
||||||
|
continueOnError: true,
|
||||||
|
// ensure we don't keep the debug artifacts around for too long since they can be large.
|
||||||
|
retentionDays: 7,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
exports.uploadDebugArtifacts = uploadDebugArtifacts;
|
exports.uploadDebugArtifacts = uploadDebugArtifacts;
|
||||||
async function uploadSarifDebugArtifact(config, outputDir) {
|
async function uploadSarifDebugArtifact(config, outputDir) {
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"debug-artifacts.js","sourceRoot":"","sources":["../src/debug-artifacts.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"debug-artifacts.js","sourceRoot":"","sources":["../src/debug-artifacts.ts"],"names":[],"mappings":"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"}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user