Skip to content

Commit b69f6d4

Browse files
Merge pull request #19 from devcontainers/samruddhikhandale/dual-tag
Ability to dual publish
2 parents 4e1e3c6 + 9026462 commit b69f6d4

File tree

6 files changed

+26
-7
lines changed

6 files changed

+26
-7
lines changed

.github/workflows/push-again.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ jobs:
5353
REGISTRY_BASE_PATH: ${{ secrets.REGISTRY_BASE_PATH }}
5454
STUB_REGISTRY: ${{ secrets.STUB_REGISTRY }}
5555
STUB_REGISTRY_BASE_PATH: ${{ secrets.STUB_REGISTRY_BASE_PATH }}
56+
SECONDARY_REGISTRY_BASE_PATH: ${{ secrets.SECONDARY_REGISTRY_BASE_PATH }}
5657
run: |
5758
set -e
5859
@@ -77,4 +78,5 @@ jobs:
7778
--registry-path "$REGISTRY_BASE_PATH" \
7879
--stub-registry "$STUB_REGISTRY" \
7980
--stub-registry-path "$STUB_REGISTRY_BASE_PATH" \
81+
--secondary-registry-path "$SECONDARY_REGISTRY_BASE_PATH" \
8082
${{ github.event.inputs.image }}

.github/workflows/push-dev.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ jobs:
4343
REGISTRY_BASE_PATH: ${{ secrets.REGISTRY_BASE_PATH }}
4444
STUB_REGISTRY: ${{ secrets.STUB_REGISTRY }}
4545
STUB_REGISTRY_BASE_PATH: ${{ secrets.STUB_REGISTRY_BASE_PATH }}
46+
SECONDARY_REGISTRY_BASE_PATH: ${{ secrets.SECONDARY_REGISTRY_BASE_PATH }}
4647
run: |
4748
set -e
4849
@@ -64,7 +65,8 @@ jobs:
6465
--registry "$REGISTRY" \
6566
--registry-path "$REGISTRY_BASE_PATH" \
6667
--stub-registry "$STUB_REGISTRY" \
67-
--stub-registry-path "$STUB_REGISTRY_BASE_PATH"
68+
--stub-registry-path "$STUB_REGISTRY_BASE_PATH" \
69+
--secondary-registry-path "$SECONDARY_REGISTRY_BASE_PATH"
6870
6971
image-info:
7072
name: Trigger info extraction

.github/workflows/push.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ jobs:
4747
REGISTRY_BASE_PATH: ${{ secrets.REGISTRY_BASE_PATH }}
4848
STUB_REGISTRY: ${{ secrets.STUB_REGISTRY }}
4949
STUB_REGISTRY_BASE_PATH: ${{ secrets.STUB_REGISTRY_BASE_PATH }}
50+
SECONDARY_REGISTRY_BASE_PATH: ${{ secrets.SECONDARY_REGISTRY_BASE_PATH }}
5051
run: |
5152
set -e
5253
@@ -64,7 +65,8 @@ jobs:
6465
--registry "$REGISTRY" \
6566
--registry-path "$REGISTRY_BASE_PATH" \
6667
--stub-registry "$STUB_REGISTRY" \
67-
--stub-registry-path "$STUB_REGISTRY_BASE_PATH"
68+
--stub-registry-path "$STUB_REGISTRY_BASE_PATH" \
69+
--secondary-registry-path "$SECONDARY_REGISTRY_BASE_PATH"
6870
6971
image-info:
7072
name: Trigger info extraction

build/config.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"containerRegistry": "devcon.azurecr.io",
33
"containerRegistryPath": "public/devcontainers",
4+
"secondaryContainerRegistryPath": "public/vscode/devcontainers",
45
"stubRegistry": "mcr.microsoft.com",
56
"stubRegistryPath": "devcontainers",
67
"githubRepoName": "devcontainers/images",

build/src/push.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const prep = require('./prep');
1111
const builderName = 'dev-containers-builder';
1212

