Skip to content

Commit 1ae5ec3

Browse files
committed
Upload integration test logs on failure
Signed-off-by: Brad Davidson <[email protected]>
1 parent ac9f834 commit 1ae5ec3

File tree

3 files changed

+28
-9
lines changed

3 files changed

+28
-9
lines changed

.github/workflows/e2e.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,12 @@ jobs:
9494
run: |
9595
chmod +x ./dist/artifacts/k3s
9696
cd tests/e2e/${{ matrix.etest }}
97-
go test -timeout=45m ./${{ matrix.etest}}_test.go -test.v -ginkgo.v -ci -local
97+
go test -timeout=45m ./${{ matrix.etest }}_test.go -test.v -ginkgo.v -ci -local
9898
- name: On Failure, Upload Journald Logs
9999
uses: actions/upload-artifact@v4
100100
if: ${{ failure() }}
101101
with:
102-
name: e2e-${{ matrix.etest}}-logs
102+
name: e2e-${{ matrix.etest }}-logs
103103
path: tests/e2e/${{ matrix.etest }}/*log.txt
104104
retention-days: 30
105105
- name: On Failure, Launch Debug Session

.github/workflows/integration.yaml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,15 @@ jobs:
6363
run: |
6464
chmod +x ./dist/artifacts/k3s
6565
mkdir -p $GOCOVERDIR
66-
sudo -E env "PATH=$PATH" go test -timeout=45m ./tests/integration/${{ matrix.itest }}/... -run Integration -ginkgo.v -test.v
66+
cd tests/integration/${{ matrix.itest }}
67+
sudo -E env "PATH=$PATH" go test -timeout=45m ./... -run Integration -ginkgo.v -test.v
68+
- name: On Failure, Upload Logs
69+
uses: actions/upload-artifact@v4
70+
if: ${{ failure() }}
71+
with:
72+
name: integration-${{ matrix.itest }}-logs
73+
path: tests/integration/${{ matrix.itest }}/*log.txt
74+
retention-days: 30
6775
- name: On Failure, Launch Debug Session
6876
uses: lhotari/action-upterm@v1
6977
if: ${{ failure() }}

tests/integration/integration.go

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"os"
1111
"os/exec"
1212
"os/user"
13+
"path/filepath"
1314
"strings"
1415
"syscall"
1516
"time"
@@ -188,12 +189,18 @@ func K3sStartServer(inputArgs ...string) (*K3sServer, error) {
188189
// Give the server a new group id so we can kill it and its children later
189190
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
190191
// Pipe output to a file for debugging later
191-
f, err := os.Create("./k3log.txt")
192+
wd, err := os.Getwd()
192193
if err != nil {
193194
return nil, err
194195
}
196+
logpath := filepath.Join(wd, "k3s-log.txt")
197+
f, err := os.Create("k3s-log.txt")
198+
if err != nil {
199+
return nil, err
200+
}
201+
cmd.Stdout = f
195202
cmd.Stderr = f
196-
logrus.Info("Starting k3s server. Check k3log.txt for logs")
203+
logrus.Infof("Starting k3s server with stdout and stderr written to %s", logpath)
197204
err = cmd.Start()
198205
return &K3sServer{cmd, f}, err
199206
}
@@ -202,7 +209,7 @@ func K3sStartServer(inputArgs ...string) (*K3sServer, error) {
202209
// Equivalent to stopping the K3s service
203210
func K3sStopServer(server *K3sServer) error {
204211
if server.log != nil {
205-
server.log.Close()
212+
defer server.log.Close()
206213
}
207214
if err := server.cmd.Process.Signal(syscall.SIGTERM); err != nil {
208215
return err
@@ -224,8 +231,7 @@ func K3sKillServer(server *K3sServer) error {
224231
return nil
225232
}
226233
if server.log != nil {
227-
server.log.Close()
228-
os.Remove(server.log.Name())
234+
defer server.log.Close()
229235
}
230236
pgid, err := syscall.Getpgid(server.cmd.Process.Pid)
231237
if err != nil {
@@ -285,7 +291,12 @@ func K3sCleanup(k3sTestLock int, dataDir string) error {
285291
}
286292

287293
func K3sSaveLog(server *K3sServer, dump bool) error {
288-
server.log.Close()
294+
if server == nil {
295+
return nil
296+
}
297+
if server.log != nil {
298+
server.log.Close()
299+
}
289300
if !dump {
290301
return nil
291302
}

0 commit comments

Comments
 (0)