Compare commits
6 Commits
c53e0cc99b
...
77547cedce
Author | SHA1 | Date | |
---|---|---|---|
77547cedce | |||
24ec99bacd | |||
354b1cbedd | |||
e96cfac95c | |||
9bb15afa21 | |||
27abdc3687 |
2
.github/workflows/e2e.yml
vendored
2
.github/workflows/e2e.yml
vendored
@ -125,7 +125,7 @@ jobs:
|
||||
echo 'distro = { id = "${{ matrix.os.distro }}", release = "${{ matrix.os.release }}" }' >> examples/kernel-module/.out-of-tree.toml
|
||||
echo 'kernel = { regex = ".*" }' >> examples/kernel-module/.out-of-tree.toml
|
||||
echo '[qemu]' >> examples/kernel-module/.out-of-tree.toml
|
||||
echo 'timeout = "3m"' >> examples/kernel-module/.out-of-tree.toml
|
||||
echo 'timeout = "5m"' >> examples/kernel-module/.out-of-tree.toml
|
||||
echo 'after_start_timeout = "10s"' >> examples/kernel-module/.out-of-tree.toml
|
||||
|
||||
echo 'modprobe uio || modprobe 9p || modprobe xfs' >> examples/kernel-module/test.sh
|
||||
|
@ -338,7 +338,11 @@ func (ka Artifact) Process(slog zerolog.Logger, ki distro.KernelInfo,
|
||||
slog.Debug().Str("duration", time.Since(start).String()).
|
||||
Msg("build done")
|
||||
if err != nil {
|
||||
slog.Error().Err(err).Msgf("build failure\n%v\n", result.Build.Output)
|
||||
if !realtimeOutput {
|
||||
slog.Error().Err(err).Msgf("build failure\n%v\n", result.Build.Output)
|
||||
} else {
|
||||
slog.Error().Err(err).Msg("build failure")
|
||||
}
|
||||
return
|
||||
} else {
|
||||
if outputOnSuccess && !realtimeOutput {
|
||||
@ -367,6 +371,8 @@ func (ka Artifact) Process(slog zerolog.Logger, ki distro.KernelInfo,
|
||||
ka.Qemu.Timeout.Duration = time.Minute
|
||||
}
|
||||
|
||||
slog.Info().Msg("wait for vm initialisation")
|
||||
|
||||
err = q.WaitForSSH(ka.Qemu.Timeout.Duration)
|
||||
if err != nil {
|
||||
result.InternalError = err
|
||||
@ -419,14 +425,15 @@ func (ka Artifact) Process(slog zerolog.Logger, ki distro.KernelInfo,
|
||||
}
|
||||
|
||||
start := time.Now()
|
||||
slog.Info().Msg("copy artifact and run test")
|
||||
copyArtifactAndTest(slog, q, ka, &result, remoteTest, outputOnSuccess, realtimeOutput)
|
||||
slog.Debug().Str("duration", time.Since(start).String()).
|
||||
Msgf("test completed (success: %v)", result.Test.Ok)
|
||||
|
||||
if result.Build.Ok {
|
||||
if result.Build.Ok && !realtimeOutput {
|
||||
if !result.Run.Ok || !result.Test.Ok {
|
||||
slog.Error().Msgf("qemu output\n%v\n", qemuTestOutput)
|
||||
} else if outputOnSuccess && !realtimeOutput {
|
||||
} else if outputOnSuccess {
|
||||
slog.Info().Msgf("qemu output\n%v\n", qemuTestOutput)
|
||||
}
|
||||
}
|
||||
|
@ -352,7 +352,11 @@ func copyArtifactAndTest(slog zerolog.Logger, q *qemu.System, ka Artifact,
|
||||
}
|
||||
|
||||
if err != nil || !res.Test.Ok {
|
||||
slog.Error().Err(err).Msgf("test error\n%v\n", res.Test.Output)
|
||||
if !realtimeOutput {
|
||||
slog.Error().Err(err).Msgf("test failure\n%v\n", res.Test.Output)
|
||||
} else {
|
||||
slog.Error().Err(err).Msg("test failure")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -198,9 +198,11 @@ func (c Client) PushRepo(repo api.Repo) (err error) {
|
||||
remote := fmt.Sprintf("git://%s/%s", addr, repo.Name)
|
||||
log.Debug().Msgf("git proxy remote: %v", remote)
|
||||
|
||||
raw, err := exec.Command("git", "--work-tree", repo.Path, "push", "--force", remote).
|
||||
raw, err := exec.Command("git", "-c", "push.default=current",
|
||||
"--work-tree", repo.Path, "push", "--force", remote).
|
||||
CombinedOutput()
|
||||
if err != nil {
|
||||
log.Error().Msgf("push repo %v\n%v", repo, string(raw))
|
||||
return
|
||||
}
|
||||
|
||||
|
16
cmd/log.go
16
cmd/log.go
@ -1,4 +1,4 @@
|
||||
// Copyright 2023 Mikhail Klementev. All rights reserved.
|
||||
// Copyright 2024 Mikhail Klementev. All rights reserved.
|
||||
// Use of this source code is governed by a AGPLv3 license
|
||||
// (or later) that can be found in the LICENSE file.
|
||||
|
||||
@ -212,7 +212,12 @@ func center(s string, w int) string {
|
||||
}
|
||||
|
||||
func genOkFailCentered(name string, ok bool) (aurv aurora.Value) {
|
||||
name = center(name, 10)
|
||||
if ok {
|
||||
name += " OK"
|
||||
} else {
|
||||
name += " FAIL"
|
||||
}
|
||||
name = center(name, 14)
|
||||
if ok {
|
||||
aurv = aurora.BgGreen(aurora.Black(name))
|
||||
} else {
|
||||
@ -225,7 +230,7 @@ func logLogEntry(l logEntry) {
|
||||
distroInfo := fmt.Sprintf("%s-%s {%s}", l.Distro.ID,
|
||||
l.Distro.Release, l.KernelRelease)
|
||||
|
||||
artifactInfo := fmt.Sprintf("{[%s] %s}", l.Type, l.Name)
|
||||
artifactInfo := fmt.Sprintf("%s", l.Name)
|
||||
|
||||
timestamp := l.Timestamp.Format("2006-01-02 15:04")
|
||||
|
||||
@ -257,7 +262,10 @@ func logLogEntry(l logEntry) {
|
||||
additional = "(timeout)"
|
||||
}
|
||||
|
||||
colored := aurora.Sprintf("[%4d %4s] [%s] %s %-70s: %s %s",
|
||||
if len(distroInfo) > 40 {
|
||||
distroInfo = distroInfo[:40]
|
||||
}
|
||||
colored := aurora.Sprintf("[%4d %4s] [%s] %s %-40s: %s %s",
|
||||
l.ID, l.Tag, timestamp, artifactInfo, distroInfo, status,
|
||||
additional)
|
||||
|
||||
|
@ -168,6 +168,11 @@ func (cmd *PewCmd) Run(g *Globals) (err error) {
|
||||
cmd.useRemote = g.Remote
|
||||
cmd.remoteAddr = g.RemoteAddr
|
||||
|
||||
if cmd.RealtimeOutput && cmd.Threads != 1 {
|
||||
log.Warn().Msg("realtime output disables multithreading")
|
||||
cmd.Threads = 1
|
||||
}
|
||||
|
||||
if cmd.useRemote {
|
||||
c := client.Client{RemoteAddr: cmd.remoteAddr}
|
||||
cmd.Kcfg.Kernels, err = c.Kernels()
|
||||
|
Loading…
Reference in New Issue
Block a user