Skip to content

Commit 095dc47

Browse files
authored
feat(build): publish to enterprise PPAs MONGOSH-852 (#967)
1 parent a7557f0 commit 095dc47

File tree

2 files changed

+69
-50
lines changed

2 files changed

+69
-50
lines changed

packages/build/src/barque.spec.ts

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -55,26 +55,40 @@ describe('Barque', () => {
5555
variant: 'debian-x64',
5656
url: 'https://s3.amazonaws.com/mciuploads/mongosh/5ed7ee5d8683818eb28d9d3b5c65837cde4a08f5/mongodb-mongosh_0.1.0_amd64.deb',
5757
publishedUrls: [
58-
`${Barque.PPA_REPO_BASE_URL}/apt/ubuntu/dists/bionic/mongodb-org/4.4/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb`,
59-
`${Barque.PPA_REPO_BASE_URL}/apt/ubuntu/dists/bionic/mongodb-org/5.0/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb`,
60-
`${Barque.PPA_REPO_BASE_URL}/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb`,
61-
`${Barque.PPA_REPO_BASE_URL}/apt/ubuntu/dists/focal/mongodb-org/5.0/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb`,
62-
`${Barque.PPA_REPO_BASE_URL}/apt/debian/dists/buster/mongodb-org/4.4/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb`,
63-
`${Barque.PPA_REPO_BASE_URL}/apt/debian/dists/buster/mongodb-org/5.0/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb`,
64-
`${Barque.PPA_REPO_BASE_URL}/apt/debian/dists/stretch/mongodb-org/4.4/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb`,
65-
`${Barque.PPA_REPO_BASE_URL}/apt/debian/dists/stretch/mongodb-org/5.0/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb`
58+
'https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/4.4/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
59+
'https://repo.mongodb.com/apt/ubuntu/dists/bionic/mongodb-enterprise/4.4/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
60+
'https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/5.0/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
61+
'https://repo.mongodb.com/apt/ubuntu/dists/bionic/mongodb-enterprise/5.0/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
62+
'https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
63+
'https://repo.mongodb.com/apt/ubuntu/dists/focal/mongodb-enterprise/4.4/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
64+
'https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/5.0/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
65+
'https://repo.mongodb.com/apt/ubuntu/dists/focal/mongodb-enterprise/5.0/multiverse/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
66+
'https://repo.mongodb.org/apt/debian/dists/buster/mongodb-org/4.4/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
67+
'https://repo.mongodb.com/apt/debian/dists/buster/mongodb-enterprise/4.4/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
68+
'https://repo.mongodb.org/apt/debian/dists/buster/mongodb-org/5.0/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
69+
'https://repo.mongodb.com/apt/debian/dists/buster/mongodb-enterprise/5.0/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
70+
'https://repo.mongodb.org/apt/debian/dists/stretch/mongodb-org/4.4/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
71+
'https://repo.mongodb.com/apt/debian/dists/stretch/mongodb-enterprise/4.4/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
72+
'https://repo.mongodb.org/apt/debian/dists/stretch/mongodb-org/5.0/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb',
73+
'https://repo.mongodb.com/apt/debian/dists/stretch/mongodb-enterprise/5.0/main/binary-amd64/mongodb-mongosh_0.1.0_amd64.deb'
6674
]
6775
},
6876
{
6977
variant: 'rhel-x64',
7078
url: 'https://s3.amazonaws.com/mciuploads/mongosh/5ed7ee5d8683818eb28d9d3b5c65837cde4a08f5/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
7179
publishedUrls: [
72-
`${Barque.PPA_REPO_BASE_URL}/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm`,
73-
`${Barque.PPA_REPO_BASE_URL}/yum/redhat/7/mongodb-org/5.0/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm`,
74-
`${Barque.PPA_REPO_BASE_URL}/yum/redhat/8/mongodb-org/4.4/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm`,
75-
`${Barque.PPA_REPO_BASE_URL}/yum/redhat/8/mongodb-org/5.0/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm`,
76-
`${Barque.PPA_REPO_BASE_URL}/yum/amazon/2/mongodb-org/4.4/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm`,
77-
`${Barque.PPA_REPO_BASE_URL}/yum/amazon/2/mongodb-org/5.0/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm`
80+
'https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
81+
'https://repo.mongodb.com/yum/redhat/7/mongodb-enterprise/4.4/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
82+
'https://repo.mongodb.org/yum/redhat/7/mongodb-org/5.0/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
83+
'https://repo.mongodb.com/yum/redhat/7/mongodb-enterprise/5.0/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
84+
'https://repo.mongodb.org/yum/redhat/8/mongodb-org/4.4/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
85+
'https://repo.mongodb.com/yum/redhat/8/mongodb-enterprise/4.4/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
86+
'https://repo.mongodb.org/yum/redhat/8/mongodb-org/5.0/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
87+
'https://repo.mongodb.com/yum/redhat/8/mongodb-enterprise/5.0/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
88+
'https://repo.mongodb.org/yum/amazon/2/mongodb-org/4.4/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
89+
'https://repo.mongodb.com/yum/amazon/2/mongodb-enterprise/4.4/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
90+
'https://repo.mongodb.org/yum/amazon/2/mongodb-org/5.0/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm',
91+
'https://repo.mongodb.com/yum/amazon/2/mongodb-enterprise/5.0/x86_64/RPMS/mongodb-mongosh-0.1.0.el7.x86_64.rpm'
7892
]
7993
}
8094
] as const).forEach(({ variant, url, publishedUrls }) => {
@@ -158,7 +172,7 @@ describe('Barque', () => {
158172
let nockRepo: nock.Scope;
159173

160174
beforeEach(() => {
161-
nockRepo = nock(Barque.PPA_REPO_BASE_URL);
175+
nockRepo = nock('https://repo.mongodb.org');
162176

163177
nockRepo.head('/apt/dist/package1.deb').reply(200);
164178

@@ -171,9 +185,9 @@ describe('Barque', () => {
171185

172186
it('waits until all packages are available', async() => {
173187
await barque.waitUntilPackagesAreAvailable([
174-
`${Barque.PPA_REPO_BASE_URL}/apt/dist/package1.deb`,
175-
`${Barque.PPA_REPO_BASE_URL}/apt/dist/package2.deb`,
176-
`${Barque.PPA_REPO_BASE_URL}/apt/dist/package3.deb`
188+
'https://repo.mongodb.org/apt/dist/package1.deb',
189+
'https://repo.mongodb.org/apt/dist/package2.deb',
190+
'https://repo.mongodb.org/apt/dist/package3.deb'
177191
], 300, 1);
178192

179193
expect(nock.isDone()).to.be.true;
@@ -184,16 +198,16 @@ describe('Barque', () => {
184198
let nockRepo: nock.Scope;
185199

186200
beforeEach(() => {
187-
nockRepo = nock(Barque.PPA_REPO_BASE_URL);
201+
nockRepo = nock('https://repo.mongodb.org');
188202
nockRepo.head('/apt/dist/package1.deb').reply(200);
189203
nockRepo.head('/apt/dist/package2.deb').reply(404).persist();
190204
});
191205

192206
it('fails when the timeout is hit', async() => {
193207
try {
194208
await barque.waitUntilPackagesAreAvailable([
195-
`${Barque.PPA_REPO_BASE_URL}/apt/dist/package1.deb`,
196-
`${Barque.PPA_REPO_BASE_URL}/apt/dist/package2.deb`,
209+
'https://repo.mongodb.org/apt/dist/package1.deb',
210+
'https://repo.mongodb.org/apt/dist/package2.deb',
197211
], 5, 1);
198212
} catch (e) {
199213
expect(e.message).to.contain('the following packages are still not available');

packages/build/src/barque.ts

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,8 @@ export function getReposAndArch(buildVariant: BuildVariant): { ppas: PPAReposito
7373
}
7474

7575
export class Barque {
76-
public static readonly PPA_REPO_BASE_URL = 'https://repo.mongodb.org' as const;
77-
7876
private config: Config;
79-
private mongodbEdition: string;
77+
private mongodbEditions: string[];
8078
private mongodbVersions: {
8179
version: string;
8280
notaryKeyName: string;
@@ -89,8 +87,7 @@ export class Barque {
8987
}
9088

9189
this.config = config;
92-
// hard code mongodb edition to 'org' for now
93-
this.mongodbEdition = 'org';
90+
this.mongodbEditions = [ 'org', 'enterprise' ];
9491
// linux mongodb versions to release to.
9592
this.mongodbVersions = [{
9693
version: '4.4.0',
@@ -137,7 +134,9 @@ export class Barque {
137134
}
138135

139136
for (const { version } of this.mongodbVersions) {
140-
publishedPackageUrls.push(this.computePublishedPackageUrl(ppa, arch, version, packageUrl));
137+
for (const edition of this.mongodbEditions) {
138+
publishedPackageUrls.push(this.computePublishedPackageUrl(ppa, arch, version, edition, packageUrl));
139+
}
141140
}
142141
}
143142
return publishedPackageUrls;
@@ -149,45 +148,51 @@ export class Barque {
149148
repoConfig: string,
150149
ppa: PPARepository,
151150
architecture: string
152-
): Promise<any> {
151+
): Promise<void> {
153152
for (const { version, notaryKeyName, notaryToken } of this.mongodbVersions) {
154-
return await execFile(
155-
`${curatorDirPath}/curator`, [
153+
for (const edition of this.mongodbEditions) {
154+
const args = [
156155
'--level', 'debug',
157156
'repo', 'submit',
158157
'--service', 'https://barque.corp.mongodb.com',
159158
'--config', repoConfig,
160159
'--distro', ppa,
161160
'--arch', architecture,
162-
'--edition', this.mongodbEdition,
161+
'--edition', edition,
163162
'--version', version,
164163
'--packages', packageUrl
165-
], {
166-
// curator looks for these options in env
167-
env: {
168-
NOTARY_KEY_NAME: notaryKeyName,
169-
NOTARY_TOKEN: notaryToken,
170-
BARQUE_API_KEY: process.env.BARQUE_API_KEY,
171-
BARQUE_USERNAME: process.env.BARQUE_USERNAME
172-
}
173-
});
164+
];
165+
console.info(`Running ${curatorDirPath}/curator ${args.join(' ')}`);
166+
const result = await execFile(
167+
`${curatorDirPath}/curator`, args, {
168+
// curator looks for these options in env
169+
env: {
170+
NOTARY_KEY_NAME: notaryKeyName,
171+
NOTARY_TOKEN: notaryToken,
172+
BARQUE_API_KEY: process.env.BARQUE_API_KEY,
173+
BARQUE_USERNAME: process.env.BARQUE_USERNAME
174+
}
175+
});
176+
console.info(result);
177+
}
174178
}
175179
}
176180

177-
computePublishedPackageUrl(ppa: PPARepository, targetArchitecture: string, mongodbVersion: string, packageUrl: string): string {
181+
computePublishedPackageUrl(ppa: PPARepository, targetArchitecture: string, mongodbVersion: string, edition: string, packageUrl: string): string {
178182
const packageFileName = packageUrl.split('/').slice(-1);
179183
const packageFolderVersion = mongodbVersion.split('.').slice(0, 2).join('.');
184+
const base = edition === 'org' ? 'https://repo.mongodb.org' : 'https://repo.mongodb.com';
180185
switch (ppa) {
181186
/* eslint-disable no-multi-spaces */
182-
case 'ubuntu1804': return `${Barque.PPA_REPO_BASE_URL}/apt/ubuntu/dists/bionic/mongodb-org/${packageFolderVersion}/multiverse/binary-${targetArchitecture}/${packageFileName}`;
183-
case 'ubuntu2004': return `${Barque.PPA_REPO_BASE_URL}/apt/ubuntu/dists/focal/mongodb-org/${packageFolderVersion}/multiverse/binary-${targetArchitecture}/${packageFileName}`;
184-
case 'debian92': return `${Barque.PPA_REPO_BASE_URL}/apt/debian/dists/buster/mongodb-org/${packageFolderVersion}/main/binary-${targetArchitecture}/${packageFileName}`;
185-
case 'debian10': return `${Barque.PPA_REPO_BASE_URL}/apt/debian/dists/stretch/mongodb-org/${packageFolderVersion}/main/binary-${targetArchitecture}/${packageFileName}`;
186-
case 'rhel70': return `${Barque.PPA_REPO_BASE_URL}/yum/redhat/7/mongodb-org/${packageFolderVersion}/${targetArchitecture}/RPMS/${packageFileName}`;
187-
case 'rhel80': return `${Barque.PPA_REPO_BASE_URL}/yum/redhat/8/mongodb-org/${packageFolderVersion}/${targetArchitecture}/RPMS/${packageFileName}`;
188-
case 'amazon2': return `${Barque.PPA_REPO_BASE_URL}/yum/amazon/2/mongodb-org/${packageFolderVersion}/${targetArchitecture}/RPMS/${packageFileName}`;
189-
case 'suse12': return `${Barque.PPA_REPO_BASE_URL}/zypper/suse/12/mongodb-org/${packageFolderVersion}/${targetArchitecture}/RPMS/${packageFileName}`;
190-
case 'suse15': return `${Barque.PPA_REPO_BASE_URL}/zypper/suse/15/mongodb-org/${packageFolderVersion}/${targetArchitecture}/RPMS/${packageFileName}`;
187+
case 'ubuntu1804': return `${base}/apt/ubuntu/dists/bionic/mongodb-${edition}/${packageFolderVersion}/multiverse/binary-${targetArchitecture}/${packageFileName}`;
188+
case 'ubuntu2004': return `${base}/apt/ubuntu/dists/focal/mongodb-${edition}/${packageFolderVersion}/multiverse/binary-${targetArchitecture}/${packageFileName}`;
189+
case 'debian92': return `${base}/apt/debian/dists/buster/mongodb-${edition}/${packageFolderVersion}/main/binary-${targetArchitecture}/${packageFileName}`;
190+
case 'debian10': return `${base}/apt/debian/dists/stretch/mongodb-${edition}/${packageFolderVersion}/main/binary-${targetArchitecture}/${packageFileName}`;
191+
case 'rhel70': return `${base}/yum/redhat/7/mongodb-${edition}/${packageFolderVersion}/${targetArchitecture}/RPMS/${packageFileName}`;
192+
case 'rhel80': return `${base}/yum/redhat/8/mongodb-${edition}/${packageFolderVersion}/${targetArchitecture}/RPMS/${packageFileName}`;
193+
case 'amazon2': return `${base}/yum/amazon/2/mongodb-${edition}/${packageFolderVersion}/${targetArchitecture}/RPMS/${packageFileName}`;
194+
case 'suse12': return `${base}/zypper/suse/12/mongodb-${edition}/${packageFolderVersion}/${targetArchitecture}/RPMS/${packageFileName}`;
195+
case 'suse15': return `${base}/zypper/suse/15/mongodb-${edition}/${packageFolderVersion}/${targetArchitecture}/RPMS/${packageFileName}`;
191196
/* eslint-enable no-multi-spaces */
192197
default:
193198
throw new Error(`Unsupported PPA: ${ppa}`);

0 commit comments

Comments
 (0)