1313
async function push(repo, release, updateLatest, registry, registryPath, stubRegistry,
14-
stubRegistryPath, pushImages, prepOnly, definitionsToSkip, page, pageTotal, replaceImages, definitionId) {
14+
stubRegistryPath, pushImages, prepOnly, definitionsToSkip, page, pageTotal, replaceImages, definitionId, secondaryRegistryPath) {
1515

1616
// Optional argument defaults
1717
prepOnly = typeof prepOnly === 'undefined' ? false : prepOnly;
@@ -45,14 +45,14 @@ async function push(repo, release, updateLatest, registry, registryPath, stubReg
4545
await asyncUtils.forEach(definitionsToPush, async (currentDefinitionId) => {
4646
console.log(`**** Pushing ${currentDefinitionId} ${release} ****`);
4747
await pushImage(
48-
currentDefinitionId, repo, release, updateLatest, registry, registryPath, stubRegistry, stubRegistryPath, prepOnly, pushImages, replaceImages);
48+
currentDefinitionId, repo, release, updateLatest, registry, registryPath, stubRegistry, stubRegistryPath, prepOnly, pushImages, replaceImages, secondaryRegistryPath);
4949
});
5050

5151
return stagingFolder;
5252
}
5353

5454
async function pushImage(definitionId, repo, release, updateLatest,
55-
registry, registryPath, stubRegistry, stubRegistryPath, prepOnly, pushImages, replaceImage) {
55+
registry, registryPath, stubRegistry, stubRegistryPath, prepOnly, pushImages, replaceImage, secondaryRegistryPath) {
5656
const definitionPath = configUtils.getDefinitionPath(definitionId);
5757
const dotDevContainerPath = definitionPath;
5858
// Use Dockerfile for image build
@@ -93,7 +93,12 @@ async function pushImage(definitionId, repo, release, updateLatest,
9393
const imageNamesWithVersionTags = configUtils.getTagList(definitionId, release, updateLatest, registry, registryPath, variant);
9494
const imageName = imageNamesWithVersionTags[0].split(':')[0];
9595

96+
// Dual publish image to devcontainers and vscode/devcontainers
97+
const secondaryImageNamesWithVersionTags = configUtils.getTagList(definitionId, release, updateLatest, registry, secondaryRegistryPath, variant);
98+
9699
console.log(`(*) Tags:${imageNamesWithVersionTags.reduce((prev, current) => prev += `\n ${current}`, '')}`);
100+
console.log(`(*) Secondary Tags:${secondaryImageNamesWithVersionTags.reduce((prev, current) => prev += `\n ${current}`, '')}`);
101+
97102
const buildSettings = configUtils.getBuildSettings(definitionId);
98103

99104
let architectures = buildSettings.architectures;
@@ -130,7 +135,10 @@ async function pushImage(definitionId, repo, release, updateLatest,
130135

131136
const context = devContainerJson.build ? devContainerJson.build.context || '.' : devContainerJson.context || '.';
132137
const workingDir = path.resolve(dotDevContainerPath, context);
133-
const imageNameParams = imageNamesWithVersionTags.reduce((prev, current) => prev.concat(['--image-name', current]), []);
138+
let imageNameParams = imageNamesWithVersionTags.reduce((prev, current) => prev.concat(['--image-name', current]), []);
139+
140+
const secondaryImageNameParams = secondaryImageNamesWithVersionTags.reduce((prev, current) => prev.concat(['--image-name', current]), []);
141+
imageNameParams = imageNameParams.concat(secondaryImageNameParams);
134142

135143
const spawnOpts = { stdio: 'inherit', cwd: workingDir, shell: true };
136144
await asyncUtils.spawn('devcontainer', [

build/vscdc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ require('yargs')
8181
describe: 'A space separated list of image names to skip building and pushing.',
8282
type: 'array',
8383
default: []
84+
},
85+
'secondary-registry-path': {
86+
describe: 'Secondary container registry path',
87+
default: configUtils.getConfig('secondaryContainerRegistryPath', '')
8488
}
8589
})
8690
}, pushCommand)
@@ -240,7 +244,7 @@ require('yargs')
240244

241245
function pushCommand(argv) {
242246
push(argv.githubRepo, argv.release, argv.updateLatest, argv.registry, argv.registryPath, argv.stubRegistry,
243-
argv.stubRegistryPath, argv.push, argv.prepOnly, argv.skip, argv.page, argv.pageTotal, argv.replaceImages, argv.devcontainer)
247+
argv.stubRegistryPath, argv.push, argv.prepOnly, argv.skip, argv.page, argv.pageTotal, argv.replaceImages, argv.devcontainer, argv.secondaryRegistryPath)
244248
.catch((reason) => {
245249
console.error(`(!) Push failed - ${reason}`);
246250
if(reason.stack) {

0 commit comments

Comments
 (0)