blob: 63eac52d8a31e88b498d0b47eb9820b4fd0fe279 [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>Adding the OpenShift internal registry with Codewind | 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="Adding the OpenShift internal registry with Codewind">
<meta name="keywords" content="OpenShift, registry, Codewind, Che, Docker, OKD, cluster, project, push"/>
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="images/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">
</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-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">
<a href="gettingstarted.html" class="btn cw-docs-button">
<svg width="16px" height="21px" viewBox="0 0 16 21" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Getting-started" transform="translate(-795.000000, -55.000000)" fill="#0083CA" fill-rule="nonzero">
<g id="button" transform="translate(776.000000, 43.000000)">
<g id="Group" transform="translate(19.000000, 12.000000)">
<path d="M0.705882353,3.93153323e-06 C0.308729412,0.00284370282 0.00242352941,0.403425659 0,0.715912659 L0,20.2840893 C4.70588235e-05,20.6589153 0.336305882,20.9999503 0.705882353,20.999998 L15.2941172,20.999998 C15.6636936,20.9999503 15.9999525,20.6589153 15.9999995,20.2840893 L15.9999995,5.01136502 C15.9999995,4.82377069 15.9246819,4.6371476 15.7941172,4.50426301 L11.5588231,0.208810644 C11.4277878,0.0763961655 11.2437878,-0.000447090965 11.0588231,3.93153326e-06 L0.705882353,3.93153323e-06 Z M1.41176471,1.43182139 L10.3529407,1.43182139 L10.3529407,5.01136502 C10.3529878,5.38620529 10.6892466,5.72722602 11.0588231,5.72727375 L14.5882348,5.72727375 L14.5882348,19.5681806 L1.41176471,19.5681806 L1.41176471,1.43182139 Z M11.7647054,2.43856803 L13.595576,4.2954563 L11.7647054,4.2954563 L11.7647054,2.43856803 Z M3.29411765,8.11363618 C2.90428235,8.11363618 2.58823529,8.43414851 2.58823529,8.8295449 C2.58823529,9.22491743 2.90428235,9.54545363 3.29411765,9.54545363 L12.7058819,9.54545363 C13.0957407,9.54545363 13.4117642,9.22491743 13.4117642,8.8295449 C13.4117642,8.43414851 13.0957407,8.11363618 12.7058819,8.11363618 L3.29411765,8.11363618 Z M3.29411765,11.9318208 C2.90428235,11.9318208 2.58823529,12.2523332 2.58823529,12.6477296 C2.58823529,13.0431021 2.90428235,13.3636383 3.29411765,13.3636383 L12.7058819,13.3636383 C13.0957407,13.3636383 13.4117642,13.0431021 13.4117642,12.6477296 C13.4117642,12.2523332 13.0957407,11.9318208 12.7058819,11.9318208 L3.29411765,11.9318208 Z M3.29411765,15.7500007 C2.90428235,15.7500007 2.58823529,16.070513 2.58823529,16.4659094 C2.58823529,16.861282 2.90428235,17.1818182 3.29411765,17.1818182 L12.7058819,17.1818182 C13.0957407,17.1818182 13.4117642,16.861282 13.4117642,16.4659094 C13.4117642,16.070513 13.0957407,15.7500007 12.7058819,15.7500007 L3.29411765,15.7500007 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>
&nbsp;
<span>Docs & Guides</span></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="twitter icon" title="twitter icon" src="images/banner/twitter.svg"/></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="youtube icon" title="youtube icon" src="images/banner/youtube.svg"/></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="mattermost icon" title="mattermost icon" src="images/banner/mattermost.svg"/></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="github icon" title="github icon" data-toggle="tooltip" data-placement="top" id="cw_github_stars" title="..." src="images/banner/github.svg"/></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">
<!-- Hard coded TOC -->
<!-- Start single page getting started -->
<a href="gettingstarted.html"
class="bg-light list-group-item list-group-item-action">
Getting started
</a>
<!-- End single page getting started -->
<!--
<a href="#install_on_cloud" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
Getting started
<span class="submenu-icon"></span>
</a>
<div id="install_on_cloud" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="mdteclipsegettingstarted.html"
class="bg-light list-group-item list-group-item-action">
Installing in Eclipse
</a>
<a href="mdt-vsc-getting-started.html"
class="bg-light list-group-item list-group-item-action">
Installing in VS Code
</a>
<a href="installoncloud.html"
class="bg-light list-group-item list-group-item-action">
Installing in Che for Cloud deployments
</a>
<a href="importedprojects.html"
class="bg-light list-group-item list-group-item-action">
Importing projects
</a>
</div>
-->
<a href="#dev_with_codewind" 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 with Codewind</span>
<span class="submenu-icon"></span>
</div>
</a>
<div id="dev_with_codewind" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="#codewind_for_eclipse" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
Codewind for Eclipse
<span class="submenu-icon"></span>
</a>
<!-- 3d level - eclipse -->
<div id="codewind_for_eclipse" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="mdteclipseoverview.html"
class="bg-light list-group-item list-group-item-action">
Overview
</a>
<a href="mdt-eclipse-installinfo.html"
class="bg-light list-group-item list-group-item-action">
Installing Codewind for Eclipse
</a>
<a href="mdteclipseusingadifferenttemplate.html"
class="bg-light list-group-item list-group-item-action">
Using a template repository of your own
</a>
<a href="mdteclipseimportedprojects.html"
class="bg-light list-group-item list-group-item-action">
Adding existing projects
</a>
<a href="mdteclipsemanagingprojects.html"
class="bg-light list-group-item list-group-item-action">
Managing Codewind projects
</a>
<a href="mdteclipsebuildproject.html"
class="bg-light list-group-item list-group-item-action">
Building Codewind projects
</a>
<a href="mdteclipsedebugproject.html"
class="bg-light list-group-item list-group-item-action">
Debugging Codewind projects
</a>
<a href="mdteclipsetroubleshooting.html"
class="bg-light list-group-item list-group-item-action">
Troubleshooting Codewind for Eclipse
</a>
<a href="mdteclipseuninstall.html"
class="bg-light list-group-item list-group-item-action">
Uninstalling Codewind for Eclipse
</a>
</div>
<!-- end 3d level eclipse -->
<!-- vs code -->
<a href="#codewind_for_vscode" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
Codewind for VS Code
<span class="submenu-icon"></span>
</a>
<!-- 3d level - vscode -->
<div id="codewind_for_vscode" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="mdt-vsc-overview.html"
class="bg-light list-group-item list-group-item-action">
Overview
</a>
<a href="mdt-vsc-installinfo.html"
class="bg-light list-group-item list-group-item-action">
Installing Codewind for VS Code
</a>
<a href="mdt-vsc-usingadifferenttemplate.html"
class="bg-light list-group-item list-group-item-action">
Using a template repository of your own
</a>
<a href="mdt-vsc-importedprojects.html"
class="bg-light list-group-item list-group-item-action">
Adding existing projects
</a>
<a href="mdt-vsc-tutorial.html"
class="bg-light list-group-item list-group-item-action">
Tutorial
</a>
<a href="mdt-vsc-commands-overview.html"
class="bg-light list-group-item list-group-item-action">
Commands overview
</a>
<a href="mdt-vsc-commands-project.html"
class="bg-light list-group-item list-group-item-action">
Project commands
</a>
<a href="mdt-vsc-commands-restart-and-debug.html"
class="bg-light list-group-item list-group-item-action">
Restart and debug commands
</a>
<a href="mdt-vsc-troubleshooting.html"
class="bg-light list-group-item list-group-item-action">
Troubleshooting
</a>
<a href="mdt-vsc-uninstall.html"
class="bg-light list-group-item list-group-item-action">
Uninstalling
</a>
</div>
<!-- end vscode -->
<!-- che -->
<a href="#codewind_for_che" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
Codewind for Eclipse Che
<span class="submenu-icon"></span>
</a>
<!-- 3d level - che -->
<div id="codewind_for_che" class="cw-sidebar-div cw-sidebar-submenu-submenu collapse" style="">
<a href="installoncloud.html"
class="bg-light list-group-item list-group-item-action">
Overview
</a>
<a href="dockerregistry.html"
class="bg-light list-group-item list-group-item-action">
Docker Registry Guidance
</a>
<a href="openshiftregistry.html"
class="cw-current-page bg-light list-group-item list-group-item-action">
Using the OpenShift Registry
</a>
<a href="supportingmultipleusers.html"
class="bg-light list-group-item list-group-item-action">
Support for multiple users
</a>
<a href="viewkibanalogs.html"
class="bg-light list-group-item list-group-item-action">
Installing Kibana and filtering logs in IBM Cloud Private
</a>
</div>
<!-- end che -->
</div>
<a href="guide_performance.html"
class="bg-light list-group-item list-group-item-action">
Performance monitoring
</a>
<a href="codewindandtektonpipelines.html"
class="bg-light list-group-item list-group-item-action">
Codewind and Tekton pipelines
</a>
<a href="#openapi_tools" 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 flex-column align-items-start">
Troubleshooting
</a>
<!-- END hard coded TOC -->
</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="adding-the-openshift-internal-registry-with-codewind">Adding the OpenShift internal registry with Codewind</h1>
<h2 id="prerequisites">Prerequisites</h2>
<ol>
<li>Install an OKD or OpenShift cluster with the internal Docker registry.</li>
<li>Be able to create service accounts on the cluster.</li>
<li>Be able to assign the <code class="highlighter-rouge">system:image-builder</code> role to service accounts.</li>
</ol>
<h3 id="setting-up-a-service-account">Setting up a service account</h3>
<p>Some of the following instructions were adapted from <a href="https://blog.openshift.com/remotely-push-pull-container-images-openshift/">Remotely Push and Pull Container Images to OpenShift</a>.</p>
<ol>
<li>Determine which project to push images to.
<ul>
<li>If you’re creating a new project, run the <code class="highlighter-rouge">oc new-project &lt;project&gt;</code> command.</li>
</ul>
</li>
<li>Create a service account in the project.
<ul>
<li>Run: <code class="highlighter-rouge">oc create serviceaccount &lt;serviceaccount&gt;</code></li>
<li>Example: <code class="highlighter-rouge">oc create serviceaccount pusher</code></li>
</ul>
</li>
<li>Grant push access to the registry to the new service account.
<ul>
<li>Run: <code class="highlighter-rouge">oc policy add-role-to-user system:image-builder system:serviceaccount:&lt;project&gt;:&lt;serviceaccount&gt;</code></li>
<li>Example: <code class="highlighter-rouge">oc policy add-role-to-user system:image-builder system:serviceaccount:pushed:pusher</code></li>
</ul>
</li>
<li>Retrieve the secret containing the service account token.
<ul>
<li>Run: <code class="highlighter-rouge">oc describe sa &lt;serviceaccount&gt;</code></li>
<li>Example output:
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> Name: pusher
Namespace: pushed
Labels: &lt;none&gt;
Annotations: &lt;none&gt;
Image pull secrets: pusher-dockercfg-6lkbp
Mountable secrets: pusher-token-zfqbv
pusher-dockercfg-6lkbp
Tokens: pusher-token-hhd2g
pusher-token-zfqbv
Events: &lt;none&gt;
</code></pre></div> </div>
</li>
<li>In this example, <code class="highlighter-rouge">pusher-token-hhd2g</code> and <code class="highlighter-rouge">pusher-token-zfqbv</code> are the secrets containing the service account token.</li>
</ul>
</li>
<li>Select one of the token secrets and retrieve the token from it.
<ul>
<li>Run: <code class="highlighter-rouge">oc describe secret &lt;secret&gt;</code></li>
<li>Example output:
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Name: pusher-token-hhd2g
Namespace: pushed
Labels: &lt;none&gt;
Annotations: kubernetes.io/created-by=openshift.io/create-dockercfg-secrets
kubernetes.io/service-account.name=pusher
kubernetes.io/service-account.uid=aaf3102c-c4f6-11e9-b12c-00000a1f0ade
Type: kubernetes.io/service-account-token
Data
====
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJwdXNoZWQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoicHVzaGVyLXRva2VuLWhoZDJnIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6InB1c2hlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImFhZjMxMDJjLWM0ZjYtMTFlOS1iMTJjLTAwMDAwYTFmMGFkZSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpwdXNoZWQ6cHVzaGVyIn0.nO1QMQixfCLNeJXJnn5O--7WFjaSJCUB2I3Exb4dSKuN93BKJOp14XlZk_w_zXrOk8CtUA-8J6t3FHtdLvoXxWgxeq7GRZLU89HRX8j-eNfQzQHxhhh1-uLgFiwySQu32vpSCdPQRZQVmHHk3I0qpebp4m8IVbDyrVd1jPNhznNdmKj5FGwBYxz1SySsoAcotvXjVdahe_3KsCxkYq5ZDeAmzdJWnZOBJpXKojowS_J6cd-2HzWu6aq1QSFmRi8b31Yh9mRBo5NHF6hNXsafQzXB094ZiGjbsNwKjD_lL4qugrDw5OXjRdP-IHYYQ-zRFyQKWuTji5JtyE4MK7B59w
ca.crt: 1070 bytes
namespace: 6 bytes
service-ca.crt: 2186 bytes
</code></pre></div> </div>
</li>
</ul>
</li>
<li>Copy the value from the <strong>token</strong> field.</li>
</ol>
<h3 id="adding-the-openshift-registry-in-che">Adding the OpenShift registry in Che</h3>
<ol>
<li>Open the Che dashboard and select the <strong>Administration</strong> tab.
<img src="https://user-images.githubusercontent.com/6880023/63531743-2d633580-c4d7-11e9-9960-ae5470398a3f.png" alt="Screen Shot 2019-08-22 at 12 18 51 PM" /></li>
<li>Click the <strong>Add Registry</strong> button.</li>
<li>Enter the following information:
<ul>
<li>Enter <code class="highlighter-rouge">docker-registry.default.svc:5000</code> as the address.</li>
<li>Enter the service account name as the username.</li>
<li>Enter the token retrieved from the service account token secret as the password.
<img src="https://user-images.githubusercontent.com/6880023/63531755-32c08000-c4d7-11e9-8fae-74799b50d549.png" alt="Screen Shot 2019-08-22 at 12 19 38 PM" /></li>
</ul>
</li>
<li>Click <strong>Add</strong>.
<img src="https://user-images.githubusercontent.com/6880023/63531760-348a4380-c4d7-11e9-8fa8-5cef7fbdcac0.png" alt="Screen Shot 2019-08-22 at 12 19 41 PM" /></li>
</ol>
<h3 id="adding-the-openshift-registry-in-codewind">Adding the OpenShift registry in Codewind</h3>
<p>After the internal Docker registry credentials are added to Che as a Docker registry, you can use the credentials in Codewind.</p>
<ol>
<li>Create or open a Codewind workspace.
<ul>
<li><strong>Note:</strong> If you’re opening an existing workspace, you must stop and start the workspace before the registry credentials take effect.</li>
</ul>
</li>
<li>Run the <code class="highlighter-rouge">Codewind: Set Deployment Registry</code> command.
<img src="https://user-images.githubusercontent.com/6880023/63533949-e592dd00-c4db-11e9-99d6-906a8c5edf21.png" alt="Screen Shot 2019-08-22 at 12 53 19 PM" /></li>
<li>Enter <code class="highlighter-rouge">docker-registry.default.svc:5000/&lt;project&gt;</code> as the deployment registry, where <code class="highlighter-rouge">&lt;project&gt;</code> is the OpenShift project that you created the service account in.
<ul>
<li>Example: <code class="highlighter-rouge">docker-registry.default.svc:5000/pushed</code>
<img src="https://user-images.githubusercontent.com/6880023/63534021-1c68f300-c4dc-11e9-937f-a3903e12456d.png" alt="Screen Shot 2019-08-22 at 12 53 24 PM" /></li>
</ul>
</li>
<li>Click <strong>enter</strong>.</li>
</ol>
</div>
</div>
</div>
</div>
<!-- footer row -->
<footer>
<div class="row" id="footer-div-mobile">
<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="email icon" title="email icon" src="images/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="twitter icon" title="twitter icon" src="images/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="github icon" title="github icon" src="images/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="mattermose icon" title="mattermose icon" src="images/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="youtube icon" title="youtube icon" src="images/youtube-logo-dark.svg"
class="cw-logo" /></a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row" 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 cw-footer-desktop">
<div class="cw_footer_display_icons">
<div class="cw-footer-col text-center">
<div>
<div>
<a href="mailto:codewind-dev@eclipse.org"><img alt="email icon" title="email icon" src="images/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="twitter icon" title="twitter icon" src="images/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="github icon" title="github icon" src="images/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="mattermost icon" title="mattermost icon" src="images/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="youtube icon" title="youtube icon" src="images/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 icon" title="eclipse icon" src="images/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>
</div>
</body>
</html>