-
Notifications
You must be signed in to change notification settings - Fork 13
132 lines (129 loc) · 5.57 KB
/
e2e.yml
File metadata and controls
132 lines (129 loc) · 5.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: e2e
on:
push:
branches: [main, smart-tests] # smart-tests branch temporarily added for Smart Tests CLI development
workflow_dispatch:
env:
SMART_TESTS_DEBUG: 1
SMART_TESTS_REPORT_ERROR: 1
# The WORKSPACE file is disabled by default in Bazel 8.
# As a workaround, we configure the old version.
USE_BAZEL_VERSION: "7.x"
jobs:
tests:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
with:
repository: launchableinc/examples
path: examples
- name: Set up JDK 1.8
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4
with:
java-version: 8
distribution: "temurin"
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5
with:
go-version: 1.24
- name: Install uv
uses: astral-sh/setup-uv@caf0cab7a618c569241d31dcd442f54681755d39 # v3
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
- name: Install dependencies
run: uv sync --dev && uv tool install .
# bazel
- name: Install Bazelisk
run: |
go install github.com/bazelbuild/bazelisk@latest
- name: "bazel: verify"
run: "smart-tests verify"
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
- name: "bazel: Record build"
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=../.. --source cli=../../..'
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
working-directory: examples/bazel/java
- name: "bazel: Record session"
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "bazel" > bazel-test-session.txt'
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
working-directory: examples/bazel/java
- name: "bazel: Subset"
run: bazelisk query 'tests(//...)' | smart-tests subset bazel --session $(cat bazel-test-session.txt) --target 30% > subset.txt
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
working-directory: examples/bazel/java
- name: "bazel: Run test"
run: bazelisk test $(cat subset.txt)
working-directory: examples/bazel/java
- name: "bazel: Record test results"
run: smart-tests record tests bazel --session $(cat bazel-test-session.txt) .
if: always()
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_BAZEL }}
working-directory: examples/bazel/java
# go
- name: Install go-junit-report
run: |
go install github.com/jstemmer/go-junit-report@latest
working-directory: examples/go
- name: "go: verify"
run: "smart-tests verify"
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
- name: "go: Record build"
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=.. --source cli=../..'
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
working-directory: examples/go
- name: "go: Record session"
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "go-test" > go-test-session.txt'
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
working-directory: examples/go
- name: "go: Subset"
run: go test -list="Test|Example" ./... | smart-tests subset go-test --session $(cat go-test-session.txt) --confidence 80% > smart-tests-subset.txt
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
working-directory: examples/go
- name: "go: Run test"
run: go test -run $(cat smart-tests-subset.txt) ./... -v 2>&1 | go-junit-report -set-exit-code > report.xml
working-directory: examples/go
- name: "go: Record test results"
run: smart-tests record tests go-test --session $(cat go-test-session.txt) report.xml
if: always()
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GO }}
working-directory: examples/go
# gradle
- name: "gradle: verify"
run: "smart-tests verify"
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
- name: "gradle: Record build"
run: 'smart-tests record build --build "$GITHUB_RUN_ID" --source main=.. --source cli=../..'
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
working-directory: examples/gradle
- name: "gradle: Record session"
run: 'smart-tests record session --build "$GITHUB_RUN_ID" --test-suite "gradle" > gradle-test-session.txt'
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
working-directory: examples/gradle
- name: "gradle: Subset"
run: smart-tests subset gradle --session $(cat gradle-test-session.txt) --target 80% src/test/java > smart-tests-subset.txt
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
working-directory: examples/gradle
- name: "gradle: Run test"
run: ./gradlew test $(cat smart-tests-subset.txt)
working-directory: examples/gradle
- name: "gradle: Record test results"
run: smart-tests record tests gradle --session $(cat gradle-test-session.txt) build/test-results/test
if: always()
env:
SMART_TESTS_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN_GRADLE }}
working-directory: examples/gradle