From 69173c6cade14cb82122c07340f40b59373c4f32 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Thu, 27 Aug 2020 01:39:01 +0200 Subject: [PATCH] Fix yarn test for container based dev flow Signed-off-by: CrazyMax --- Dockerfile | 8 ++++---- __tests__/buildx.test.ts | 21 +++++++++++++++------ src/docker.ts | 7 +++++++ 3 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 src/docker.ts diff --git a/Dockerfile b/Dockerfile index 9c57a11..489c285 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ FROM node:14 AS deps WORKDIR /src COPY package.json yarn.lock ./ RUN --mount=type=cache,target=/usr/local/share/.cache/yarn \ - yarn install + yarn install FROM scratch AS update-yarn COPY --from=deps /src/yarn.lock / @@ -26,9 +26,9 @@ ARG BUILDX_VERSION=v0.4.2 ENV RUNNER_TEMP=/tmp/github_runner ENV RUNNER_TOOL_CACHE=/tmp/github_tool_cache RUN mkdir -p /usr/local/lib/docker/cli-plugins && \ - curl -fsSL https://github.com/docker/buildx/releases/download/$BUILDX_VERSION/buildx-$BUILDX_VERSION.$TARGETOS-$TARGETARCH > /usr/local/lib/docker/cli-plugins/buildx && \ - chmod +x /usr/local/lib/docker/cli-plugins/buildx && \ - docker buildx --version && env + curl -fsSL https://github.com/docker/buildx/releases/download/$BUILDX_VERSION/buildx-$BUILDX_VERSION.$TARGETOS-$TARGETARCH > /usr/local/lib/docker/cli-plugins/docker-buildx && \ + chmod +x /usr/local/lib/docker/cli-plugins/docker-buildx && \ + docker buildx version COPY . . RUN yarn run test diff --git a/__tests__/buildx.test.ts b/__tests__/buildx.test.ts index 72ac22b..8720846 100644 --- a/__tests__/buildx.test.ts +++ b/__tests__/buildx.test.ts @@ -1,4 +1,5 @@ import fs = require('fs'); +import * as docker from '../src/docker'; import * as buildx from '../src/buildx'; import * as path from 'path'; import * as os from 'os'; @@ -6,6 +7,10 @@ import * as os from 'os'; const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'setup-buildx-')); describe('buildx', () => { + async function isDaemonRunning() { + return await docker.isDaemonRunning(); + } + it('is available', async () => { expect(await buildx.isAvailable()).toBe(true); }, 100000); @@ -16,12 +21,16 @@ describe('buildx', () => { expect(countBuilders).toBeGreaterThan(0); }, 100000); - it('platforms', async () => { - const platforms = await buildx.platforms(); - console.log(`platforms: ${platforms}`); - expect(platforms).not.toBeUndefined(); - expect(platforms).not.toEqual(''); - }, 100000); + (isDaemonRunning() ? it : it.skip)( + 'platforms', + async () => { + const platforms = buildx.platforms(); + console.log(`platforms: ${platforms}`); + expect(platforms).not.toBeUndefined(); + expect(platforms).not.toEqual(''); + }, + 100000 + ); it('acquires v0.2.2 version of buildx', async () => { const buildxBin = await buildx.install('v0.2.2', tmpDir); diff --git a/src/docker.ts b/src/docker.ts new file mode 100644 index 0000000..a35b384 --- /dev/null +++ b/src/docker.ts @@ -0,0 +1,7 @@ +import * as exec from './exec'; + +export async function isDaemonRunning(): Promise { + return await exec.exec(`docker`, ['version', '--format', '{{.Server.Os}}'], true).then(res => { + return !res.stdout.includes(' ') && res.success; + }); +}