CINXE.COM

Gemini Code Assist + Google Cloud Code - Visual Studio Marketplace

<html lang="en-us"> <head> <meta name="description" content="Extension&#32;for&#32;Visual&#32;Studio&#32;Code&#32;-&#32;Gemini&#32;Code&#32;Assist&#32;+&#32;Tools&#32;for&#32;Google&#32;Cloud" /><meta name="keywords" content="__ext_log,AI&#32;Assistant,Apigee,Artifact&#32;Registry,BigQuery&#32;Datasets,BigQuery&#32;Notebooks,Cloud&#32;Build,Cloud&#32;Functions,Cloud&#32;Run,Cloud&#32;SDK,Cloud&#32;Storage,Code&#32;Completion,Code&#32;Generation,Compute&#32;Engine,Container&#32;Registry,Containers,Dataproc,debuggers,Docker,Duet,Duet&#32;AI,GCE,GCF,gcloud,GCP,Gemini&#32;Code&#32;Assist,Google,Google&#32;Cloud,ignore,json,k8s,keybindings,knative,Kubernetes,LLM,Log,Minikube,Secret&#32;Manager,Skaffold,snippet" /><meta property="og:title" content="Gemini&#32;Code&#32;Assist&#32;+&#32;Google&#32;Cloud&#32;Code&#32;-&#32;Visual&#32;Studio&#32;Marketplace" /><meta property="og:type" content="website" /><meta property="og:url" content="https://marketplace.visualstudio.com/items?itemName=GoogleCloudTools.cloudcode" /><meta property="og:image" content="https://googlecloudtools.gallerycdn.vsassets.io/extensions/googlecloudtools/cloudcode/2.21.0/1731645620888/Microsoft.VisualStudio.Services.Icons.Default" /><meta property="og:description" content="Extension&#32;for&#32;Visual&#32;Studio&#32;Code&#32;-&#32;Gemini&#32;Code&#32;Assist&#32;+&#32;Tools&#32;for&#32;Google&#32;Cloud" /><meta property="twitter:card" content="summary" /><meta property="twitter:site" content="@Code" /><link rel="canonical" href="https://marketplace.visualstudio.com/items?itemName=GoogleCloudTools.cloudcode" /> <style> html { overflow-y: scroll; } body { font-family: wf_segoe-ui, Helvetica Neue, Helvetica, Arial, Verdana; color: rgba( 0, 0, 0, 1); font-size: 12px; background-color: rgba(255, 255, 255, 1); margin: 0; padding: 0; } /* L0 header styles start*/ .uxservices-header { height: 34px; background-color:black; } a.skip-main { left: -999px; position: absolute; top: auto; width: 1px; height: 1px; overflow: hidden; z-index: -999; } a.skip-main:focus, a.skip-main:active { color: #0078D4; background-color: #FFFFFF; position: absolute; left: auto; top: auto; width: 122px; height: 33px; overflow: auto; padding-left: 12px; padding-right: 12px; padding-top: 7px; text-align: center; font-size: 14px; font-weight: 500; font-family: 'Segoe UI'; line-height: 20px; z-index: 999; } a.skip-main:hover { color: #005BA1; background-color: #F2F2F2; } .uxservices-header div.upperBandContent { background-color:black; color: white; line-height: 17px; width:100%; margin:0 auto; box-sizing:border-box; max-width: 1160px; padding: 0px; } .uxservices-header div.upperBandContent .left { padding: 5px 0 0 0; } .uxservices-header div.upperBandContent .left .vs-logo-header { height: 31px; padding-top: 5px; } .uxservices-header div.upperBandContent .left .marketplacetext-header { vertical-align: 9px; padding-top: 5px; } .uxservices-header div.upperBandContent .right { display: inline-block; position: relative; background-color: black; font-size: 11px; padding-top: 10px; } .uxservices-header div.upperBandContent .right .signIn { font-weight: 600; float: left; } .uxservices-header .marketPlaceLogoLink { white-space: pre; font-size: 16px; line-height: 16px; vertical-align: -4px; display: inline-block; color: white; } .uxservices-header .marketPlaceLogoLink.vs-brand-icon { width: 30px; height: 30px; background: url(https://cdn.vsassets.io/v/M246_20241014.9/_content/Header/ImageSprite.png) no-repeat -250px 0 !important; } .uxservices-header .right a { font-family: wf_segoe-ui, -apple-system, ".SFNSText-Regular", "San Francisco", "Roboto", "Helvetica Neue", "Lucida Grande", sans-serif; font-size: inherit; } .uxservices-header div.upperBandContent .scarabLink { margin-right: 0.23em; } #Fragment_SearchBox { display: inline-block; margin-left: 25px; height: 13px; } #Fragment_SearchBox .header-search-button { height: 20px; width: 20px; background: url(https://cdn.vsassets.io/v/M246_20241014.9/_content/Header/ImageSprite.png) no-repeat -195px 0 !important; cursor: pointer; border: none; margin-left: 3px; padding: 0px; } #Fragment_SearchBox .header-search-button:focus { outline-color: rgb(77, 144, 254); outline-style: auto; outline-width: 5px; } #Fragment_SearchBox .header-search-textbox { vertical-align: top; background-color: #6a6a6a; color: #ffffff; padding-left: 2px; } /* l0 header ends*/ .tab { overflow: hidden; border-bottom: 1px solid #ccc; background-color: transparent; margin-bottom: 25px; } /* Style the buttons that are used to open the tab content */ .tab button { background-color: transparent; float: left; border: none; outline: none; cursor: pointer; padding: 0px 16px; font-size: 16px; height: 40px; border-width: 1px; border-style: solid; border-color: transparent } /* Change background color of buttons on hover */ .tab button:hover { color: #106ebe; } .tab button.selected { color: #106ebe; border-bottom: 2px solid #106ebe; } .tab button:focus, .tab button.selected:focus { border-color: #000000; } /* Style the tab content */ .tabcontent { padding: 6px 12px; } .bowtie-icon, i.bowtie-icon { font-family: "Bowtie"; font-size: 14px; speak: none; display: inline-block; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-align: center; text-decoration: none; line-height: 16px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .bowtie-icon:disabled, i.bowtie-icon:disabled { opacity: 0.5; } .bowtie-brand-visualstudio::before { content: "\E91D"; } .bowtie-install::before { content: "\E92C"; } .bowtie-search::before { content: "\E986"; } .bowtie-navigate-external::before { content: "\E9D0"; } .bowtie-status-info::before { content: "\EA08"; } .bowtie-status-info { color: rgba(0, 120, 212, 1); color: var(--communication-background, rgba(0, 120, 212, 1)); } * { box-sizing: border-box; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; } a:not(.ms-Button) { color: rgba(0, 120, 212, 1); color: var(--communication-foreground, rgba(0, 120, 212, 1)); text-decoration: none; cursor: pointer; } a:not(.ms-Button):hover { color: rgba(0, 120, 212, 1); color: var(--communication-foreground, rgba(0, 120, 212, 1)); text-decoration: underline; } a:not(.ms-Button):visited { color: rgba(0, 120, 212, 1); color: var(--communication-foreground, rgba(0, 120, 212, 1)); } a:not(.ms-Button):active { color: rgba(0, 120, 212, 1); color: var(--communication-foreground, rgba(0, 120, 212, 1)); } button { font-family: "Segoe UI VSS (Regular)", "Segoe UI", "-apple-system", BlinkMacSystemFont, Roboto, "Helvetica Neue", Helvetica, Ubuntu, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; height: 30px; border: 1px solid; border-color: rgba( 200, 200, 200, 1); border-color: rgba( var(--palette-neutral-20, 200, 200, 200), 1); background-color: rgba( 248, 248, 248, 1); background-color: rgba( var(--palette-neutral-2, 248, 248, 248), 1); color: rgba( 51, 51, 51, 1); color: rgba( var(--palette-neutral-80, 51, 51, 51), 1); cursor: pointer; outline: 0; padding: 2px 12px 2px 12px; } button:hover:not(.ms-Button):not(.bolt-button):not(.link-as-button), button:focus:not(.ms-Button):not(.bolt-button):not(.link-as-button) { border-color: rgba( 166, 166, 166, 1); border-color: rgba( var(--palette-neutral-30, 166, 166, 166), 1); border-style: dotted; } .pricingTab-loader-container, .qnaTab-loader-container, .rnrTab-loader-container, .versionHistoryTab-loader-container { text-align: center; } .pricingTab-loader-container .loader, .qnaTab-loader-container .loader, .rnrTab-loader-container .loader, .versionHistoryTab-loader-container .loader { display: inline-block; } .item-details-control-root .ux-section-resources ul li a { text-decoration:underline!important; } /* Styles for bread crumb */ .bread-crumb-container { font-size: 13px; color: #FFFFFF; height: 45px; line-height: 45px; } .bread-crumb-container .member { text-decoration: none; } .bread-crumb-container .separator { padding: 0 5px; } .bread-crumb-container a:visited { color: #FFFFFF; } .bread-crumb-container a { color: #FFFFFF; } .bread-crumb-container a:hover { color: #FFFFFF; } .item-details-control-root .breadcrumb { background-color: #232323; color: #FFFFFF; line-height: 45px; font-size: 13px; /* min-width: 1250px; */ } .item-details-control-root .breadcrumb .vsCodeDownloadLinkContainer { float: right; color: inherit; } .item-details-control-root .breadcrumb .vsCodeDownloadLink { color: #0090ff; } /* end of bread crumb styles */ /* Styles for item banner */ .ux-section-banner { padding: 16px 0px; background-color: #eff1f3; /* min-width: 1250px; */ } .item-details-control-root .ux-section-banner { padding: 32px 0px; background-color: #eff1f3; } .gallery-centered-content { width: 1160px; margin-left: auto; margin-right: auto; padding-left: 10px; padding-right: 10px; } @media all and (max-width:1165px){ .gallery-centered-content{ width:100%; padding-left:25px; padding-right:25px; } } table { border-collapse: collapse; border-spacing: 0; margin: 0; padding: 0; border: 0; } .item-details-control-root .item-img { text-align: center; vertical-align: top; width: 132px; } .item-details-control-root .item-img img { max-width: 128px; position: relative; visibility: hidden; } .item-details-control-root .item-header .item-header-content { font-size: 14px; margin-left: 32px; } .item-details-control-root .ux-item-name { font-size: 26px; font-weight: 600; display: inline-block; padding-right: 8px; } .item-details-control-root .ux-item-second-row-wrapper { margin-top: 4px; } .item-details-control-root .ux-item-second-row-wrapper>div { display: inline-block; } .item-details-control-root .ux-item-second-row-wrapper>div:nth-child(1) { margin-right: 10px; } .item-details-control-root .ux-item-second-row-wrapper>.ux-item-rating { margin-left: 10px; margin-right: 10px; } .item-details-control-root .ux-item-second-row-wrapper>.item-price-category { margin-left: 10px; margin-right: 10px; } .item-details-control-root .item-header h1, .item-details-control-root .item-header h2 { margin: 0px; padding: 0px; display: inline-block; font-size: 0em; font-weight: normal; } .item-details-control-root .item-header .dark { color: #FFFFFF; } .item-details-control-root .ux-item-rating { font-size: 14px; } .item-details-control-root .ux-item-publisher { font-size: 18px; } .item-details-control-root .ux-item-publisher-link { font-size: 18px; font-weight: 600; } .item-details-control-root .ux-item-shortdesc { margin: 20px 0; max-width: 608px; line-height: 1.5; overflow: hidden; } .item-details-control-root .dark .item-banner-focussable-child-item:focus { outline: 1px dotted white; } .item-details-control-root .item-header .item-header-content.light .installHelpInfo a { color: #000000; text-decoration: underline; border-color: #000000; } .item-details-control-root .item-header .item-header-content.dark .installHelpInfo a { color: #FFFFFF; text-decoration: underline; } .ux-section-details-tabs .version-history-top-container { width: 100% } /* not unpublished */ .one-click-install-container { display: flex; } .installHelpInfo { margin-left: 10px; } .installHelpInfo>a { vertical-align: sub; } .textContainer-41 { flex-grow: 1; } .flexContainer-40 { display: flex; height: 100%; flex-wrap: nowrap; justify-content: center; align-items: center; } .label-43 { margin-top: 0px; margin-right: 4px; margin-bottom: 0px; margin-left: 4px; line-height: 100%; font-weight: 600; } .item-details-control-root .ux-button.install { position: relative; font-family: "Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif; -webkit-font-smoothing: antialiased; font-size: 14px; font-weight: 400; box-sizing: border-box; display: inline-block; text-align: center; cursor: pointer; vertical-align: top; padding-top: 0px; padding-right: 16px; padding-bottom: 0px; padding-left: 16px; min-width: 80px; height: 32px; background-color: rgb(244, 244, 244); color: rgb(51, 51, 51); user-select: none; outline: transparent; border-width: 1px; border-style: solid; border-color: transparent; border-image: initial; text-decoration: none; border-radius: 0px; } .item-details-control-root .item-header-content .install-button-container .ux-button.install.buttonDisabled { background-color: #AAAAAA; color: #EEEEEE; opacity: 1; border: 1px solid #E6E6E6; } .item-details-control-root .item-header-content .install-button-container .ux-button.install.buttonDisabled:hover { cursor: default; opacity: 1; } .item-details-control-root .dark .ux-button.install { background-color: #107c10; color: #FFFFFF; min-width: 120px; border: 1px solid #FFFFFF; } .item-details-control-root .dark .ux-button.install:hover { background-color: #AAAAAA; opacity: 0.6; } .ux-item-action a.install-button-container { line-height: 32px; } .item-details-control-root .light .ux-button.install { background-color: #107c10; color: #FFFFFF; min-width: 120px; border: 1px solid #666666; } .item-details-control-root .light .ux-button.install:hover, .item-details-control-root .light .ux-button.install:focus { background-color: #074507; } .item-details-control-root .dark .ux-button.install:focus, .item-details-control-root .light .ux-button.install:focus { border: 1px dotted; } /* End of item banner styles. */ /* Styles for item details overview */ .item-details-control-root .ux-section-details { margin: 24px 0 34px 0px; font-size: 13px; } .item-details-control-root .ux-section-details .itemdetails-section-header { font-size: 16px; font-weight: bold; color: #555; padding-bottom: 16px; } .item-details-control-root .ux-section-details .ux-section-details-table { width: 100%; table-layout: fixed; } .item-details-control-root .ux-itemdetails-left { vertical-align: top; font-size: 14px; padding-right: 20px; } .item-details-control-root .ux-itemdetails-right { width: 34.45%; vertical-align: top; padding: 0 0 0 20px; } @media all and (max-width:768px) { .item-details-control-root .ux-itemdetails-left { float: left; width: 100%; padding-right: 0px; } .item-details-control-root .ux-itemdetails-right{ padding-left:0px!important; float:left; width:100%; } } .item-details-control-root .itemDetails-right { display: none; } .item-details-control-root .markdown { color: #222; line-height: 1.6; position: relative; } .gallery-centered-content .markdown a { color: rgba(0, 120, 212, 1); text-decoration:underline; } .markdown table tr:nth-child(2n) a, .gallery-centered-content .markdown a code { color: rgb(15, 113, 196); } .item-details-control-root .markdown > *:first-child { margin-top: 0!important; } .item-details-control-root .markdown .link-header:target:before { content: ""; display: block; height: 250px; margin: -250px 0 0; } .link-as-button { height: initial; } .link-as-button:hover { text-decoration: underline; } /* End of item details overview styles. */ /* Styles for footer */ #ux-footer { line-height: 1.2em; } #ux-footer:after { content: ""; display: table; clear: both; } #ux-footer a { color: #595958; } #ux-footer a:hover { color: #3399ff; } #ux-footer ul.links { padding: 0; line-height: 1.2em; } #ux-footer .linkList>ul>li { list-style-type: none; background: none; padding: 4px 0; margin: 0; } #ux-footer #baseFooter { width: 1160px; padding: 15px 10px; margin: 0 auto; } @media all and (max-width:1165px){ #ux-footer #baseFooter{ width:100%; padding:15px 20px; } } #ux-footer #baseFooter:after { content: ""; display: table; clear: both; } #ux-footer #baseFooter li { display: inline-block; list-style-type: none; margin: 0 15px 0 0; } #ux-footer #baseFooter #Fragment_BaseFooterLinks { text-align: right; } #ux-footer #baseFooter #rightBaseFooter { float: right; width: 18%; font-family: wf_segoe-ui, Tahoma, Helvetica, Sans-Serif; color: #595958; font-weight: bold; } @media only screen and (max-width: 400px) { #ux-footer #baseFooter #rightBaseFooter{ width:100%; text-align: center; } .ux-section-banner td.item-img img { width: 100% !important; } } #ux-footer span.microsoftLogo { display: inline-block; margin-left: 16px; } .microsoftLogo { background: url(https://cdn.vsassets.io/v/M246_20241014.9/_content/Header/ImageSprite.png) no-repeat -93px 0!important; } .microsoftLogo { width: 70px; height: 14px; overflow: hidden; } /* End of footer styles. */ /* Styles for markdown */ .markdown img { max-width: 100%; } .markdown video { max-width: 100%; } .markdown h1, .markdown h2 { line-height: 1.4; margin-top: 1em; margin-bottom: 16px; } .markdown h1 { font-size: 1.5em; line-height: 1.2em; border-bottom: 1px solid #eee; margin-top: 2em; padding-bottom: 10px; } .markdown h2 { font-size: 1.375em; line-height: 1.2em; border-bottom: 1px solid #eee; margin-top: 2em; padding-bottom: 10px; } .markdown h3 { font-size: 1.25em; } .markdown h4 { font-size: 1.125em; } .markdown h5 { font-size: 1.0em; } .markdown blockquote { padding: 0 15px; color: #777; border-left: 4px solid #ddd; margin: 0; } .markdown pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background-color: #f7f7f7; border-radius: 3px; word-wrap: normal; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } .markdown code, .markdown tt { padding: 0; background-color: rgba(0, 0, 0, 0.04); margin: 0; padding-top: 0.2em; padding-bottom: 0.2em; border-radius: 3px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; } .markdown pre > code { background-color: inherit; } .markdown table { display: block; width: 100%; overflow: auto; word-break: normal; word-break: keep-all; } .markdown table th { font-weight: bold; } .markdown table th, .markdown table td { padding: 6px 13px; border: 1px solid #ddd; } .markdown table tr { background-color: #fff; border-top: 1px solid #ccc; } .markdown table tr:nth-child(2n) { background-color: #f8f8f8; } /* End of markdown styles. */ .main-content.item-details-main-content { min-height: 950px; } .item-details-main-content { background-color: #FFFFFF; } .ms-Fabric { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; color: #333333; font-family: "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, "Roboto", "Helvetica Neue", sans-serif; font-size: 14px; } .ms-Fabric button { font-family: inherit; } .ux-section-details-tabs { margin-top: -20px; } @font-face { font-family: wf_segoe-ui; src: url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/light/latest.eot"); src: local("Segoe UI Light"), local("Segoe Light"), local("Segoe WP Light"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/light/latest.eot?#iefix") format("embedded-opentype"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/light/latest.woff2") format("woff2"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/light/latest.woff") format("woff"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/light/latest.ttf") format("truetype"); font-weight: 200; font-style: normal; -webkit-font-smoothing: antialiased; } #survey-container { position: relative; background-color: #f5ebc5; justify-content: space-between; text-align: center; } #survey-content-container { margin: 0; padding-left: 5%; padding-top: 8px; padding-bottom: 8px; padding-left:30%; padding-right:15%; } #survey-content-text { color: #000000 !important; display: table-cell; vertical-align: middle; padding: 0; font-family: Segoe UI, SegoeUI, Arial, sans-serif; font-style: normal; font-weight: normal; font-size: 13px; line-height: 16px; } #survey-info-icon { display: table-cell; padding: 4px; width: 24px; height: 24px; line-height: 0; text-align: left; } @font-face { font-family: wf_segoe-ui; src: url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/semilight/latest.eot"); src: local("Segoe UI Semilight"), local("Segoe Semilight"), local("Segoe WP Semilight"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/semilight/latest.eot?#iefix") format("embedded-opentype"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/semilight/latest.woff2") format("woff2"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/semilight/latest.woff") format("woff"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/semilight/latest.ttf") format("truetype"); font-weight: 300; font-style: normal; } @font-face { font-family: wf_segoe-ui; src: url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/normal/latest.eot"); src: local("Segoe UI"), local("Segoe"), local("Segoe WP"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/normal/latest.eot?#iefix") format("embedded-opentype"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/normal/latest.woff2") format("woff2"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/normal/latest.woff") format("woff"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/normal/latest.ttf") format("truetype"); font-weight: normal; font-style: normal; } @font-face { font-family: wf_segoe-ui; src: url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/Semibold/latest.eot"); src: local("Segoe UI Semibold"), local("Segoe Semibold"), local("Segoe WP Semibold"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/Semibold/latest.eot?#iefix") format("embedded-opentype"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/Semibold/latest.woff2") format("woff2"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/Semibold/latest.woff") format("woff"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/Semibold/latest.ttf") format("truetype"); font-weight: 500; font-style: normal; } @font-face { font-family: wf_segoe-ui; src: url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/Semibold/latest.eot"); src: local("Segoe UI Semibold"), local("Segoe Semibold"), local("Segoe WP Semibold"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/Semibold/latest.eot?#iefix") format("embedded-opentype"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/Semibold/latest.woff2") format("woff2"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/Semibold/latest.woff") format("woff"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/Semibold/latest.ttf") format("truetype"); font-weight: 600; font-style: normal; } @font-face { font-family: wf_segoe-ui; src: url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/bold/latest.eot"); src: local("Segoe UI Bold"), local("Segoe Bold"), local("Segoe WP Bold"), local("Segoe UI"), local("Segoe"), local("Segoe WP"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/bold/latest.eot?#iefix") format("embedded-opentype"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/bold/latest.woff") format("woff"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/bold/latest.woff2") format("woff2"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/bold/latest.ttf") format("truetype"); font-weight: bold; font-style: normal; } @font-face { font-family: wf_segoe-ui_light; src: url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/light/latest.eot"); src: local("Segoe UI Light"), local("Segoe Light"), local("Segoe WP Light"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/light/latest.eot?#iefix") format("embedded-opentype"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/light/latest.woff2") format("woff2"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/light/latest.woff") format("woff"), url("//c.s-microsoft.com/static/fonts/segoe-ui/west-european/light/latest.ttf") format("truetype"); font-weight: normal; font-style: normal; } @font-face { font-family: 'bowtie'; font-style: normal; font-weight: normal; src: url(https://cdn.vsassets.io/v/M246_20241014.9/_content/Fonts/Icons/bowtie.eot); src: url(https://cdn.vsassets.io/v/M246_20241014.9/_content/Fonts/Icons/bowtie.eot?iefix) format("embedded-opentype"), url(https://cdn.vsassets.io/v/M246_20241014.9/_content/Fonts/Icons/bowtie.woff) format("woff"), url(https://cdn.vsassets.io/v/M246_20241014.9/_content/Fonts/Icons/bowtie.svg#bowtie) format("svg"); } /*Sponsor start*/ @font-face { font-family: AzureDevOpsMDL2Assets; src: url(https://cdn.vsassets.io/v/M246_20241014.9/_content/Fonts/Icons/AzDevMDL2.woff) format('woff'); } .ux-item-sponsor-text { background-color: #F1F1F1; border: 1px solid #007ACC; color: #000000; padding: 5px 0px 5px 10px; } .ux-item-sponsor-heart-icon{ color: #B51E78; padding: inherit; padding-left: 6px; font-weight: 600; position: relative; top: 3px; } .bowtie-heart-icon::before { content: "\EB52"; font-family: AzureDevOpsMDL2Assets; } .bowtie-heart-icon { color: rgba(0, 120, 212, 1); color: var(--communication-background, rgba(0, 120, 212, 1)); } .ux-sponsor-text-icon { padding-left: 6px; padding-right: 6px; } /*Sponsor style end*/ /* Verified Domain style begin */ @font-face { font-family: AzureDevOpsMDL2Assets; src: url(https://cdn.vsassets.io/v/M246_20241014.9/_content/Fonts/Icons/AzDevMDL2.woff) format('woff'); } .ux-marketplace-verified-doamin-icon { vertical-align: bottom; display: flex; flex-direction: row; margin-right: 6px; line-height: 17px; } .ux-marketplace-verified-doamin-icon .verified-domain-icon { font-size: 17px; color: rgba(0, 120, 212, 1); height: 18px; margin-right: 20px; line-height: 13px; } .ux-marketplace-verified-doamin-icon .verified-domain-icon .verified-domain-icon-background { color: #ffffff; position: absolute; display: inline-block; -webkit-font-smoothing: antialiased; font-family: AzureDevOpsMDL2Assets; font-style: normal; font-family: AzureDevOpsMDL2Assets; font-style: normal; line-height: 15px; } .ux-marketplace-verified-doamin-icon .verified-domain-icon .verified-domain-icon-foreground { position: absolute; z-index: 1; display: inline-block; -webkit-font-smoothing: antialiased; font-family: AzureDevOpsMDL2Assets; font-style: normal; line-height: 15px; } .verified-domain-icon-foreground:before { content: "\F6AD"; } .verified-domain-icon-background:before { content: "\F7BD"; } .verified-domain-url-ssr { font-size: 16px; margin-left: 25px; line-height: 13px; } .ux-section-banner .item-header-content.light a.verified-domain-url-ssr { color: rgb(0, 102, 180); } .ux-section-banner .item-header-content.dark a.verified-domain-url-ssr { color: rgb(255, 255, 255); text-decoration: underline; } /* Verified Domain style end */ /* top pub. style begin */ /* top pub. style end */ /*rating review style begin*/ .item-details-control-root .ux-item-review-rating .ux-item-rating-control .rating-control .star { min-width: 16px; min-height: 16px; height: 12px; width: 12px; padding-top: 0px; margin: 0px 2px; } .item-details-control-root .ux-item-second-row-wrapper .ux-item-review-rating-wrapper { text-decoration: none; color: inherit; padding-top: 1px; padding-bottom: 3px; } .item-details-control-root .ux-item-second-row-wrapper .ux-item-review-rating-wrapper .ux-item-review-rating{ display: inline-flex; } .item-details-control-root .ux-item-second-row-wrapper .ux-item-review-rating-wrapper .ux-item-review-rating .ux-item-rating-control { margin-left: 10px; top: 2px; position: relative; } .item-details-control-root .ux-item-second-row-wrapper .ux-item-review-rating-wrapper .ux-item-review-rating .ux-item-rating-count { margin-left: 5px; font-size: 16px; margin-top: -1px; margin-right: 8px; } /*rating review style end*/ /*Spinner*/ .loader-container { text-align: -webkit-center; text-align: -mozkit-center; } .loader { border: 3px solid #f3f3f3; border-radius: 50%; border-top: solid #808080; width: 30px; height: 30px; -webkit-animation: spin 2s linear infinite; animation: spin 2s linear infinite; } @-webkit-keyframes spin { 0% { -webkit-transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); } } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .tooltip { position: relative; display: inline-block; border-bottom: 1px dotted black; } .tooltip .tooltiptext { visibility: hidden; width: 310px; background-color: black; color: white; text-align: center; border-radius: 6px; padding: 0px 0; position: absolute; z-index: 1; top: 1px; right: 100%; } .tooltip:hover .tooltiptext { visibility: visible; } .uxservices-header #signIn .tooltip a:focus-within .tooltiptext, .uxservices-header .signIn .tooltip a:focus-within .tooltiptext { visibility: visible; } .uxservices-header .tooltip .tooltiptext #copy_button:focus #outInfo { padding: 5px 10px; border: 1px solid #fff !important; } .ms-Button-icon.bowtie-icon.bowtie-copy-to-clipboard.icon-64:before{ content: "\E8C8"; font-family: AzureDevOpsMDL2Assets; } </style> <script type="text/javascript" src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script> <script type="text/javascript" nonce="acdNx0bx15PSOrEDw4OJUg=="> function sue(em, s, l, c, eo){var w=window,p="ue";w[p]=w[p]||[];w[p].push({"em":em,"s":s,"l":l,"c":c,"eo":eo});return false;} window.onerror = sue; isServerSideRendering = function () { try { return !(document !== undefined); } catch (e) { return true; } }; redirectToNonSSR = function(area) { var fqn = document.getElementById("FQN").value; var galleryUrl = document.getElementById("galleryUrl").value; window.location.assign(window.location.origin + galleryUrl +"items?itemName=" + fqn + "&ssr=false" + area); } hideAndShowTabs = function(tabToShow) { var currentTab = document.getElementsByClassName("selected-tab"); currentTab[0].style.display = "none"; currentTab[0].classList.remove("selected-tab"); var selectedTab = document.getElementById(tabToShow); selectedTab.classList.add("selected-tab"); selectedTab.style.display = "block"; // Changing the button styling for the newly clicked button var currentTabButton = document.getElementsByClassName("selected"); currentTabButton[0].classList.remove("selected"); var selectedTabButton = document.getElementById(tabToShow.slice(0, -3)); selectedTabButton.classList.add("selected"); } if (!isServerSideRendering()) { document.addEventListener('DOMContentLoaded', function () { document.getElementById("overview").addEventListener("click", function (e) { hideAndShowTabs("overviewTab"); }); document.getElementById("versionHistory").addEventListener("click", function (e) { hideAndShowTabs("versionHistoryTab"); }); document.getElementById("rnr").addEventListener("click", function (e) { redirectToNonSSR("#review-details"); }); document.getElementById("review-details").addEventListener("click", function (e) { redirectToNonSSR("#review-details"); }); // vscode copy command handlings let copyCommandInput = document.getElementById("vscode-command-input"); if (copyCommandInput) { copyCommandInput.addEventListener("click", function (e) { e.target.select(); }); document.getElementById("copy-to-clipboard-button").addEventListener("click", function (e) { document.getElementById("vscode-command-input").select(); var successful = document.execCommand('copy'); if (successful) { var element = document.getElementById("copied-animation"); element.style.display = "block"; } }); } // add handler for search document.getElementById("Fragment_SearchBox").addEventListener("submit", function (e) { e.preventDefault(); var queryText = document.getElementById("header-search-textbox").value; var galleryUrl = document.getElementById("galleryUrl").value; var searchTarget = document.getElementById("searchTarget").value; window.location = window.location.origin + galleryUrl + "search?term=" + queryText + "&target=" + searchTarget; }); let acqBtn = document.getElementsByClassName("install-button-container"); if (acqBtn && acqBtn[0]) { acqBtn[0].onclick = function (event) { var w = window, p = "ciEvents"; w[p] = w[p] || []; w[p].push({ "acquisition": true, "event": event }); }; } }); } document.addEventListener('DOMContentLoaded', function () { if (document.getElementById("mgtConsentCookie") != null) { document.getElementById("mgtConsentCookie").addEventListener("click", function (e) { console.log("from aspx hit."); manageConsent(); }); } }); document.addEventListener('DOMContentLoaded', function () { var h1targetDiv = document.getElementById("overviewTab").getElementsByTagName("h1"); for (var i = 0; i < h1targetDiv.length; i++) { h1targetDiv[i].setAttribute('role', 'heading'); h1targetDiv[i].setAttribute('aria-level', '2'); } }); </script> <title> Gemini Code Assist + Google Cloud Code - Visual Studio Marketplace </title> </head> <a href="#start-of-content" class="skip-main">Skip to content</a> <body class="platform gallery gallery-page-item-details"> <div id="cookie-banner"></div> <div class="uxservices-header" role="banner"> <div class="upperBandContent"> <a href="/" title="| Marketplace" class="left" > <img class="vs-logo-header" aria-label="Visual Studio logo" src="https://cdn.vsassets.io/v/M246_20241014.9/_content/Header/vs-logo.png"/> <div id="marketPlaceLogoLink" class="marketPlaceLogoLink marketplacetext-header" aria-label="Marketplace logo">| Marketplace</div> </a> <div class="right" style="float: right;"> <div class="signIn"> <a href="https://app.vssps.visualstudio.com/_signin?realm=marketplace.visualstudio.com&amp;reply_to=https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3DGoogleCloudTools.cloudcode&amp;redirect=1&amp;context=eyJodCI6MywiaGlkIjoiMjY2M2IxM2YtNTBlMy1hNjU1LWExNTktMjJmNmY0NzI1ZmFiIiwicXMiOnt9LCJyciI6IiIsInZoIjoiIiwiY3YiOiIiLCJjcyI6IiJ90&amp;workflowId=marketplace&amp;wt.mc_id=o~msft~marketplace~signIn#ctx=eyJTaWduSW5Db29raWVEb21haW5zIjpbImh0dHBzOi8vbG9naW4ud2luZG93cy5uZXQiLCJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20iXX01" class="scarabLink" style="margin-left:23px;padding-top:1px;color:#fff;font-weight:400;"> Sign in </a> </div> <form id="Fragment_SearchBox" class="header-search" aria-label="search" role="search" data-fragmentname="SearchBox"> <input id="header-search-textbox" class="header-search-textbox" aria-label="search" max-length="200" type="text" autocomplete="off"> <button id="header-search-button" class="header-search-button" aria-label="search" type="submit"></button> </form> </div> </div> </div> <div class="skiptarget" id="start-of-content"></div> <div id="react_0HN86RU9SUKQ8"><div data-reactroot=""><div class="item-details-control-root"><div class="breadcrumb"><div class="gallery-centered-content"><span class="bread-crumb-container"><a class="member" href="/vscode">Visual Studio Code</a><span class="separator">&gt;</span><a class="member" href="/search?sortBy=Installs&amp;category=Snippets&amp;target=VSCode">Snippets</a><span class="separator">&gt;</span><span class="member">Gemini Code Assist + Google Cloud Code</span></span><span class="vsCodeDownloadLinkContainer"><span>New to Visual Studio Code?</span> <a class="vsCodeDownloadLink" href="https://go.microsoft.com/fwlink?linkid=846418&amp;pub=GoogleCloudTools&amp;ext=cloudcode&amp;utm_source=vsmp&amp;utm_campaign=mpdetails" target="_blank" rel="noreferrer noopener nofollow" aria-label="Get Visual Studio Code Now">Get it now.</a></span></div></div><div class="main-content item-details-main-content" id="vss_1"><div class="item-details-control-root"><div class="ux-item-details"><div class="ux-section-banner" id="section-banner"><div class="ux-section-core gallery-centered-content"><table role="presentation"><tbody><tr><td class="item-img" id="vss_2"><img class="image-display" alt="Gemini Code Assist + Google Cloud Code" src="https://googlecloudtools.gallerycdn.vsassets.io/extensions/googlecloudtools/cloudcode/2.21.0/1731645620888/Microsoft.VisualStudio.Services.Icons.Default" style="top:0.5px;visibility:visible"/></td><td class="item-header"><div class="item-header-content light"><h1><span class="ux-item-name">Gemini Code Assist + Google Cloud Code</span></h1><div class="ux-item-second-row-wrapper"><div class="ux-item-publisher"><h2 role="presentation"><a class="ux-item-publisher-link item-banner-focussable-child-item" href="publishers/GoogleCloudTools" aria-label="More from Google Cloud publisher" style="color:#000000">Google Cloud</a></h2></div><div class="ux-marketplace-verified-doamin-icon"><div class="verified-domain-icon"><i class="verified-domain-icon-background" role="presentation"></i><i class="verified-domain-icon-foreground" role="presentation" title="Google Cloud has a verified ownership for the domain google.com"></i><a href="https://google.com" class="verified-domain-url-ssr">google.com</a></div></div><span class="divider"> | </span><div class="ux-item-rating"><div class="bowtie-icon bowtie-install"></div><span class="installs-text" title="The number of unique installations, not including updates."> 1,497,929 installs</span></div><a id="review-details" href="#review-details" class="ux-item-review-rating-wrapper" aria-label="Average rating: 2.7 out of 5. Navigate to user reviews."><span class="ux-item-review-rating" title="Average rating: 2.7 out of 5"><span class="divider"> | </span><span class="ux-item-rating-control"><span class="rating-control" aria-hidden="true"><img class="star full-star" alt="" aria-label="1 star" src="https://cdn.vsassets.io/v/M246_20241014.9/_content/FullStar.svg"/><img class="star full-star" alt="" aria-label="2 star" src="https://cdn.vsassets.io/v/M246_20241014.9/_content/FullStar.svg"/><img class="star half-star" alt="" src="https://cdn.vsassets.io/v/M246_20241014.9/_content/HalfStarDark.svg"/><img class="star empty-star" alt="" src="https://cdn.vsassets.io/v/M246_20241014.9/_content/EmptyStarDark.svg"/><img class="star empty-star" alt="" src="https://cdn.vsassets.io/v/M246_20241014.9/_content/EmptyStarDark.svg"/></span></span><span class="ux-item-rating-count"> (<span>85</span>)</span></span></a><span class="divider"> | </span><span class="item-price-category">Free</span></div><div class="ux-item-shortdesc">Gemini Code Assist + Tools for Google Cloud</div><div class="ux-item-action"><div class="installButtonContainer"><div class="one-click-install-container"><div><div class="ms-Fabric"><span class="ux-oneclick-install-button-container"><a href="vscode:extension/GoogleCloudTools.cloudcode" class="ms-Button ux-button install ms-Button--default root-39"><div class="ms-Button-flexContainer flexContainer-40"><div class="ms-Button-textContainer textContainer-41"><div class="ms-Button-label label-43" id="id__0">Install</div></div></div></a></span></div></div><span class="installHelpInfo"><a href="https://aka.ms/vscode_extn_install" target="_blank" rel="noreferrer noopener nofollow" class="light">Trouble Installing?<i class="bowtie-icon bowtie-navigate-external"></i></a></span></div></div><div style="display:none"><input type="text" id="FQN" readonly="" value="GoogleCloudTools.cloudcode"/><input type="text" id="galleryUrl" readonly="" value="/"/><input type="text" id="searchTarget" readonly="" value="VSCode"/></div></div></div></td></tr></tbody></table></div></div><div class="gallery-centered-content"><div class="ux-section-details"><div class="ms-Fabric ux-section-details-tabs"><div class="gallery-centered-content"><div class="tab"><button id="overview" class="selected">Overview</button><button id="versionHistory">Version History</button><button id="rnr">Rating &amp; Review</button></div><div class="tabcontent"><div id="overviewTab" class="overview selected-tab"><div class="details-tab itemdetails"><table class="ux-section-details-table" role="presentation"><tbody><tr><td class="ux-itemdetails-left"><div class="itemDetails"><div class="markdown"><h1 id=gemini-code-assist-google-cloud-code-for-visual-studio-code>Gemini Code Assist + Google Cloud Code for Visual Studio Code</h1> <p>Bring the power of Google Cloud and Gemini to help you build applications faster and easier than ever before. Gemini Code Assist, your AI-powered coding assistant helps you quickly write excellent code. Cloud Code can then help you deploy your code to your favorite Google Cloud platforms with just a few clicks.</p> <p><img src="https://www.gstatic.com/cloudssh/cloudcode/cloud_code_demo.gif" alt="Cloud Code demo"></p> <h1 id=key-features>Key Features</h1> <h2 id=supporting-your-development-workflow>Supporting your development workflow</h2> <p>Get Gemini Code Assist, Google Cloud's powerful AI Assistant, to make it easier than ever to build and deploy applications. Get run-ready sample applications, out-of-the-box configuration snippets, support for key Google Cloud Services like Cloud APIs and Google Cloud Build, Cloud Native Buildpacks, Secrets Manager, one-click deployment, a tailored debugging experience, iterative run/debug experience and much more. Cloud Code makes developing and testing your application a whole lot easier no matter where it runs!</p> <details> <summary>Read more</summary> <h3 id=highlights>Highlights</h3> <ul> <li>Pick your preferred language with Cloud Code's support for Go, Java, Node.js, Python, and .NET Core app development.</li> <li>Get straight to developing with Cloud Code's simplified authentication workflow that uses your Google Cloud credentials.</li> <li>Monitor your app with streaming logs and customize the output with additional filters to produce results that are meaningful to you.</li> </ul> </details> <h2 id=gemini-code-assist-formerly-duet-ai-for-developers-ai-assistant-to-simplify-development>Gemini Code Assist (formerly Duet AI for Developers) - AI assistant to simplify development</h2> <p>Use Gemini Code Assist, your AI-powered collaborator, to accomplish tasks more effectively and efficiently. Gemini Code Assist provides contextualized responses to your prompts to help guide you on what you're trying to do with your code. It also shares source citations regarding which documentation and code samples the assistant used to generate its responses. You can do this right in the IDE to avoid having to context-switch out to your browser or documentation. <a href="https://cloud.google.com/gemini/docs/overview" target=_blank rel="noreferrer noopener nofollow">Read the docs</a></p> <p><img src="https://www.gstatic.com/cloudssh/cloudcode/duet_ai_code_generation.gif" alt="Gemini Code Assist generation"></p> <details> <summary>Read more</summary> <h3 id=highlights-1>Highlights</h3> <ul> <li>Through a natural language chat interface, you can quickly chat with Gemini Code Assist to get answers to cloud questions, or receive guidance on best practices.</li> <li>Whether you are writing apps, calling APIs, or querying data, Gemini Code Assist can help complete your code while you write, or generate code blocks based on comments.</li> <li>Gemini Code Assist can help you both generate code (including sharing citations) as well as debug code to get your app up and running in no time.</li> <li>As you write functions and applications, Gemini Code Assist can also help you generate unit tests to help you make your code more robust and increase your test coverage, thereby reducing the risk of failures in production.</li> <li>Gemini Code Assist can help you with development practices across most popular languages. In all Gemini Code Assist supports 20+ languages including C, C++, C#, Go, Python, Java, JavaScript, Kotlin, TypeScript just to name a few.</li> <li>Gemini Code Assist also supports code infrastructure interfaces including gCloud CLI, KRM and Terraform making it easy for you to interact with various infrastructure layers.</li> </ul> </details> <h2 id=google-cloud-apis-at-your-fingertips>Google Cloud APIs at your fingertips</h2> <p>Browse available Cloud APIs, enable services, and install and learn how to integrate client libraries in your app without leaving your IDE and breaking your development flow, all with the API library browser. <a href="https://cloud.google.com/code/docs/vscode/client-libraries" target=_blank rel="noreferrer noopener nofollow">Read the docs</a></p> <h2 id=develop-cloud-functions-locally>Develop Cloud Functions locally</h2> <p>View, download, deploy, and test Cloud Functions directly from Cloud Code. Leverage the power of the VS Code IDE to make changes to your Cloud Function, then deploy those changes without ever needing to leave Cloud Code. <a href="https://cloud.google.com/code/docs/vscode/create-deploy-function" target=_blank rel="noreferrer noopener nofollow">Read the docs</a></p> <h2 id=kubernetes-development>Kubernetes development</h2> <p>Create and run a new app in minutes with Cloud Code’s Kubernetes support. Or work on an existing application, customize its YAML with Cloud Code’s intelligent authoring support, debug it relentlessly with the setup-free debugger, and run it on any of your Kubernetes clusters. Whatever your workflow is, Cloud Code helps you spend less time on configuration and context-switching, so you can focus on developing your app. <a href="https://cloud.google.com/code/docs/vscode/k8s-overview" target=_blank rel="noreferrer noopener nofollow">Read the docs</a></p> <h2 id=cloud-run-development>Cloud Run development</h2> <p>Create and deploy a new service in minutes with Cloud Code's Cloud Run support, monitoring your service's progress with the Cloud Run Explorer and service logs accessible in the Log Viewer. If you'd prefer a local development workflow, you can also develop and debug a service locally with the built-in Cloud Run emulator. <a href="https://cloud.google.com/code/docs/vscode/cloud-run-overview" target=_blank rel="noreferrer noopener nofollow">Read the docs</a></p> <h2 id=containerization-made-easy>Containerization made easy</h2> <p>Create secure, production-ready container images from source code without having to worry about a Dockerfile with Cloud Code's built-in support for Google Cloud Buildpacks. You get to focus on building your application, not containerizing it.</p> <h2 id=built-in-secret-manager-support>Built-in Secret Manager support</h2> <p>Protect sensitive information and keep your app secure with Cloud Code's integrated Secret Manager support. You can create, view, update, and use secrets in the Secret Manager view without having them in your codebase. <a href="https://cloud.google.com/code/docs/vscode/secret-manager" target=_blank rel="noreferrer noopener nofollow">Read the docs</a></p> <h2 id=develop-using-compute-engine-virtual-machines>Develop using Compute Engine Virtual Machines</h2> <p>Browse Compute Engine Virtual Machines and their relevant properties without leaving your IDE. Easily SSH into your VM using the terminal window and transfer files from your local environment to your virtual machine all with Cloud Code support for Compute Engine. <a href="https://cloud.google.com/code/docs/vscode/manage-vms" target=_blank rel="noreferrer noopener nofollow">Read the docs</a></p> <h2 id=develop-apis-with-apigee>Develop APIs with Apigee</h2> <p>Develop your API proxies and verify the functionality through unit and manual testing using the Apigee Emulator (local runtime). Quickly iterate through build and test cycles without impact to dependent applications. <a href="https://cloud.google.com/apigee/docs/api-platform/local-development/overview" target=_blank rel="noreferrer noopener nofollow">Read the docs</a></p> <h1 id=resources>Resources</h1> <ul> <li><a href="https://cloud.google.com/code" target=_blank rel="noreferrer noopener nofollow">Learn more</a>: Learn more about Cloud Code and what it has to offer.</li> <li><a href="https://cloud.google.com/code/docs/vscode" target=_blank rel="noreferrer noopener nofollow">Documentation</a>: Cloud Code has a lot of features to explore. Head over to our documentation to discover more.</li> <li><a href="https://join.slack.com/t/googlecloud-community/shared_invite/zt-erdf4ity-8ZMUQ18DYV~5hkbZ~gCswg" target=_blank rel="noreferrer noopener nofollow">Talk to us</a>: Connect to the Cloud Code development team by joining the #cloud-code Slack channel</li> <li><a href="https://github.com/GoogleCloudPlatform/cloud-code-vscode/issues/new?assignees=&amp;labels=&amp;template=bug_report.md&amp;title=" target=_blank rel="noreferrer noopener nofollow">File an issue</a>: If you discover an issue, file a bug and we'll fix it as soon as possible.</li> <li><a href="https://github.com/GoogleCloudPlatform/cloud-code-vscode/issues/new?assignees=&amp;labels=enhancement&amp;template=feature_request.md&amp;title=" target=_blank rel="noreferrer noopener nofollow">Request a feature</a>: If you have any feature requests, ideas for improvement, and general feedback, submit a feature request.</li> </ul> <h2 id=security-disclosures>Security Disclosures</h2> <p>Please see our <a href="https://github.com/GoogleCloudPlatform/cloud-code-vscode/blob/HEAD/SECURITY.md" target=_blank rel="noreferrer noopener nofollow">security disclosure process</a>. All <a href="https://github.com/GoogleCloudPlatform/cloud-code-vscode/security/advisories" target=_blank rel="noreferrer noopener nofollow">security advisories</a> are managed on Github.</p> <p><em>Apache Log4j 2 Vulnerability (Log4j 2):</em> the Cloud Code guide to <a href="https://cloud.google.com/code/docs/vscode/set-up-sample-repo" target=_blank rel="noreferrer noopener nofollow"><em>&quot;Setting up a samples repository&quot;</em></a> linked to a demonstration project with a sample using a vulnerable version of Log4j 2. We strongly advise customers to update their samples repositories. Visit the <a href="https://github.com/GoogleCloudPlatform/cloud-code-vscode/security/advisories/GHSA-3ghm-xvvq-qqh6" target=_blank rel="noreferrer noopener nofollow">security advisory</a> for details and remediation.</p> <p>Cloud Code telemetry overall is handled in accordance with the <a href="https://policies.google.com/privacy" target=_blank rel="noreferrer noopener nofollow">Google Privacy Policy</a>. When you use Cloud Code to interact with or utilize GCP Services (including via Cloud SDK), your information is handled in accordance with the <a href="https://cloud.google.com/terms/cloud-privacy-notice" target=_blank rel="noreferrer noopener nofollow">Google Cloud Privacy Notice</a></p> </div></div></td><td class="ux-itemdetails-right" role="complementary"><div class="screenshot-carousel-container"></div><div class="loader-container"><div class="loader"></div></div><div class="itemDetails-right"></div></td></tr></tbody></table></div></div><div id="versionHistoryTab" style="display:none"><div class="versionHistoryTab-loader-container"><div class="loader"></div></div><div id="version-history-tab-content"></div></div></div></div></div></div></div></div></div></div><div id="gallery-footer"><footer><div id="ux-footer" class="ltr" role="contentinfo"><div id="baseFooter"><div id="Fragment_BaseFooterLinks"><div class="linkList"><ul class="links horizontal"><li><a href="https://www.visualstudio.com/support/support-overview-vs" data-mscc-ic="false">Contact us</a></li><li><a href="https://careers.microsoft.com/" data-mscc-ic="false">Jobs</a></li><li><a href="https://go.microsoft.com/fwlink/?LinkID=521839" data-mscc-ic="false">Privacy</a></li><li><a id="mgtConsentCookie" data-mscc-ic="false">Manage cookies</a></li><li><a href="https://aka.ms/vsmarketplace-ToU" data-mscc-ic="false">Terms of use</a></li><li><a href="https://www.microsoft.com/en-us/legal/intellectualproperty/Trademarks/EN-US.aspx" data-mscc-ic="false">Trademarks</a></li></ul></div></div><div id="rightBaseFooter">©<!-- --> 2024 Microsoft<span class="microsoftLogo" title="Microsoft"></span></div><div class="clear"></div></div></div></footer></div></div></div></div> <div class="render-time"> <script class="server-side-render" defer="defer" type="application/json">2</script> </div> <div class="rhs-content"> <script class="jiContent" defer="defer" type="application/json">{"GitHubLink":"https://github.com/GoogleCloudPlatform/cloud-code-vscode.git","ReleaseDateString":"Mon, 08 Apr 2019 15:05:09 GMT","LastUpdatedDateString":"Fri, 15 Nov 2024 04:49:22 GMT","GalleryUrl":"/","Categories":["Snippets","Linters","Debuggers"],"Tags":["__ext_log","AI Assistant","Apigee","Artifact Registry","BigQuery Datasets","BigQuery Notebooks","Cloud Build","Cloud Functions","Cloud Run","Cloud SDK","Cloud Storage","Code Completion","Code Generation","Compute Engine","Container Registry","Containers","Dataproc","debuggers","Docker","Duet","Duet AI","GCE","GCF","gcloud","GCP","Gemini Code Assist","Google","Google Cloud","ignore","json","k8s","keybindings","knative","Kubernetes","LLM","Log","Minikube","Secret Manager","Skaffold","snippet"],"ExtensionProperties":{"Microsoft.VisualStudio.Services.Links.Getstarted":"https://github.com/GoogleCloudPlatform/cloud-code-vscode.git","Microsoft.VisualStudio.Services.Links.Support":"https://github.com/GoogleCloudPlatform/cloud-code-vscode/issues","Microsoft.VisualStudio.Services.Links.Learn":"https://github.com/GoogleCloudPlatform/cloud-code-vscode#readme","Microsoft.VisualStudio.Services.Links.Source":"https://github.com/GoogleCloudPlatform/cloud-code-vscode.git","Microsoft.VisualStudio.Services.Links.GitHub":"https://github.com/GoogleCloudPlatform/cloud-code-vscode.git","Microsoft.VisualStudio.Code.Engine":"^1.82.0","Microsoft.VisualStudio.Services.GitHubFlavoredMarkdown":"true","Microsoft.VisualStudio.Code.ExtensionDependencies":"","Microsoft.VisualStudio.Services.EnableMarketplaceQnA":"false","Microsoft.VisualStudio.Code.ExtensionPack":"","Microsoft.VisualStudio.Code.LocalizedLanguages":"","Microsoft.VisualStudio.Code.ExtensionKind":"workspace","Microsoft.VisualStudio.Services.Content.Pricing":"Free"},"Resources":{"LicenseText":"License","ChangelogText":"Changelog","PublisherName":"GoogleCloudTools","ExtensionName":"cloudcode","Version":"2.21.0"},"MoreInfo":{"VersionValue":"2.21.0","PublisherValue":"Google Cloud","UniqueIdentifierValue":"GoogleCloudTools.cloudcode","TwitterShareContents":"Just%20discovered%20this%20on%20the%20%23VSMarketplace%3A%20https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3DGoogleCloudTools.cloudcode","EmailShareContents":"Hi%2C%20Just%20discovered%20this%20extension%20on%20the%20%23VSMarketplace%20that%20may%20be%20of%20interest%20to%20you.%20Check%20it%20out%20%40%20https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3DGoogleCloudTools.cloudcode%20%21","EmailShareSubject":"Check%20out%20-%20Gemini%20Code%20Assist%20%2B%20Google%20Cloud%20Code%20for%20Visual%20Studio%20Code","IsPublic":true},"ResourcesPath":"https://cdn.vsassets.io/v/M246_20241014.9/_content/","AssetUri":"https://googlecloudtools.gallerycdn.vsassets.io/extensions/googlecloudtools/cloudcode/2.21.0/1731645620888","VsixManifestAssetType":"Microsoft.VisualStudio.Services.VsixManifest","StaticResourceVersion":"M246_20241014.9","AfdIdentifier":"Ref A: 9DF5B12D28CF486ABDE2109D52F9A31F Ref B: SG1EDGE0311 Ref C: 2024-11-23T08:55:11Z","VsixId":null,"WorksWith":["Universal"],"ItemType":3,"IsMDPruned":false,"PrunedMDLength":0,"OverviewMDLength":8526,"IsRHSAsyncComponentsEnabled":true,"OfferDetails":null,"IsDetailsTabsEnabled":false,"ShowVersionHistory":true,"IsSeeMoreButtonOnVersionHistoryTab":false,"DisableVSCodeDownloadButtonEnabled":false,"IsReferralLinkRedirectionWarningPopupEnabled":true,"Versions":[{"version":"2.21.0","lastUpdated":"Fri, 15 Nov 2024 04:49:22 GMT","targetPlatform":null},{"version":"2.20.2","lastUpdated":"Sat, 09 Nov 2024 00:53:47 GMT","targetPlatform":null},{"version":"2.20.1","lastUpdated":"Thu, 07 Nov 2024 23:12:59 GMT","targetPlatform":null},{"version":"2.20.0","lastUpdated":"Wed, 30 Oct 2024 19:35:16 GMT","targetPlatform":null},{"version":"2.19.0","lastUpdated":"Wed, 16 Oct 2024 13:28:40 GMT","targetPlatform":null}],"IsCSRFeatureEnabled":false,"TargetPlatforms":{"win32-x64":"Windows x64","win32-arm64":"Windows ARM","linux-x64":"Linux x64","linux-arm64":"Linux ARM64","linux-armhf":"Linux ARM32","darwin-x64":"macOS Intel","darwin-arm64":"macOS Apple Silicon","alpine-x64":"Alpine Linux 64 bit","web":"Web","alpine-arm64":"Alpine Linux ARM64","win32-ia32":"Windows ia32"}}</script> </div> <div class="csp-user"> <script class="is-csp-user" defer="defer" type="application/json">false</script> </div> <script type="text/javascript" nonce="acdNx0bx15PSOrEDw4OJUg=="> if (document) { try { if (window.performance && window.performance.timing) { window["marketplaceRenderTime"] = Date.now() - window.performance.timing.navigationStart; } } catch(e){ } } </script> <script type="text/javascript" nonce="acdNx0bx15PSOrEDw4OJUg=="> var __vssPageContext = {"webContext":{"user":{"id":"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa","name":"Anonymous","email":"","uniqueName":"TEAM FOUNDATION\\Anonymous"},"host":{"id":"2663b13f-50e3-a655-a159-22f6f4725fab","name":"TEAM FOUNDATION","uri":"https://marketplace.visualstudio.com/","relativeUri":"/","hostType":"deployment","scheme":"https","authority":"marketplace.visualstudio.com"}},"moduleLoaderConfig":{"baseUrl":"https://cdn.vsassets.io/v/M246_20241014.9/_scripts/TFS/min/","paths":{"Engagement/Resources":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/en-US","ContentRendering/Resources":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/en-US","VSS/Resources":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/en-US","Charts/Resources":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/en-US","Gallery/Scripts/Gallery/Resources":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/en-US","VSSPreview/Resources":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/en-US","highcharts":"https://cdn.vsassets.io/3rdParty/_scripts/highcharts.v11.4.6","highcharts/highcharts-more":"https://cdn.vsassets.io/3rdParty/_scripts/highcharts-more.v11.4.6","highcharts/modules/accessibility":"https://cdn.vsassets.io/3rdParty/_scripts/highcharts-accessibility.v11.4.6","highcharts/modules/funnel":"https://cdn.vsassets.io/3rdParty/_scripts/highcharts-funnel.v11.4.6","highcharts/modules/heatmap":"https://cdn.vsassets.io/3rdParty/_scripts/highcharts-heatmap.v11.4.6"},"map":{"*":{"office-ui-fabric-react/lib":"OfficeFabric"}},"contributionPaths":{"VSS":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/VSS","pathType":"default"},"VSS/Resources":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/en-US","pathType":"resource"},"q":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/q","pathType":"default"},"knockout":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/knockout","pathType":"default"},"mousetrap":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/mousetrap","pathType":"default"},"mustache":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/mustache","pathType":"default"},"react":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/react.15.3","pathType":"default"},"react-dom":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/react-dom.15.3","pathType":"default"},"react-transition-group":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/react-transition-group.15.3","pathType":"default"},"jQueryUI":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/jQueryUI","pathType":"default"},"jquery":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/jquery","pathType":"default"},"OfficeFabric":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/OfficeFabric","pathType":"default"},"tslib":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/tslib","pathType":"default"},"@uifabric":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/@uifabric","pathType":"default"},"VSSUI":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/VSSUI","pathType":"default"},"ContentRendering":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/ContentRendering","pathType":"default"},"ContentRendering/Resources":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/en-US","pathType":"resource"},"Charts":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/Charts","pathType":"default"},"Charts/Resources":{"value":"/_static/tfs/M246_20241014.9/_scripts/TFS/min/en-US","pathType":"resource"},"highcharts":{"value":"https://cdn.vsassets.io/3rdParty/_scripts/highcharts.v11.4.6","pathType":"thirdParty"},"highcharts/highcharts-more":{"value":"https://cdn.vsassets.io/3rdParty/_scripts/highcharts-more.v11.4.6","pathType":"thirdParty"},"highcharts/modules/accessibility":{"value":"https://cdn.vsassets.io/3rdParty/_scripts/highcharts-accessibility.v11.4.6","pathType":"thirdParty"},"highcharts/modules/funnel":{"value":"https://cdn.vsassets.io/3rdParty/_scripts/highcharts-funnel.v11.4.6","pathType":"thirdParty"},"highcharts/modules/heatmap":{"value":"https://cdn.vsassets.io/3rdParty/_scripts/highcharts-heatmap.v11.4.6","pathType":"thirdParty"}},"shim":{"jquery":{"deps":[],"exports":"jQuery"}},"waitSeconds":30},"coreReferences":{"stylesheets":[{"url":"/_static/tfs/M246_20241014.9/_cssbundles/Default/vss-bundle-ext-core-css-vdl6C9oqaY8jIYGt0fSVzQfhTlc3U3sLKE8T0mcZwW_0=","highContrastUrl":null,"isCoreStylesheet":true}],"scripts":[{"identifier":"JQuery","url":"https://cdn.vsassets.io/3rdParty/_scripts/jquery-3.6.0.min.js","fallbackUrl":null,"fallbackCondition":null,"isCoreModule":true},{"identifier":"JQueryXDomain","url":"https://cdn.vsassets.io/3rdParty/_scripts/jquery.xdomainrequest.min.js","fallbackUrl":null,"fallbackCondition":null,"isCoreModule":true},{"identifier":"Promise","url":"https://cdn.vsassets.io/v/M246_20241014.9/_scripts/TFS/min/promise.js","fallbackUrl":null,"fallbackCondition":null,"isCoreModule":true},{"identifier":"GlobalScripts","url":"https://cdn.vsassets.io/v/M246_20241014.9/_scripts/TFS/min/global-scripts.js","fallbackUrl":null,"fallbackCondition":null,"isCoreModule":true},{"identifier":"LoaderFixes","url":"https://cdn.vsassets.io/v/M246_20241014.9/_scripts/TFS/pre-loader-shim.min.js","fallbackUrl":null,"fallbackCondition":null,"isCoreModule":false},{"identifier":"AMDLoader","url":"https://cdn.vsassets.io/3rdParty/_scripts/require.min.js","fallbackUrl":null,"fallbackCondition":null,"isCoreModule":true},{"identifier":"LoaderFixes","url":"https://cdn.vsassets.io/v/M246_20241014.9/_scripts/TFS/post-loader-shim.min.js","fallbackUrl":null,"fallbackCondition":null,"isCoreModule":false}],"coreScriptsBundle":{"identifier":"CoreBundle","url":"/_public/_Bundling/Content?bundle=vss-bundle-basejs-vx38JYf0FTtFkI9k88H54KYCLs9sIP_6xJwgWGnd-xvw=","fallbackUrl":null,"fallbackCondition":null,"isCoreModule":true},"extensionCoreReferences":{"identifier":"CoreBundle","url":"/_public/_Bundling/Content?bundle=vss-bundle-ext-core-vMBsClfE1T0nfPIDiyalotBEmU2f35Umsz6q07K4-aKI=","fallbackUrl":null,"fallbackCondition":null,"isCoreModule":true}},"webAccessConfiguration":{"isHosted":true,"paths":{"rootPath":"/","staticContentRootPath":"/","staticContentVersion":"M246_20241014.9","resourcesPath":"https://cdn.vsassets.io/v/M246_20241014.9/_content/","staticRootTfs":"https://cdn.vsassets.io/v/M246_20241014.9/","cdnFallbackStaticRootTfs":"/_static/tfs/M246_20241014.9/","staticRoot3rdParty":"https://cdn.vsassets.io/3rdParty/"},"api":{"webApiVersion":"1","areaPrefix":"_","controllerPrefix":"_"},"mailSettings":{"enabled":false},"registryItems":{}},"microsoftAjaxConfig":{"cultureInfo":{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":1,"PercentNegativePattern":1,"NegativeInfinitySymbol":"-∞","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"∞","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"‰","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"0001-01-01T00:00:00","MaxSupportedDateTime":"9999-12-31T23:59:59.9999999","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2049,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM d, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM d, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM d","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy'-'MM'-'dd'T'HH':'mm':'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy'-'MM'-'dd HH':'mm':'ss'Z'","YearMonthPattern":"MMMM yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]},"numberShortForm":{"QuantitySymbols":["K","M","B"],"NumberGroupSize":1000,"ThousandSymbol":"K"},"eras":null}},"timeZonesConfiguration":{},"featureAvailability":{"featureStates":{"VisualStudio.Services.Contribution.EnableOnPremUnsecureBrowsers":false,"VisualStudio.Service.WebPlatform.ClientErrorReporting":true,"Microsoft.VisualStudio.Services.Gallery.Client.UseCdnAssetUri":false,"VisualStudio.Services.WebAccess.SubresourceIntegrity":false,"VisualStudio.Services.IdentityPicker.ReactProfileCard":true}},"appInsightsConfiguration":{"enabled":false,"instrumentationKey":"00000000-0000-0000-0000-000000000000","insightsScriptUrl":null},"diagnostics":{"sessionId":"45a87166-f460-49ef-8790-0ded6b346f17","activityId":"45a87166-f460-49ef-8790-0ded6b346f17","bundlingEnabled":true,"cdnAvailable":true,"cdnEnabled":true,"webPlatformVersion":"M246","serviceVersion":"Dev19.M246.1 (build: AzureDevOps_M246_20241014.9)"},"navigation":{"topMostLevel":"deployment","area":"","currentController":"Gallery","currentAction":"Details","commandName":"Gallery.Details","routeId":"ms.vss-gallery-web.gallery-route-details","routeTemplates":["items"],"routeValues":{"controller":"Gallery","action":"Details"}},"globalization":{"explicitTheme":"","theme":"Default","culture":"en-US","timezoneOffset":0,"timeZoneId":"UTC"},"serviceInstanceId":"00000029-0000-8888-8000-000000000000","hubsContext":{},"serviceLocations":{"locations":{"951917ac-a960-4999-8464-e3f0aa25b381":{"Application":"https://app.vssps.visualstudio.com/","Deployment":"https://app.vssps.visualstudio.com/"}}}};</script> <script defer="true" data-bundlelength="127542" data-bundlename="basejs" nonce="acdNx0bx15PSOrEDw4OJUg==" src="/_public/_Bundling/Content?bundle=vss-bundle-basejs-vx38JYf0FTtFkI9k88H54KYCLs9sIP_6xJwgWGnd-xvw=" type="text/javascript"></script> <script defer="true" data-bundlelength="227227" data-bundlename="common" data-includedscripts="VSS/Bundling" nonce="acdNx0bx15PSOrEDw4OJUg==" src="/_public/_Bundling/Content?bundle=vss-bundle-common-vqskrZmqV9Y8Ba3TvxfO3_AsqhD5HzEWWv45nA_svAXw=" type="text/javascript"></script><script defer="true" data-bundlelength="2207075" data-bundlename="view" data-includedscripts="Gallery/Client/Pages/VSSItemDetailsSSR/VSSItemDetailsSSRAsync" nonce="acdNx0bx15PSOrEDw4OJUg==" src="/_public/_Bundling/Content?bundle=vss-bundle-view-vmFtcW7cNoIAueCOi84qKkeo6ZczEDj5sv-kq78U2GjE=" type="text/javascript"></script> <script defer=true nonce="acdNx0bx15PSOrEDw4OJUg==" src="/_static/tfs/M246_20241014.9/_scripts/TFS/min/Gallery/Client/Pages/VSSItemDetailsSSR/SSRModuleWrappers.js"></script> <script nonce="acdNx0bx15PSOrEDw4OJUg==" src="/_static/tfs/M246_20241014.9/_scripts/TFS/min/Gallery/Client/Common/ManageCookieDrop.js"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10