Skip to content

Commit 7049532

Browse files
authored
Merge pull request github#11364 from github/redsun82/swift-ci-cache
Swift: cache more aggressively in CI
2 parents 477a328 + 8df7d46 commit 7049532

File tree

4 files changed

+37
-41
lines changed

4 files changed

+37
-41
lines changed

.github/workflows/swift.yml

Lines changed: 23 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,42 +8,30 @@ on:
88
- "*.bazel*"
99
- .github/workflows/swift.yml
1010
- .github/actions/fetch-codeql/action.yml
11+
- .github/actions/cache-query-compilation/action.yml
1112
- codeql-workspace.yml
1213
- .pre-commit-config.yaml
1314
- "!**/*.md"
1415
- "!**/*.qhelp"
1516
branches:
1617
- main
18+
- rc/*
19+
push:
20+
paths:
21+
- "swift/**"
22+
- "misc/bazel/**"
23+
- "*.bazel*"
24+
- .github/workflows/swift.yml
25+
- .github/actions/fetch-codeql/action.yml
26+
- .github/actions/cache-query-compilation/action.yml
27+
- codeql-workspace.yml
28+
- "!**/*.md"
29+
- "!**/*.qhelp"
30+
branches:
31+
- main
32+
- rc/*
1733

1834
jobs:
19-
changes:
20-
runs-on: ubuntu-latest
21-
outputs:
22-
codegen: ${{ steps.filter.outputs.codegen }}
23-
ql: ${{ steps.filter.outputs.ql }}
24-
steps:
25-
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50
26-
id: filter
27-
with:
28-
filters: |
29-
codegen:
30-
- '.github/workflows/swift.yml'
31-
- "misc/bazel/**"
32-
- "*.bazel*"
33-
- 'swift/actions/setup-env/**'
34-
- '.pre-commit-config.yaml'
35-
- 'swift/codegen/**'
36-
- 'swift/schema.py'
37-
- 'swift/**/*.dbscheme'
38-
- 'swift/ql/lib/codeql/swift/elements.qll'
39-
- 'swift/ql/lib/codeql/swift/elements/**'
40-
- 'swift/ql/lib/codeql/swift/generated/**'
41-
- 'swift/ql/test/extractor-tests/generated/**'
42-
- 'swift/ql/.generated.list'
43-
ql:
44-
- 'github/workflows/swift.yml'
45-
- 'swift/**/*.ql'
46-
- 'swift/**/*.qll'
4735
# not using a matrix as you cannot depend on a specific job in a matrix, and we want to start linux checks
4836
# without waiting for the macOS build
4937
build-and-test-macos:
@@ -54,46 +42,41 @@ jobs:
5442
- uses: ./swift/actions/run-quick-tests
5543
- uses: ./swift/actions/print-unextracted
5644
build-and-test-linux:
57-
runs-on: ubuntu-20.04
45+
runs-on: ubuntu-latest-xl
5846
steps:
5947
- uses: actions/checkout@v3
6048
- uses: ./swift/actions/create-extractor-pack
6149
- uses: ./swift/actions/run-quick-tests
6250
- uses: ./swift/actions/print-unextracted
6351
qltests-linux:
6452
needs: build-and-test-linux
65-
runs-on: ubuntu-latest
53+
runs-on: ubuntu-latest-xl
6654
steps:
6755
- uses: actions/checkout@v3
6856
- uses: ./swift/actions/run-ql-tests
6957
qltests-macos:
58+
if : ${{ github.event_name == 'pull_request' }}
7059
needs: build-and-test-macos
7160
runs-on: macos-12-xl
72-
strategy:
73-
fail-fast: false
74-
matrix:
75-
slice: ["1/2", "2/2"]
7661
steps:
7762
- uses: actions/checkout@v3
7863
- uses: ./swift/actions/run-ql-tests
79-
with:
80-
flags: --slice ${{ matrix.slice }}
8164
integration-tests-linux:
8265
needs: build-and-test-linux
83-
runs-on: ubuntu-latest
66+
runs-on: ubuntu-latest-xl
8467
steps:
8568
- uses: actions/checkout@v3
8669
- uses: ./swift/actions/run-integration-tests
8770
integration-tests-macos:
71+
if : ${{ github.event_name == 'pull_request' }}
8872
needs: build-and-test-macos
8973
runs-on: macos-12-xl
9074
steps:
9175
- uses: actions/checkout@v3
9276
- uses: ./swift/actions/run-integration-tests
9377
codegen:
78+
if : ${{ github.event_name == 'pull_request' }}
9479
runs-on: ubuntu-latest
95-
needs: changes
96-
if: ${{ needs.changes.outputs.codegen == 'true' }}
9780
steps:
9881
- uses: actions/checkout@v3
9982
- uses: ./swift/actions/setup-env
@@ -114,6 +97,7 @@ jobs:
11497
name: swift-generated-cpp-files
11598
path: generated-cpp-files/**
11699
database-upgrade-scripts:
100+
if : ${{ github.event_name == 'pull_request' }}
117101
runs-on: ubuntu-latest
118102
steps:
119103
- uses: actions/checkout@v3

swift/actions/run-integration-tests/action.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ runs:
1717
with:
1818
swift-version: "${{steps.get_swift_version.outputs.version}}"
1919
- uses: ./.github/actions/fetch-codeql
20+
- id: query-cache
21+
uses: ./.github/actions/cache-query-compilation
22+
with:
23+
key: swift-qltest
2024
- name: Run integration tests
2125
shell: bash
2226
run: |
23-
python swift/integration-tests/runner.py
27+
python swift/integration-tests/runner.py --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}"

swift/actions/run-ql-tests/action.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,23 @@ runs:
1010
steps:
1111
- uses: ./swift/actions/share-extractor-pack
1212
- uses: ./.github/actions/fetch-codeql
13+
- id: query-cache
14+
uses: ./.github/actions/cache-query-compilation
15+
with:
16+
key: swift-qltest
1317
- name: Run QL tests
1418
shell: bash
1519
run: |
1620
codeql test run \
1721
--threads=0 \
18-
--ram 5000 \
22+
--ram 52000 \
1923
--search-path "${{ github.workspace }}/swift/extractor-pack" \
2024
--check-databases \
2125
--check-unused-labels \
2226
--check-repeated-labels \
2327
--check-redefined-labels \
2428
--check-use-before-definition \
29+
--compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" \
2530
${{ inputs.flags }} \
2631
swift/ql/test
2732
env:

swift/integration-tests/runner.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def options():
2525
p.add_argument("--check-databases", action="store_true")
2626
p.add_argument("--learn", action="store_true")
2727
p.add_argument("--threads", "-j", type=int, default=0)
28+
p.add_argument("--compilation-cache")
2829
return p.parse_args()
2930

3031

@@ -65,6 +66,8 @@ def main(opts):
6566
cmd.append("--no-check-databases")
6667
if opts.learn:
6768
cmd.append("--learn")
69+
if opts.compilation_cache:
70+
cmd.append(f'--compilation-cache="{opts.compilation_cache}"')
6871
cmd.extend(str(t.parent) for t in succesful_db_creation)
6972
ql_test_success = subprocess.run(cmd).returncode == 0
7073

0 commit comments

Comments
 (0)