Add image tag matching target platform for publish to docker (#20296)

* add the image tag for the sql server version

* add preview text and test

* cleanup
This commit is contained in:
Kim Santiago
2022-08-11 14:58:09 -07:00
committed by GitHub
parent b531958402
commit f6d2af58af
4 changed files with 80 additions and 3 deletions

View File

@@ -13,11 +13,11 @@ import { SqlConnectionDataSource } from '../models/dataSources/sqlConnectionStri
import { DeploymentOptions } from 'mssql';
import { IconPathHelper } from '../common/iconHelper';
import { cssStyles } from '../common/uiConstants';
import { getAgreementDisplayText, getConnectionName, getDockerBaseImages, getPublishServerName } from './utils';
import { getAgreementDisplayText, getConnectionName, getDefaultDockerImageWithTag, getDockerBaseImages, getPublishServerName } from './utils';
import { TelemetryActions, TelemetryReporter, TelemetryViews } from '../common/telemetry';
import { Deferred } from '../common/promise';
import { PublishOptionsDialog } from './publishOptionsDialog';
import { ISqlProjectPublishSettings, IPublishToDockerSettings } from 'sqldbproj';
import { ISqlProjectPublishSettings, IPublishToDockerSettings, SqlTargetPlatform } from 'sqldbproj';
interface DataSourceDropdownValue extends azdataType.CategoryValue {
dataSource: SqlConnectionDataSource;
@@ -241,9 +241,14 @@ export class PublishDatabaseDialog {
utils.getAzdataApi()!.window.closeDialog(this.dialog);
await this.publish!(this.project, settings);
} else {
const dockerBaseImage = this.getBaseDockerImageName();
let dockerBaseImage = this.getBaseDockerImageName();
const baseImages = getDockerBaseImages(this.project.getProjectTargetVersion());
const imageInfo = baseImages.find(x => x.name === dockerBaseImage);
// selecting the image tag isn't currently exposed in the publish dialog, so this adds the tag matching the target platform
// to make sure the correct image is used for the project's target platform when the docker base image is SQL Server
dockerBaseImage = getDefaultDockerImageWithTag(this.project.getProjectTargetVersion(), dockerBaseImage, imageInfo);
const settings: IPublishToDockerSettings = {
dockerSettings: {
dbName: this.targetDatabaseName,
@@ -598,6 +603,16 @@ export class PublishDatabaseDialog {
const baseImages = getDockerBaseImages(this.project.getProjectTargetVersion());
const baseImagesValues: azdataType.CategoryValue[] = baseImages.map(x => { return { name: x.name, displayName: x.displayName }; });
// add preview string for 2022
// TODO: remove after 2022 is GA
if (this.project.getProjectTargetVersion() === constants.targetPlatformToVersion.get(SqlTargetPlatform.sqlServer2022)) {
const sqlServerImageIndex = baseImagesValues.findIndex(image => image.displayName === constants.SqlServerDockerImageName);
if (sqlServerImageIndex >= 0) {
baseImagesValues[sqlServerImageIndex].displayName = constants.SqlServerDocker2022ImageName;
}
}
this.baseDockerImageDropDown = view.modelBuilder.dropDown().withProps({
values: baseImagesValues,
ariaLabel: constants.baseDockerImage(name),