ci: split docker install integration tests

Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax 2024-11-18 16:27:39 +01:00
parent c2a62c4476
commit 750472e8ac
No known key found for this signature in database
GPG Key ID: ADE44D8C9D44FBE4
2 changed files with 54 additions and 29 deletions

View File

@ -99,6 +99,27 @@ jobs:
#- macos-14 # no virt: https://github.com/docker/actions-toolkit/issues/317
- macos-13
- windows-latest
includes:
- os: macos-13
test: docker/install.test.itg.ts
docker_install_type: image
docker_install_version: 27.3.1
- os: macos-13
test: docker/install.test.itg.ts
docker_install_type: image
docker_install_version: master
- os: macos-13
test: docker/install.test.itg.ts
docker_install_type: image
docker_install_version: latest
- os: macos-13
test: docker/install.test.itg.ts
docker_install_type: archive
docker_install_version: v26.1.4
- os: macos-13
test: docker/install.test.itg.ts
docker_install_type: archive
docker_install_version: latest
steps:
-
name: Checkout
@ -151,6 +172,8 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CTN_BUILDER_NAME: ${{ steps.builder.outputs.name }}
TEST_FOR_SUMMARY: ${{ secrets.TEST_FOR_SUMMARY }}
DOCKER_INSTALL_TYPE: ${{ matrix.docker_install_type }}
DOCKER_INSTALL_VERSION: ${{ matrix.docker_install_version }}
-
name: Check coverage
run: |

View File

@ -14,18 +14,21 @@
* limitations under the License.
*/
import {jest, describe, test, beforeEach, afterEach, expect} from '@jest/globals';
import {jest, describe, beforeEach, afterEach, expect, it} from '@jest/globals';
import fs from 'fs';
import os from 'os';
import path from 'path';
import {Install, InstallSourceArchive, InstallSourceImage} from '../../src/docker/install';
import {Install, InstallSource, InstallSourceArchive, InstallSourceImage} from '../../src/docker/install';
import {Docker} from '../../src/docker/docker';
import {Exec} from '../../src/exec';
const dockerInstallType = process.env.DOCKER_INSTALL_TYPE || 'archive';
const dockerInstallVersion = process.env.DOCKER_INSTALL_VERSION || 'latest';
const tmpDir = () => fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'docker-install-itg-'));
describe('install', () => {
describe('root', () => {
const originalEnv = process.env;
beforeEach(() => {
jest.resetModules();
@ -39,41 +42,26 @@ aarch64:https://cloud.debian.org/images/cloud/bookworm/20231013-1532/debian-12-g
afterEach(() => {
process.env = originalEnv;
});
// prettier-ignore
test.each([
{type: 'image', tag: '27.3.1'} as InstallSourceImage,
{type: 'image', tag: 'master'} as InstallSourceImage,
{type: 'image', tag: 'latest'} as InstallSourceImage,
{type: 'archive', version: 'v26.1.4', channel: 'stable'} as InstallSourceArchive,
{type: 'archive', version: 'latest', channel: 'stable'} as InstallSourceArchive,
])(
'install docker %s', async (source) => {
it(
'install docker',
async () => {
await ensureNoSystemContainerd();
const install = new Install({
source: source,
source: getSource(),
runDir: tmpDir(),
contextName: 'foo',
daemonConfig: `{"debug":true,"features":{"containerd-snapshotter":true}}`
});
await expect(tryInstall(install)).resolves.not.toThrow();
}, 30 * 60 * 1000);
});
describe('rootless', () => {
// prettier-ignore
test.each([
{type: 'image', tag: 'latest'} as InstallSourceImage,
{type: 'archive', version: 'latest', channel: 'stable'} as InstallSourceArchive,
])(
'install %s', async (source) => {
// Skip on non linux
if (os.platform() !== 'linux') {
return;
}
},
30 * 60 * 1000
);
it(
'install rootless docker',
async () => {
await ensureNoSystemContainerd();
const install = new Install({
source: source,
source: getSource(),
runDir: tmpDir(),
contextName: 'foo',
daemonConfig: `{"debug":true}`,
@ -122,3 +110,17 @@ async function ensureNoSystemContainerd() {
});
}
}
function getSource(): InstallSource {
if (dockerInstallType === 'archive') {
return {
version: dockerInstallVersion,
channel: 'stable'
} as InstallSourceArchive;
} else {
return {
type: dockerInstallType,
tag: dockerInstallVersion
} as InstallSourceImage;
}
}