From 83ef31fe10061f0d3db0df1bc5e7f208972982eb Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 10 Dec 2020 11:24:17 +0100 Subject: [PATCH] Save logs on ci failure --- .github/workflows/test.yml | 3 ++- shared/extra-utils/miscs/miscs.ts | 5 +++++ shared/extra-utils/server/servers.ts | 18 +++++++++++++++--- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 042ffe0d4..0231b1a1e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -105,4 +105,5 @@ jobs: if: failure() with: name: test-storages-${{ matrix.test_suite }} - path: test*/logs/* + path: artifacts + retention-days: 7 diff --git a/shared/extra-utils/miscs/miscs.ts b/shared/extra-utils/miscs/miscs.ts index 764b74bda..1cb1cf440 100644 --- a/shared/extra-utils/miscs/miscs.ts +++ b/shared/extra-utils/miscs/miscs.ts @@ -64,6 +64,10 @@ async function testImage (url: string, imageName: string, imagePath: string, ext expect(data.length).to.be.below(maxLength, "the generated image is way larger than the recorded fixture") } +function isGithubCI () { + return !!process.env.GITHUB_WORKSPACE +} + function buildAbsoluteFixturePath (path: string, customCIPath = false) { if (isAbsolute(path)) return path @@ -151,6 +155,7 @@ export { getFileSize, immutableAssign, testImage, + isGithubCI, buildAbsoluteFixturePath, root, generateHighBitrateVideo, diff --git a/shared/extra-utils/server/servers.ts b/shared/extra-utils/server/servers.ts index e88482e49..fe4ed3e48 100644 --- a/shared/extra-utils/server/servers.ts +++ b/shared/extra-utils/server/servers.ts @@ -2,11 +2,11 @@ import { expect } from 'chai' import { ChildProcess, exec, fork } from 'child_process' -import { copy, pathExists, readdir, readFile, remove } from 'fs-extra' +import { copy, ensureDir, pathExists, readdir, readFile, remove } from 'fs-extra' import { join } from 'path' import { randomInt } from '../../core-utils/miscs/miscs' import { VideoChannel } from '../../models/videos' -import { buildServerDirectory, getFileSize, root, wait } from '../miscs/miscs' +import { buildServerDirectory, getFileSize, isGithubCI, root, wait } from '../miscs/miscs' interface ServerInfo { app: ChildProcess @@ -298,11 +298,23 @@ function killallServers (servers: ServerInfo[]) { } } -function cleanupTests (servers: ServerInfo[]) { +async function cleanupTests (servers: ServerInfo[]) { killallServers(servers) + if (isGithubCI()) { + await ensureDir('artifacts') + } + const p: Promise[] = [] for (const server of servers) { + if (isGithubCI()) { + const origin = await buildServerDirectory(server, 'logs/peertube.log') + const destname = `peertube-${server.internalServerNumber}.log` + console.log('Saving logs %s.', destname) + + await copy(origin, join('artifacts', destname)) + } + if (server.parallel) { p.push(flushTests(server.internalServerNumber)) }