Skip to content

Commit 0183bb1

Browse files
committed
deps: bump cri-dockerd to 0.2.3
1 parent 4582844 commit 0183bb1

File tree

2 files changed

+56
-14
lines changed

2 files changed

+56
-14
lines changed

src/__tests__/download.test.js

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ describe('download module test suite', () => {
108108
});
109109
});
110110

111-
describe('installCriDockerd', () => {
111+
describe('installCriDockerd with token', () => {
112112
let fs;
113113
let exec;
114114
beforeEach(() => {
@@ -117,12 +117,24 @@ describe('download module test suite', () => {
117117
axios.mockImplementationOnce(async () => ({
118118
data: {
119119
assets: [
120+
{
121+
name: 'cri-dockerd-0.2.3-3.el7.src.rpm',
122+
browser_download_url: 'http://invalid'
123+
},
124+
{
125+
name: 'cri-dockerd-0.2.3-3.el7.src.rpm',
126+
browser_download_url: 'http://invalid'
127+
},
120128
{
121129
name: 'cri-dockerd-v0.2.0-darwin-arm64.tar.gz',
122130
browser_download_url: 'http://invalid'
123131
},
124132
{
125-
name: 'cri-dockerd-v0.2.0-linux-amd64.tar.gz',
133+
name: 'cri-dockerd-0.2.3.arm64.tgz',
134+
browser_download_url: 'http://invalid'
135+
},
136+
{
137+
name: 'cri-dockerd-0.2.3.amd64.tgz',
126138
browser_download_url: 'http://valid'
127139
},
128140
{
@@ -132,30 +144,48 @@ describe('download module test suite', () => {
132144
]
133145
}
134146
}));
147+
tc.downloadTool.mockImplementationOnce(async () => 'cri-dockerd.tgz');
135148
fs.readdirSync = jest.fn(() => [
136149
{isDirectory: () => true, name: 'cri-dockerd'}
137150
]);
138151
fs.readFileSync = jest.fn(() => '');
139152
fs.writeFileSync = jest.fn();
140153
});
141-
test('with token, should download and install valid Linux version', async () => {
142-
// Given
143-
tc.downloadTool.mockImplementationOnce(async () => 'cri-dockerd.tar.gz');
154+
test('should download Linux version', async () => {
144155
// When
145156
await download.installCriDockerd({githubToken: 'secret-token'});
146157
// Then
147158
expect(axios).toHaveBeenCalledWith(
148159
expect.objectContaining({
149-
url: 'https://api.github.com/repos/Mirantis/cri-dockerd/releases/tags/v0.2.0',
160+
url: 'https://api.github.com/repos/Mirantis/cri-dockerd/releases/tags/v0.2.3',
150161
headers: {Authorization: 'token secret-token'}
151162
})
152163
);
153164
expect(tc.downloadTool).toHaveBeenCalledWith('http://valid');
154-
expect(tc.extractTar).toHaveBeenCalledWith(
155-
'cri-dockerd.tar.gz',
156-
'/usr/local/bin'
165+
});
166+
test('should install cri-dockerd binary', async () => {
167+
// When
168+
await download.installCriDockerd({githubToken: 'secret-token'});
169+
// Then
170+
expect(tc.extractTar).toHaveBeenCalledWith('cri-dockerd.tgz');
171+
expect(exec.logExecSync).toHaveBeenCalledWith(
172+
expect.stringMatching(
173+
/sudo cp -a .+\/cri-dockerd\/cri-dockerd \/usr\/local\/bin\//
174+
)
175+
);
176+
expect(exec.logExecSync).toHaveBeenCalledWith(
177+
'sudo ln -s /usr/local/bin/cri-dockerd /usr/bin/cri-dockerd'
178+
);
179+
});
180+
test('should install cri-dockerd service', async () => {
181+
// When
182+
await download.installCriDockerd({githubToken: 'secret-token'});
183+
// Then
184+
expect(exec.logExecSync).toHaveBeenCalledWith(
185+
expect.stringMatching(
186+
/sed -i 's\/cri-dockerd --\/cri-dockerd --network-plugin=cni --\/g'/
187+
)
157188
);
158-
expect(exec.logExecSync).toHaveBeenCalledTimes(4);
159189
expect(exec.logExecSync).toHaveBeenCalledWith(
160190
expect.stringMatching(
161191
/sudo cp -a .+\/packaging\/systemd\/\* \/etc\/systemd\/system/

src/download.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ const {logExecSync} = require('./exec');
99
const isLinux = name => name.indexOf('linux') >= 0;
1010
const isAmd64 = name => name.indexOf('amd64') >= 0;
1111
const isSignature = name => name.indexOf('sha256') >= 0;
12+
const isWindows = name => name.indexOf('.win.') >= 0;
13+
const isMac = name => name.indexOf('.darwin.') >= 0;
14+
const isTgz = name => name.endsWith('.tgz');
15+
const firstDir = dir => fs.readdirSync(dir, {withFileTypes: true}).filter(f => f.isDirectory()).map(f => f.name)[0];
16+
1217

1318
const getTagInfo = async ({inputs, releaseUrl}) => {
1419
const headers = {};
@@ -55,18 +60,25 @@ const installCriDockerd = async (inputs = {}) => {
5560
// const tagInfo = await getTagInfo({inputs, releaseUrl});
5661
// const tag = tagInfo.data.name;
5762
// const releaseUrl = 'https://api.github.com/repos/Mirantis/cri-dockerd/releases/latest';
58-
const tag = 'v0.2.0';
63+
const tag = 'v0.2.3';
5964
const releaseUrl = `https://api.github.com/repos/Mirantis/cri-dockerd/releases/tags/${tag}`;
6065
const binaryTar = await downloadGitHubArtifact({
6166
inputs,
6267
releaseUrl,
6368
assetPredicate: asset =>
64-
isLinux(asset.name) && isAmd64(asset.name) && !isSignature(asset.name) && asset.name.indexOf('cri-dockerd') === 0
69+
!isSignature(asset.name) && !isWindows(asset.name) && !isMac(asset.name) && isAmd64(asset.name) && isTgz(asset.name) && asset.name.indexOf('cri-dockerd') === 0
6570
});
66-
await tc.extractTar(binaryTar, '/usr/local/bin');
71+
// Binary
72+
const binaryDir = await tc.extractTar(binaryTar);
73+
const binaryContent = firstDir(binaryDir);
74+
logExecSync(`sudo cp -a ${binaryDir}/${binaryContent}/cri-dockerd /usr/local/bin/`);
75+
logExecSync(`sudo ln -s /usr/local/bin/cri-dockerd /usr/bin/cri-dockerd`);
76+
// Service file
6777
const sourceTar = await tc.downloadTool(`https://github.com/Mirantis/cri-dockerd/archive/refs/tags/${tag}.tar.gz`);
6878
const sourceDir = await tc.extractTar(sourceTar);
69-
const sourceContent = fs.readdirSync(sourceDir, {withFileTypes: true}).filter(f => f.isDirectory()).map(f => f.name)[0];
79+
const sourceContent = firstDir(sourceDir);
80+
logExecSync(`sed -i 's/cri-dockerd --/cri-dockerd --network-plugin=cni --/g' ${sourceDir}/${sourceContent}/packaging/systemd/cri-docker.service`);
81+
logExecSync(`cat ${sourceDir}/${sourceContent}/packaging/systemd/cri-docker.service`);
7082
logExecSync(`sudo cp -a ${sourceDir}/${sourceContent}/packaging/systemd/* /etc/systemd/system`);
7183
const serviceFile = '/etc/systemd/system/cri-docker.service';
7284
fs.writeFileSync(serviceFile, fs.readFileSync(serviceFile).toString()

0 commit comments

Comments
 (0)