Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0370d1a

Browse files
authored
Merge pull request #11008 from github/redsun82/swift-macos-integration-tests
Swift: rework workflows
2 parents 05bf86a + 7e0a7d8 commit 0370d1a

File tree

11 files changed

+235
-175
lines changed

11 files changed

+235
-175
lines changed

.github/workflows/swift-autobuilder.yml

Lines changed: 0 additions & 27 deletions
This file was deleted.

.github/workflows/swift-codegen.yml

Lines changed: 0 additions & 44 deletions
This file was deleted.

.github/workflows/swift-integration-tests.yml

Lines changed: 0 additions & 47 deletions
This file was deleted.

.github/workflows/swift-qltest.yml

Lines changed: 0 additions & 57 deletions
This file was deleted.

.github/workflows/swift.yml

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
name: "Swift"
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "swift/**"
7+
- "misc/bazel/**"
8+
- "*.bazel*"
9+
- .github/workflows/swift.yml
10+
- .github/actions/fetch-codeql/action.yml
11+
- codeql-workspace.yml
12+
- .pre-commit-config.yaml
13+
- "!**/*.md"
14+
- "!**/*.qhelp"
15+
branches:
16+
- main
17+
18+
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+
ql:
43+
- 'github/workflows/swift.yml'
44+
- 'swift/**/*.ql'
45+
- 'swift/**/*.qll'
46+
# not using a matrix as you cannot depend on a specific job in a matrix, and we want to start linux checks
47+
# without waiting for the macOS build
48+
build-and-test-macos:
49+
runs-on: macos-12-xl
50+
steps:
51+
- uses: actions/checkout@v3
52+
- uses: ./swift/actions/create-extractor-pack
53+
- uses: ./swift/actions/run-quick-tests
54+
build-and-test-linux:
55+
runs-on: ubuntu-20.04
56+
steps:
57+
- uses: actions/checkout@v3
58+
- uses: ./swift/actions/create-extractor-pack
59+
- uses: ./swift/actions/run-quick-tests
60+
qltests-linux:
61+
needs: build-and-test-linux
62+
runs-on: ubuntu-latest
63+
steps:
64+
- uses: actions/checkout@v3
65+
- uses: ./swift/actions/run-ql-tests
66+
qltests-macos:
67+
needs: build-and-test-macos
68+
runs-on: macos-12-xl
69+
strategy:
70+
fail-fast: false
71+
matrix:
72+
slice: ["1/2", "2/2"]
73+
steps:
74+
- uses: actions/checkout@v3
75+
- uses: ./swift/actions/run-ql-tests
76+
with:
77+
flags: --slice ${{ matrix.slice }}
78+
integration-tests-linux:
79+
needs: build-and-test-linux
80+
runs-on: ubuntu-latest
81+
steps:
82+
- uses: actions/checkout@v3
83+
- uses: ./swift/actions/run-integration-tests
84+
integration-tests-macos:
85+
needs: build-and-test-macos
86+
runs-on: macos-12-xl
87+
steps:
88+
- uses: actions/checkout@v3
89+
- uses: ./swift/actions/run-integration-tests
90+
codegen:
91+
runs-on: ubuntu-latest
92+
needs: changes
93+
if: ${{ needs.changes.outputs.codegen == 'true' }}
94+
steps:
95+
- uses: actions/checkout@v3
96+
- uses: ./swift/actions/setup-env
97+
- uses: pre-commit/[email protected]
98+
name: Check that python code is properly formatted
99+
with:
100+
extra_args: autopep8 --all-files
101+
- uses: ./.github/actions/fetch-codeql
102+
- uses: pre-commit/[email protected]
103+
name: Check that QL generated code was checked in
104+
with:
105+
extra_args: swift-codegen --all-files
106+
- name: Generate C++ files
107+
run: |
108+
bazel run //swift/codegen:codegen -- --generate=trap,cpp --cpp-output=$PWD/generated-cpp-files
109+
- uses: actions/upload-artifact@v3
110+
with:
111+
name: swift-generated-cpp-files
112+
path: swift/generated-cpp-files/**
113+
qlformat:
114+
runs-on: ubuntu-latest
115+
needs: changes
116+
if: ${{ needs.changes.outputs.ql == 'true' }}
117+
steps:
118+
- uses: actions/checkout@v3
119+
- uses: ./.github/actions/fetch-codeql
120+
- name: Check QL formatting
121+
run: find swift/ql "(" -name "*.ql" -or -name "*.qll" ")" -print0 | xargs -0 codeql query format --check-only
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Build Swift CodeQL pack
2+
description: Builds the Swift CodeQL pack
3+
runs:
4+
using: composite
5+
steps:
6+
- uses: ./swift/actions/setup-env
7+
- uses: ./swift/actions/share-extractor-pack
8+
- name: Build Swift extractor
9+
shell: bash
10+
run: |
11+
bazel run //swift:create-extractor-pack
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Build Swift CodeQL pack
2+
description: Builds the Swift CodeQL pack
3+
runs:
4+
using: composite
5+
steps:
6+
- uses: ./swift/actions/share-extractor-pack
7+
- name: Get Swift version
8+
id: get_swift_version
9+
shell: bash
10+
run: |
11+
VERSION=$(swift/extractor-pack/tools/*/extractor --version | awk '/version/ { print $3 }')
12+
echo "version=$VERSION" | tee -a $GITHUB_OUTPUT
13+
- uses: actions/setup-python@v4
14+
with:
15+
python-version-file: 'swift/.python-version'
16+
- uses: swift-actions/setup-swift@v1
17+
with:
18+
swift-version: "${{steps.get_swift_version.outputs.version}}"
19+
- uses: ./.github/actions/fetch-codeql
20+
- name: Run integration tests
21+
shell: bash
22+
run: |
23+
python swift/integration-tests/runner.py

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Build Swift CodeQL pack
2+
description: Builds the Swift CodeQL pack
3+
inputs:
4+
flags:
5+
description: "Additional `codeql test run` flags"
6+
required: false
7+
default: ""
8+
runs:
9+
using: composite
10+
steps:
11+
- uses: ./swift/actions/share-extractor-pack
12+
- uses: ./.github/actions/fetch-codeql
13+
- name: Run QL tests
14+
shell: bash
15+
run: |
16+
codeql test run \
17+
--threads=0 \
18+
--ram 5000 \
19+
--search-path "${{ github.workspace }}/swift/extractor-pack" \
20+
--check-databases \
21+
--check-unused-labels \
22+
--check-repeated-labels \
23+
--check-redefined-labels \
24+
--check-use-before-definition \
25+
${{ inputs.flags }} \
26+
swift/ql/test
27+
env:
28+
GITHUB_TOKEN: ${{ github.token }}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: Run Swift quick tests
2+
description: Runs Swift tests defined in Bazel. Must be run after `setup-env`
3+
runs:
4+
using: composite
5+
steps:
6+
- name: Run xcode-autobuilder tests
7+
if: runner.os == 'macOS'
8+
shell: bash
9+
run: |
10+
bazel test //swift/xcode-autobuilder/tests
11+
- name: Run codegen tests
12+
shell: bash
13+
run: |
14+
bazel test //swift/codegen/test
15+
- name: Run qltest tests
16+
shell: bash
17+
run: |
18+
bazel test //swift/tools/test/qltest

0 commit comments

Comments
 (0)