|
|
|
@ -150,51 +150,55 @@ jobs:
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const kubeconfig="/tmp/buildkit-k3s/kubeconfig.yaml";
|
|
|
|
|
core.info(`storing kubeconfig in ${kubeconfig}`);
|
|
|
|
|
|
|
|
|
|
await exec.exec('docker', ["run", "-d",
|
|
|
|
|
"--privileged",
|
|
|
|
|
"--name=buildkit-k3s",
|
|
|
|
|
"-e", "K3S_KUBECONFIG_OUTPUT="+kubeconfig,
|
|
|
|
|
"-e", "K3S_KUBECONFIG_MODE=666",
|
|
|
|
|
"-v", "/tmp/buildkit-k3s:/tmp/buildkit-k3s",
|
|
|
|
|
"-p", "6443:6443",
|
|
|
|
|
"-p", "80:80",
|
|
|
|
|
"-p", "443:443",
|
|
|
|
|
"-p", "8080:8080",
|
|
|
|
|
"rancher/k3s:${{ env.K3S_VERSION }}", "server"
|
|
|
|
|
]);
|
|
|
|
|
await wait(10000);
|
|
|
|
|
|
|
|
|
|
core.exportVariable('KUBECONFIG', kubeconfig);
|
|
|
|
|
await core.group(`Starting rancher/k3s:${{ env.K3S_VERSION }}`, async () => {
|
|
|
|
|
core.info(`storing kubeconfig in ${kubeconfig}`);
|
|
|
|
|
await exec.exec('docker', ["run", "-d",
|
|
|
|
|
"--privileged",
|
|
|
|
|
"--name=buildkit-k3s",
|
|
|
|
|
"-e", "K3S_KUBECONFIG_OUTPUT="+kubeconfig,
|
|
|
|
|
"-e", "K3S_KUBECONFIG_MODE=666",
|
|
|
|
|
"-v", "/tmp/buildkit-k3s:/tmp/buildkit-k3s",
|
|
|
|
|
"-p", "6443:6443",
|
|
|
|
|
"-p", "80:80",
|
|
|
|
|
"-p", "443:443",
|
|
|
|
|
"-p", "8080:8080",
|
|
|
|
|
"rancher/k3s:${{ env.K3S_VERSION }}", "server"
|
|
|
|
|
]);
|
|
|
|
|
await wait(10000);
|
|
|
|
|
core.exportVariable('KUBECONFIG', kubeconfig);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await core.group(`KUBECONFIG`, async () => {
|
|
|
|
|
core.info(fs.readFileSync(process.env.KUBECONFIG, {encoding: 'utf-8'}).trim());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
let nodeName;
|
|
|
|
|
for (let count = 1; count <= 5; count++) {
|
|
|
|
|
try {
|
|
|
|
|
const nodeNameOutput = await exec.getExecOutput("kubectl get nodes --no-headers -oname");
|
|
|
|
|
nodeName = nodeNameOutput.stdout
|
|
|
|
|
} catch (error) {
|
|
|
|
|
core.info(`Unable to resolve node name (${error.message}). Attempt ${count} of 5.`)
|
|
|
|
|
} finally {
|
|
|
|
|
if (nodeName) {
|
|
|
|
|
break;
|
|
|
|
|
await core.group(`Checking nodes`, async () => {
|
|
|
|
|
for (let count = 1; count <= 5; count++) {
|
|
|
|
|
try {
|
|
|
|
|
const nodeNameOutput = await exec.getExecOutput("kubectl get nodes --no-headers -oname");
|
|
|
|
|
nodeName = nodeNameOutput.stdout
|
|
|
|
|
} catch (error) {
|
|
|
|
|
core.info(`Unable to resolve node name (${error.message}). Attempt ${count} of 5.`)
|
|
|
|
|
} finally {
|
|
|
|
|
if (nodeName) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
await wait(5000);
|
|
|
|
|
}
|
|
|
|
|
await wait(5000);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if (!nodeName) {
|
|
|
|
|
throw new Error(`Unable to resolve node name after 5 attempts.`);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await exec.exec(`kubectl wait --for=condition=Ready ${nodeName}`);
|
|
|
|
|
|
|
|
|
|
await core.group(`Waiting for ready state`, async () => {
|
|
|
|
|
await exec.exec(`kubectl wait --for=condition=Ready ${nodeName}`);
|
|
|
|
|
});
|
|
|
|
|
} catch (error) {
|
|
|
|
|
core.setFailed(error.message);
|
|
|
|
|
}
|
|
|
|
|
-
|
|
|
|
|
name: Print KUBECONFIG
|
|
|
|
|
if: matrix.driver == 'kubernetes'
|
|
|
|
|
run: |
|
|
|
|
|
yq ${{ env.KUBECONFIG }}
|
|
|
|
|
-
|
|
|
|
|
name: Launch remote buildkitd
|
|
|
|
|
if: matrix.driver == 'remote'
|
|
|
|
|