blob: af95b3a6dd5070f0f02f8045c471e53c90da1eaf [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112407000-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-112407000-2');
</script>
<!-- Google Tag Manager -->
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-KS8HHSF');
</script>
<!-- End Google Tag Manager -->
<head>
<base href="/codewind/" />
<title>Deploying Codewind remotely | Codewind</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Deploying Codewind remotely">
<meta name="keywords" content="users, projects, Kubernetes, LDAP, user management, access management, login, deployment, pod, security, securing cloud connection, remote deployment of Code..."/>
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon/favicon-32x32.png">
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:300,400,600&display=swap" rel="stylesheet">
<!-- Bootstrap CSS CDN -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/styles.css">
<link rel="stylesheet" href="css/docs.css">
<link rel="stylesheet" href="css/blog.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/themes/prism.min.css">
</head>
<body data-spy="scroll" data-target="#toc">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KS8HHSF"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="main">
<!-- Bootstrap NavBar -->
<nav class="navbar navbar-expand-lg navbar-light cw-banner fixed-top" aria-label="topnav">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="">
<img alt="Codewind logo image" title="Codewind logo image" src="images/header/header-logo.svg" class="cw-header-logo" alt="">
</a>
<div class="collapse navbar-collapse justify-content-end cw-navbar-padding" id="navbarNavDropdown">
<ul class="navbar-nav cw-navbar-nav">
<li class="nav-item cw-navbar-item cw-header-link-docs">
<a class="nav-link cw-nav-link cw-header-link-text" href="gettingstarted.html">Docs</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link-news">
<a class="nav-link cw-nav-link cw-header-link-text" href="news.html">News</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link-news">
<a class="nav-link cw-nav-link cw-header-link-text" href="blog.html">Blog</a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://github.com/eclipse/codewind"><img alt="Codewind Github" class="banner-image" title="Codewind Github" data-toggle="tooltip" data-placement="top" id="cw_github_stars" title="..." src="images/header/github.svg"/></a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://twitter.com/EclipseCodewind"><img alt="Codewind Twitter" class="banner-image" title="Codewind Twitter" src="images/header/twitter.png"/></a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img alt="Codewind Mattermost" class="banner-image" title="Codewind Mattermost" src="images/header/mattermost.png"/></a>
</li>
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ"><img alt="Codewind YouTube" class="banner-image" title="Codewind YouTube" src="images/header/youtube.png"/></a>
</li>
<!-- li class="nav-item cw-navbar-item" id="download-li">
<button onClick="window.location.href='https://microclimate.dev/download/codewind';" type="button" class="btn cw-download-button">Download</button>
<a href="https://microclimate.dev/download/codewind" class="nav-link cw-nav-link cw-download-link" href="#">Download</a>
</li> -->
<!-- Smaller devices menu END -->
</ul>
</div>
</nav>
<!-- End Bootstrap NavBar -->
<!-- Bootstrap row -->
<div class="row" id="body-row">
<!-- Sidebar -->
<div id="sidebar-container" class="bg-light" role="navigation" aria-label="sidebar">
<!-- Bootstrap List Group -->
<ul class="list-group sticky-top bg-light cw-sticky-offset">
<!-- Start single page getting started -->
<a href="overview.html"
class="bg-light list-group-item list-group-item-action">
What is Codewind?
</a>
<a href="#getting_started" data-url="gettingstarted.html" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Getting started</span>
<span class="submenu-icon"></span>
</div>
</a>
<div id="getting_started" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="#vs_code" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
VS Code
<span class="submenu-icon"></span>
</a>
<!-- 3d level - eclipse -->
<div id="vs_code" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="vsc-getting-started.html"
class="bg-light list-group-item list-group-item-action">
Installing Codewind for VS Code
</a>
<a href="vsc-firstproject.html"
class="bg-light list-group-item list-group-item-action">
Creating your first VS Code Codewind project
</a>
<a href="vsc-codechange.html"
class="bg-light list-group-item list-group-item-action">
Making a code change with VS Code
</a>
</div>
<a href="#eclipse" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
Eclipse
<span class="submenu-icon"></span>
</a>
<!-- 3d level - eclipse -->
<div id="eclipse" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="eclipse-getting-started.html"
class="bg-light list-group-item list-group-item-action">
Installing Codewind for Eclipse
</a>
<a href="eclipse-firstproject.html"
class="bg-light list-group-item list-group-item-action">
Creating your first Eclipse Codewind project
</a>
<a href="eclipse-codechange.html"
class="bg-light list-group-item list-group-item-action">
Making a code change with Eclipse
</a>
</div>
<a href="#eclipse_che" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
Eclipse Che
<span class="submenu-icon"></span>
</a>
<!-- 3d level - eclipse -->
<div id="eclipse_che" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="che-installinfo.html"
class="bg-light list-group-item list-group-item-action">
Installing Eclipse Che for Codewind
</a>
<a href="che-setupregistries.html"
class="bg-light list-group-item list-group-item-action">
Adding an image registry in Codewind in Che
</a>
<a href="che-createcodewindworkspace.html"
class="bg-light list-group-item list-group-item-action">
Creating a Codewind workspace in Che
</a>
<a href="che-createfirstproject.html"
class="bg-light list-group-item list-group-item-action">
Creating your first project with Codewind for Eclipse Che
</a>
<a href="che-tektonpipelines.html"
class="bg-light list-group-item list-group-item-action">
Configuring Codewind for Tekton pipelines
</a>
<a href="che-odo-support.html"
class="bg-light list-group-item list-group-item-action">
OpenShift Do (odo) support in Codewind
</a>
<a href="openshiftregistry.html"
class="bg-light list-group-item list-group-item-action">
Adding the OpenShift internal registry with Codewind
</a>
<a href="che-uninstall.html"
class="bg-light list-group-item list-group-item-action">
Uninstalling Codewind for Eclipse Che
</a>
</div>
<a href="#intellij" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
IntelliJ
<span class="submenu-icon"></span>
</a>
<!-- 3d level - eclipse -->
<div id="intellij" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="intellij-getting-started.html"
class="bg-light list-group-item list-group-item-action">
Installing Codewind for IntelliJ
</a>
<a href="intellij-firstproject.html"
class="bg-light list-group-item list-group-item-action">
Creating your first IntelliJ Codewind project
</a>
<a href="intellij-codechange.html"
class="bg-light list-group-item list-group-item-action">
Making a code change with IntelliJ
</a>
</div>
</div>
<a href="remote-deploying-codewind.html"
class="cw-current-page bg-light list-group-item list-group-item-action">
Deploying Codewind remotely
</a>
<a href="#using_codewind_remotely" data-url="" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Using Codewind remotely</span>
<span class="submenu-icon"></span>
</div>
</a>
<div id="using_codewind_remotely" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="remote-codewind-overview.html"
class="bg-light list-group-item list-group-item-action">
Overview: Using Codewind remotely
</a>
<a href="#connecting_your_ide_to_remote_codewind" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
Connecting your IDE to remote Codewind
<span class="submenu-icon"></span>
</a>
<!-- 3d level - eclipse -->
<div id="connecting_your_ide_to_remote_codewind" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="remotedeploy-vscode.html"
class="bg-light list-group-item list-group-item-action">
Connecting VS Code to remote Codewind
</a>
<a href="remotedeploy-eclipse.html"
class="bg-light list-group-item list-group-item-action">
Connecting Eclipse to remote Codewind
</a>
</div>
<a href="remote-setupregistries.html"
class="bg-light list-group-item list-group-item-action">
Adding an image registry in remote Codewind
</a>
<a href="remotedeploy-projects-vscode.html"
class="bg-light list-group-item list-group-item-action">
Creating and importing projects
</a>
</div>
<a href="workingwithtemplates.html"
class="bg-light list-group-item list-group-item-action">
Working with templates
</a>
<a href="#developing_projects" data-url="" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Developing projects</span>
<span class="submenu-icon"></span>
</div>
</a>
<div id="developing_projects" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="checkingstatuses.html"
class="bg-light list-group-item list-group-item-action">
Understanding application and build statuses
</a>
<a href="importing-existing-projects.html"
class="bg-light list-group-item list-group-item-action">
Importing existing projects
</a>
<a href="project-actions.html"
class="bg-light list-group-item list-group-item-action">
Project actions
</a>
<a href="project-settings.html"
class="bg-light list-group-item list-group-item-action">
Project settings
</a>
<a href="referencing-files.html"
class="bg-light list-group-item list-group-item-action">
Referencing files external to a project
</a>
<a href="private-registries.html"
class="bg-light list-group-item list-group-item-action">
Developing with packages from private registries and repositories
</a>
<a href="offline-codewind.html"
class="bg-light list-group-item list-group-item-action">
Using Codewind offline
</a>
<a href="debugging.html"
class="bg-light list-group-item list-group-item-action">
Debugging in Codewind
</a>
</div>
<a href="#performance_monitoring" data-url="" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Performance monitoring</span>
<span class="submenu-icon"></span>
</div>
</a>
<div id="performance_monitoring" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="metrics-dashboard.html"
class="bg-light list-group-item list-group-item-action">
Understanding the Metrics Dashboard
</a>
<a href="performance.html"
class="bg-light list-group-item list-group-item-action">
Monitoring applications with the Performance Dashboard
</a>
</div>
<a href="#openapi_tools" data-url="" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">OpenAPI Tools</span>
<span class="submenu-icon"></span>
</div>
</a>
<div id="openapi_tools" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="open-api-tools-for-vscode.html"
class="bg-light list-group-item list-group-item-action">
Codewind OpenAPI Tools for VS Code
</a>
<a href="open-api-tools-for-eclipse.html"
class="bg-light list-group-item list-group-item-action">
Codewind OpenAPI Tools for Eclipse
</a>
</div>
<a href="troubleshooting.html"
class="bg-light list-group-item list-group-item-action">
Troubleshooting
</a>
</ul>
<!-- List Group END-->
</div>
<!-- sidebar-container END -->
<!-- MAIN -->
<div id="content-container">
<div class="py-5 px-5">
<div class="cw-docs-spacer"></div>
<div role="main"><h1 id="deploying-codewind-remotely">Deploying Codewind remotely</h1>
<p>Codewind can be used in one of three ways - locally, <a href="./che-installinfo.html">hosted</a> as an application on a cloud, or remotely. By deploying Codewind remotely, you can develop your code locally, but build and run your application in the cloud. Remote use of Codewind frees up desktop resources, using the cloud’s resources to build and run applications.</p>
<p>To learn how to use Codewind once it has been deployed remotely, see <a href="remote-codewind-overview.html">Using Codewind remotely</a>.</p>
<h2 id="what-you-will-learn">What you will learn</h2>
<p>You will learn how to deploy Codewind to be used remotely.</p>
<p>After you install your local IDE and configure Codewind for local use, you will:</p>
<ol>
<li>Install the Codewind operator in your cloud.</li>
<li>Deploy your Codewind instances.</li>
</ol>
<p>Finally, you will learn how to remove a remote deployment of Codewind.</p>
<h2 id="prerequisites">Prerequisites</h2>
<p>Before deploying Codewind to the cloud, you must:</p>
<ol>
<li>
<p><strong>Install your preferred IDE on your local machine.</strong> For more information about installing Eclipse, see <a href="eclipse-getting-started.html">Getting started with Codewind for Eclipse</a>, or for more information about installing VS Code, see <a href="vsc-getting-started.html">Getting started with Codewind for VS Code</a>.</p>
</li>
<li>
<p><strong>Have an active Kubernetes context and log in to the cluster.</strong> Codewind can run in OpenShift 3.11, OpenShift 4.3, OpenShift in IBM Public Cloud, standalone Kubernetes, and Kubernetes in Docker.</p>
</li>
<li>
<p><strong>For Linux desktop, ensure your workstation is set up to use a Keyring.</strong> An example of a Keyring on Linux is Secret Service.</p>
</li>
<li>
<p><strong>Have a Git command line client installed.</strong> To download the latest Git command line client, see <a href="https://git-scm.com/download">https://git-scm.com/download</a>.</p>
</li>
</ol>
<h2 id="1-clone-the-codewind-operator-repository">1. Clone the Codewind operator repository</h2>
<p>The Codewind operator helps with the deployment of Codewind instances in an Openshift or Kubernetes cluster. Installing the Codewind operator is usually performed by your system administrator.</p>
<p>Clone the Codewind operator repository, for example:</p>
<p><code class="highlighter-rouge">$ git clone https://github.com/eclipse/codewind-operator -b 0.11.0</code></p>
<p>For more detailed information about the Codewind operator and the install process, see the <a href="https://github.com/eclipse/codewind-operator/blob/master/README.md">Codewind operator readme</a>.</p>
<h2 id="2-install-the-operator-into-your-cluster-and-deploy-keycloak">2. Install the operator into your cluster and deploy Keycloak</h2>
<p>Use the <code class="highlighter-rouge">install.sh</code> script located in your cloned Codewind operator repository <code class="highlighter-rouge">deploy</code> folder to install the operator into your cluster and deploy Keycloak, for example:</p>
<p><code class="highlighter-rouge">$ install.sh operator -i &lt;ingress_domain&gt;</code></p>
<p>Add the option <code class="highlighter-rouge">-o</code> flag if you are installing into an OpenShift 3.11 cluster, for example:</p>
<p><code class="highlighter-rouge">$ install.sh operator -i -o &lt;ingress_domain&gt;</code></p>
<p>The script installs the operator into your cluster, deploys Keycloak, and returns the Keycloak <strong>Access URL</strong>.</p>
<p><strong>Note:</strong> When installing on Windows, the script executes and then closes the Git Bash popup. To retrieve the Access URL for Keycloak, enter the following command:</p>
<p><code class="highlighter-rouge">$ kubectl get keycloak -n codewind</code></p>
<p>The command returns the following example output:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>NAME NAMESPACE AGE ACCESS
devex001 codewind 122m https://codewind-keycloak-devex001.&lt;ingress-domain&gt;
</code></pre></div></div>
<h2 id="3-add-a-new-user-to-keycloak">3. Add a new user to Keycloak</h2>
<p>1. Copy the <strong>Access URL</strong> returned in the previous step and paste it into a browser.</p>
<p>2. Ensure that the Realm is set to <code class="highlighter-rouge">Codewind</code> by clicking on the dropdown arrow on the page. Select <strong>Codewind</strong> if necessary, then:</p>
<ul>
<li>Click <strong>Users</strong>.</li>
<li>Click <strong>Add user</strong>.</li>
<li>Complete the <strong>username</strong> field.</li>
<li>Complete the <strong>email</strong>, <strong>Firstname</strong>, and <strong>Lastname</strong> fields as required.</li>
<li>Ensure <strong>user enabled</strong> is <strong>On</strong>.</li>
<li>Click <strong>Save</strong>.</li>
</ul>
<p>3. Assign an initial password to the user account by clicking <strong>Credentials</strong> and then add the initial password.</p>
<p>4. The field <strong>Temporary = On</strong> requires users to change their passwords during first connection. Set <strong>Temporary = Off</strong> makes this password valid for continuous use and not require changing on first connect.</p>
<p>5. Click <strong>Set Password</strong> to save changes. Log out of the Keycloak admin page.</p>
<h2 id="4-deploy-a-codewind-instance">4. Deploy a Codewind instance</h2>
<p>Use the <code class="highlighter-rouge">install.sh</code> script in the Codewind operator repository to deploy a Codewind instance. Enter:</p>
<p><code class="highlighter-rouge">$ install.sh codewind -n &lt;instanceName&gt; -u &lt;registeredUsername&gt;</code></p>
<p>Where:</p>
<ul>
<li><code class="highlighter-rouge">instanceName</code> is the unique name you specify for this Codewind instance.</li>
<li><code class="highlighter-rouge">registeredUsername</code> is the name of the user added in <a href="#3-add-a-new-user-to-keycloak">Step 3</a>.</li>
</ul>
<p>Your Codewind instance is deployed. Access it by copying and pasting the <strong>Access URL</strong> returned by the script into a browser.</p>
<p><strong>Note:</strong> When installing on Windows, the script executes and then closes the Git Bash popup. To retrieve the Access URLs for Codewind, enter the following command:</p>
<p><code class="highlighter-rouge">$ kubectl get codewind -n codewind</code></p>
<p>This command returns, for example:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>NAME USERNAME NAMESPACE AGE KEYCLOAK REGISTRATION ACCESSURL
devex001 jane codewind 119m devex001 Complete https://codewind-gatekeeper-devex001.&lt;ingress-domain&gt;
</code></pre></div></div>
<h2 id="5-removing-a-codewind-instance">5. Removing a Codewind instance</h2>
<p>To remove a Codewind instance, see <a href="https://github.com/eclipse/codewind-operator/blob/master/README.md#removing-a-codewind-instance">Removing a Codewind instance</a> in the codewind-operator readme.</p>
<h2 id="next-steps">Next steps</h2>
<p>You have now finished installing the Codewind operator, and you have deployed a Codewind instance.</p>
<p>In the next topic, you will learn how to <a href="./remote-codewind-overview.html">use Codewind remotely</a>.</p>
</div>
</div>
<div class="py-5 px-5 text-right">
Last update: Apr 15, 2020
</div>
</div>
</div>
<!-- footer row -->
<footer>
<div id="footer-div-mobile">
<div class="row">
<div class="col-sm-12 text-center">
<span>Useful Links:</span>
<br/><br/>
<a class="cw-footer-links" href="http://www.eclipse.org">Eclipse Foundation</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/termsofuse.php">Website Terms of Use</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal">Legal</a><br/>
</div>
</div>
<div class="cw_footer_display_flex cw-footer-same-height cw-footer-center">
<div class="cw_footer_display_icons row">
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="mailto:codewind-dev@eclipse.org"><img alt="Send us an email" title="Send us an email" src="images/footer/email-icon.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://twitter.com/EclipseCodewind"><img alt="Codewind Twitter" title="Codewind Twitter" src="images/footer/twitter-logo.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://github.com/eclipse/codewind"><img alt="Codewind Github" title="Codewind Github" src="images/footer/github-logo.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
<div class=" cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img alt="Codewind Mattermost" title="Codewind Mattermost" src="images/footer/mattermost-logo.png" class="cw-logo-mm" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ"><img alt="Codewind YouTube" title="Codewind YouTube" src="images/footer/youtube-logo-dark.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center col-md-3 col-sm-6 col-xs-12">
<div>
<div>
<a href="http://www.eclipse.org"><img class="cw-logo-eclipse-mobile" alt="Eclipse" title="Eclipse" src="images/footer/eclipse.svg"/></a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row cw-footer-desktop" id="footer-div">
<div class="cw-footer-left">
<div class="px-5 cw-font-12>
<span class="cw-font-14">Useful Links:</span>
<br/><br/>
<a class="cw-footer-links" href="http://www.eclipse.org">Eclipse Foundation</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/termsofuse.php">Website Terms of Use</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a><br/>
<a class="cw-footer-links" href="http://www.eclipse.org/legal">Legal</a><br/>
</div>
</div>
<div class="cw-footer-border-right"></div>
<div class="cw_footer_display_flex cw-footer-same-height cw-footer-center">
<div class="cw_footer_display_icons">
<div class="cw-footer-col text-center">
<div>
<div>
<a href="mailto:codewind-dev@eclipse.org"><img alt="Send us an email" title="Send us an email" src="images/footer/email-icon.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://twitter.com/EclipseCodewind"><img alt="Codewind Twitter" title="Codewind Twitter" src="images/footer/twitter-logo.svg" class="cw-logo" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://github.com/eclipse/codewind"><img alt="Codewind Github" title="Codewind Github" src="images/footer/github-logo.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
<div class=" cw-footer-col text-center">
<div class="cw-logo-mm" >
<div class="cw-logo-mm" >
<a href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img alt="Codewind Mattermost" title="Codewind Mattermost" src="images/footer/mattermost-logo.png" class="cw-logo-mm" /></a>
</div>
</div>
</div>
<div class="cw-footer-col text-center">
<div>
<div>
<a href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ"><img alt="Codewind YouTube" title="Codewind YouTube" src="images/footer/youtube-logo-dark.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
</div>
</div>
<div class="cw-footer-border-right"></div>
<div class="cw-footer-right cw-footer-same-height cw-footer-vcenter">
<div class="cw-footer-eclipse-img cw-footer-same-height px-5 ">
<a href="http://www.eclipse.org">
<img alt="Eclipse" title="Eclipse" src="images/footer/eclipse.svg"/>
</a>
</div>
</div>
</div>
</footer>
<!-- footer row END -->
<!-- Main Col END -->
<!-- Jquery -->
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous">
</script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous">
</script>
<!-- Font Awesome JS -->
<script defer src="https://use.fontawesome.com/releases/v5.0.13/js/solid.js"
integrity="sha384-tzzSw1/Vo+0N5UhStP3bvwWPq+uvzCMfrN1fEFe+xBmv1C/AtVX5K0uZtmcHitFZ" crossorigin="anonymous">
</script>
<script defer src="https://use.fontawesome.com/releases/v5.0.13/js/fontawesome.js"
integrity="sha384-6OIrr52G08NpOFSZdxxz1xdNSndlD4vdcf/q2myIUVO0VsqaGHJsB0RaBE01VTOY" crossorigin="anonymous">
</script>
<script src="js/jquery.matchHeight-min.js"></script>
<script src="js/index.js"></script>
<script src="js/docs.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/prism.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/components/prism-docker.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.17.1/components/prism-json.min.js"></script>
</div>
</body>
</html>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.2.0/anchor.min.js"></script>
<script>
$(document).ready(function(){
anchors.options.placement = 'left';
anchors.add('h1');
anchors.add('h2');
anchors.add('h3');
anchors.add('h4');
});
</script>