├── .factory.json ├── .github └── CODEOWNERS ├── .gitignore ├── LICENSE ├── README.md ├── pom.xml ├── src └── main │ ├── _config.yml │ ├── _data │ ├── docs.yml │ ├── env.yml │ ├── links.yml │ └── tutorials.yml │ ├── _docs │ ├── admin-guide │ │ ├── admin-cli.md │ │ ├── admin-configuration.md │ │ ├── admin-installation.md │ │ ├── admin-ldap.md │ │ ├── admin-managing.md │ │ ├── admin-monitoring.md │ │ ├── admin-organizations.md │ │ └── admin-runbook.md │ ├── assets │ │ ├── css │ │ │ └── screen.scss │ │ ├── fonts │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── imgs │ │ │ └── codenvy │ │ │ │ ├── 16x16.png │ │ │ │ ├── 32x32.png │ │ │ │ ├── AIO.png │ │ │ │ ├── Codenvywordmarkwhite.svg │ │ │ │ ├── ScreenShot2016-08-02at8_18_23AM.png │ │ │ │ ├── VSTSextension-DevelopandReviewinIDE.png │ │ │ │ ├── billing-access.png │ │ │ │ ├── billing-get-ram.png │ │ │ │ ├── billing-info-popup.png │ │ │ │ ├── billing-information.png │ │ │ │ ├── billing-invoices.png │ │ │ │ ├── billing-summary.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── favicon.svg │ │ │ │ ├── get-more-idle-timeout-button.png │ │ │ │ ├── git-menu.png │ │ │ │ ├── github-button.png │ │ │ │ ├── jira-github-jenkins-integration.png │ │ │ │ ├── logo-codenvy-white.png │ │ │ │ ├── manifest.json │ │ │ │ ├── master_plus_node.png │ │ │ │ ├── microsoft-vsts-integration.png │ │ │ │ ├── multi-machine-ide.png │ │ │ │ ├── organization-create-invite-members.png │ │ │ │ ├── organization-create-workspace.png │ │ │ │ ├── organization-create.png │ │ │ │ ├── organization-delete.png │ │ │ │ ├── organization-edit-role-action.png │ │ │ │ ├── organization-edit-role.png │ │ │ │ ├── organization-list.png │ │ │ │ ├── organization-list2.png │ │ │ │ ├── organization-menu.png │ │ │ │ ├── organization-multiple-invites.png │ │ │ │ ├── organization-remove-members.png │ │ │ │ ├── organization-remove-single-member.png │ │ │ │ ├── organization-settings.png │ │ │ │ ├── plugins.png │ │ │ │ ├── postbuild-email-notification.png │ │ │ │ ├── postbuild-script.png │ │ │ │ ├── sub-organization-add-members.png │ │ │ │ ├── svn-menu.png │ │ │ │ ├── team-caps-limits.png │ │ │ │ ├── team-create-invite-members.png │ │ │ │ ├── team-create-workspace-select-team.png │ │ │ │ ├── team-create.png │ │ │ │ ├── team-delete.png │ │ │ │ ├── team-edit-role-action.png │ │ │ │ ├── team-edit-role.png │ │ │ │ ├── team-invited-users.png │ │ │ │ ├── team-leave.png │ │ │ │ ├── team-list-workspaces.png │ │ │ │ ├── team-list.png │ │ │ │ ├── team-manage-members.png │ │ │ │ ├── team-menu.png │ │ │ │ ├── team-multiple-invites.png │ │ │ │ ├── team-remove-members.png │ │ │ │ ├── team-remove-single-member.png │ │ │ │ ├── team-remove-workspaces.png │ │ │ │ ├── team-settings.png │ │ │ │ ├── team-stop-workspace.png │ │ │ │ ├── team-workspace-share.png │ │ │ │ ├── team-workspaces.png │ │ │ │ ├── user-management-add-user-popup.png │ │ │ │ ├── user-management-add-user.png │ │ │ │ ├── user-management-delete-user-popup.png │ │ │ │ ├── user-management-menu.png │ │ │ │ ├── user-management-user-list.png │ │ │ │ ├── user-management-user-organizations.png │ │ │ │ ├── user-management-user-profile.png │ │ │ │ └── webhook-vcs-integration-flow.png │ │ └── scripts │ │ │ └── jquery-1.8.1.min.js │ ├── getting-started.md │ ├── integration-guide │ │ ├── html-factory.jelly │ │ ├── integration-continuous-integration.md │ │ └── integration-issue-management.md │ ├── tutorials │ │ ├── tutorial-one-click-docker-environments.md │ │ ├── tutorial-teams-and-collaboration.md │ │ └── tutorial-workspace-administration.md │ ├── user-guide │ │ ├── user-import.md │ │ ├── user-permissions.md │ │ ├── user-sharing-permissions.md │ │ ├── user-subscriptions.md │ │ ├── user-teams.md │ │ └── user-using-desktop-ides.md │ └── white-labels │ │ ├── labels-custom-assemblies.md │ │ └── labels-introduction-white-labels.md │ ├── _includes │ ├── analytics.html │ ├── anchor_links.html │ ├── base.html │ ├── default.html │ ├── docs_contents.html │ ├── docs_contents_mobile.html │ ├── docs_option.html │ ├── docs_ul.html │ ├── error.html │ ├── footer.html │ ├── header-github-io.html │ ├── header.html │ ├── news.html │ ├── news_contents.html │ ├── news_contents_mobile.html │ ├── news_item.html │ ├── page.html │ ├── primary-nav-items.html │ ├── section_nav.html │ └── top.html │ ├── _layouts │ ├── default.html │ ├── docs.html │ ├── error.html │ ├── github-io.html │ ├── news.html │ ├── news_item.html │ ├── page.html │ └── tutorials.html │ ├── _plugins │ └── links.rb │ ├── _sass │ ├── _animated.scss │ ├── _bordered-pulled.scss │ ├── _core.scss │ ├── _fixed-width.scss │ ├── _font-awesome.scss │ ├── _gridism.scss │ ├── _icons.scss │ ├── _larger.scss │ ├── _list.scss │ ├── _mixins.scss │ ├── _normalize.scss │ ├── _path.scss │ ├── _pygments.scss │ ├── _rotated-flipped.scss │ ├── _stacked.scss │ ├── _style.scss │ └── _variables.scss │ └── docs.sh └── zbx_Codenvy_templates.xml /.factory.json: -------------------------------------------------------------------------------- 1 | { 2 | "v": "4.0", 3 | "name": "che-codenvy-docs", 4 | "workspace": { 5 | "defaultEnv": "default", 6 | "environments": { 7 | "default": { 8 | "machines": { 9 | "dev-machine": { 10 | "attributes": { 11 | "memoryLimitBytes": "3221225472" 12 | }, 13 | "servers": {}, 14 | "agents": [ 15 | "org.eclipse.che.terminal", 16 | "org.eclipse.che.ws-agent", 17 | "org.eclipse.che.ssh" 18 | ] 19 | } 20 | }, 21 | "recipe": { 22 | "type": "compose", 23 | "content": "services:\n dev-machine:\n image: jdrummond/ubuntu_jekyll\n", 24 | "contentType": "application/x-yaml" 25 | } 26 | } 27 | }, 28 | "projects": [ 29 | { 30 | "links": [], 31 | "name": "che-docs", 32 | "attributes": {}, 33 | "type": "blank", 34 | "source": { 35 | "location": "https://github.com/eclipse/che-docs.git", 36 | "type": "git", 37 | "parameters": {} 38 | }, 39 | "path": "/che-docs", 40 | "description": "Che documentation generated via jekyll.", 41 | "problems": [], 42 | "mixins": [ 43 | "pullrequest" 44 | ] 45 | }, 46 | { 47 | "links": [], 48 | "name": "codenvy-docs", 49 | "attributes": {}, 50 | "type": "blank", 51 | "source": { 52 | "location": "https://github.com/codenvy/docs.git", 53 | "type": "git", 54 | "parameters": {} 55 | }, 56 | "path": "/codenvy-docs", 57 | "description": "Codenvy documentation generated via jekyll.", 58 | "problems": [], 59 | "mixins": [ 60 | "pullrequest" 61 | ] 62 | } 63 | ], 64 | "name": "che-codenvy-docs", 65 | "commands": [ 66 | { 67 | "commandLine": "mkdir -p /projects/che-docs/target; cd /projects/che-docs/target ; jekyll serve -s /projects/che-docs/src/main --force_polling --host $(/sbin/ifconfig eth1 | grep 'inet addr:' | cut -d: -f2)", 68 | "name": "Che Jekyll Serve Full", 69 | "attributes": { 70 | "previewUrl": "http://${server.port.4000}/docs/" 71 | }, 72 | "type": "custom" 73 | }, 74 | { 75 | "commandLine": "mkdir -p /projects/che-docs/target; cd /projects/che-docs/target ; jekyll serve -s /projects/che-docs/src/main --force_polling --incremental --host $(/sbin/ifconfig eth1 | grep 'inet addr:' | cut -d: -f2)", 76 | "name": "Che Jekyll Serve Incremental", 77 | "attributes": { 78 | "previewUrl": "http://${server.port.4000}/docs/" 79 | }, 80 | "type": "custom" 81 | }, 82 | { 83 | "commandLine": "while true; do unison -auto=true -log=false -retry 10 -silent=true -watch=true -force /projects/che-docs/src/main/_docs/ /projects/che-docs/src/main/_docs/ /projects/codenvy-docs/src/main/_docs/che/ > /dev/null 2>&1; unison -auto=true -log=false -retry 10 -silent=true -watch=true -ignore 'Path codenvy' -force /projects/che-docs/src/main/_docs/assets/imgs /projects/che-docs/src/main/_docs/assets/imgs /projects/codenvy-docs/src/main/_docs/assets/imgs> /dev/null 2>&1; echo 'Synced. Sleeping for 2 seconds.'; sleep 2;done;", 84 | "name": "Codenvy Unison OneWay", 85 | "attributes": { 86 | "previewUrl": "" 87 | }, 88 | "type": "custom" 89 | }, 90 | { 91 | "commandLine": "mkdir -p /projects/codenvy-docs/target/docs/che; sleep 2; jekyll serve -s /projects/codenvy-docs/src/main -d /projects/codenvy-docs/target/ --force_polling --incremental --port 8080 --host $(/sbin/ifconfig eth1 | grep 'inet addr:' | cut -d: -f2)", 92 | "name": "Codenvy Jekyll Serve Incremental", 93 | "attributes": { 94 | "previewUrl": "http://${server.port.8080}/docs/" 95 | }, 96 | "type": "custom" 97 | }, 98 | { 99 | "commandLine": "mkdir -p /projects/codenvy-docs/target/docs/che; sleep 2; jekyll serve -s /projects/codenvy-docs/src/main -d /projects/codenvy-docs/target/ --force_polling --port 8080 --host $(/sbin/ifconfig eth1 | grep 'inet addr:' | cut -d: -f2)", 100 | "name": "Codenvy Jekyll Serve Full", 101 | "attributes": { 102 | "previewUrl": "http://${/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2}/docs/" 103 | }, 104 | "type": "custom" 105 | }, 106 | { 107 | "commandLine": "sudo apt-get update && sudo apt-get install libcurl3 && sudo gem install html-proofer && mkdir -p /projects/link-checker && cd /projects/codenvy-docs/target/docs && (htmlproofer --assume-extension . &> /projects/link-checker/codenvy-docs-errors.log)", 108 | "name": "HTMLProofer Codenvy", 109 | "attributes": { 110 | "previewUrl": "" 111 | }, 112 | "type": "custom" 113 | }, 114 | { 115 | "commandLine": "sudo apt-get update && sudo apt-get install libcurl3 && sudo gem install html-proofer && mkdir -p /projects/link-checker && cd /projects/che-docs/target/_site/docs && (htmlproofer --assume-extension . &> /projects/link-checker/che-docs-errors.log)", 116 | "name": "HTMLProofer Che", 117 | "attributes": { 118 | "previewUrl": "" 119 | }, 120 | "type": "custom" 121 | } 122 | ], 123 | "links": [] 124 | }, 125 | "id": "49bxtfztv73y9fwm", 126 | "ide": { 127 | "onProjectsLoaded": { 128 | "actions": [ 129 | { 130 | "properties": { 131 | "name": "Codenvy Unison OneWay" 132 | }, 133 | "id": "runCommand" 134 | }, 135 | { 136 | "properties": { 137 | "name": "Codenvy Jekyll Serve Incremental" 138 | }, 139 | "id": "runCommand" 140 | }, 141 | { 142 | "properties": { 143 | "name": "Che Jekyll Serve Incremental" 144 | }, 145 | "id": "runCommand" 146 | } 147 | ] 148 | } 149 | } 150 | } -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Global Owners 2 | * @slemeur @bmicklea @eivantsov 3 | 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | _site/ 3 | *.swp 4 | pkg/ 5 | test/ 6 | .jekyll-metadata 7 | .sass-cache/ 8 | src/main/_docs/che 9 | src/main/_docs/assets/imgs/*.* 10 | 11 | # Idea # 12 | ################## 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Eclipse Public License - v 1.0 2 | 3 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC 4 | LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM 5 | CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 6 | 7 | 1. DEFINITIONS 8 | 9 | "Contribution" means: 10 | 11 | a) in the case of the initial Contributor, the initial code and documentation 12 | distributed under this Agreement, and 13 | b) in the case of each subsequent Contributor: 14 | i) changes to the Program, and 15 | ii) additions to the Program; 16 | 17 | where such changes and/or additions to the Program originate from and are 18 | distributed by that particular Contributor. A Contribution 'originates' 19 | from a Contributor if it was added to the Program by such Contributor 20 | itself or anyone acting on such Contributor's behalf. Contributions do not 21 | include additions to the Program which: (i) are separate modules of 22 | software distributed in conjunction with the Program under their own 23 | license agreement, and (ii) are not derivative works of the Program. 24 | 25 | "Contributor" means any person or entity that distributes the Program. 26 | 27 | "Licensed Patents" mean patent claims licensable by a Contributor which are 28 | necessarily infringed by the use or sale of its Contribution alone or when 29 | combined with the Program. 30 | 31 | "Program" means the Contributions distributed in accordance with this 32 | Agreement. 33 | 34 | "Recipient" means anyone who receives the Program under this Agreement, 35 | including all Contributors. 36 | 37 | 2. GRANT OF RIGHTS 38 | a) Subject to the terms of this Agreement, each Contributor hereby grants 39 | Recipient a non-exclusive, worldwide, royalty-free copyright license to 40 | reproduce, prepare derivative works of, publicly display, publicly 41 | perform, distribute and sublicense the Contribution of such Contributor, 42 | if any, and such derivative works, in source code and object code form. 43 | b) Subject to the terms of this Agreement, each Contributor hereby grants 44 | Recipient a non-exclusive, worldwide, royalty-free patent license under 45 | Licensed Patents to make, use, sell, offer to sell, import and otherwise 46 | transfer the Contribution of such Contributor, if any, in source code and 47 | object code form. This patent license shall apply to the combination of 48 | the Contribution and the Program if, at the time the Contribution is 49 | added by the Contributor, such addition of the Contribution causes such 50 | combination to be covered by the Licensed Patents. The patent license 51 | shall not apply to any other combinations which include the Contribution. 52 | No hardware per se is licensed hereunder. 53 | c) Recipient understands that although each Contributor grants the licenses 54 | to its Contributions set forth herein, no assurances are provided by any 55 | Contributor that the Program does not infringe the patent or other 56 | intellectual property rights of any other entity. Each Contributor 57 | disclaims any liability to Recipient for claims brought by any other 58 | entity based on infringement of intellectual property rights or 59 | otherwise. As a condition to exercising the rights and licenses granted 60 | hereunder, each Recipient hereby assumes sole responsibility to secure 61 | any other intellectual property rights needed, if any. For example, if a 62 | third party patent license is required to allow Recipient to distribute 63 | the Program, it is Recipient's responsibility to acquire that license 64 | before distributing the Program. 65 | d) Each Contributor represents that to its knowledge it has sufficient 66 | copyright rights in its Contribution, if any, to grant the copyright 67 | license set forth in this Agreement. 68 | 69 | 3. REQUIREMENTS 70 | 71 | A Contributor may choose to distribute the Program in object code form under 72 | its own license agreement, provided that: 73 | 74 | a) it complies with the terms and conditions of this Agreement; and 75 | b) its license agreement: 76 | i) effectively disclaims on behalf of all Contributors all warranties 77 | and conditions, express and implied, including warranties or 78 | conditions of title and non-infringement, and implied warranties or 79 | conditions of merchantability and fitness for a particular purpose; 80 | ii) effectively excludes on behalf of all Contributors all liability for 81 | damages, including direct, indirect, special, incidental and 82 | consequential damages, such as lost profits; 83 | iii) states that any provisions which differ from this Agreement are 84 | offered by that Contributor alone and not by any other party; and 85 | iv) states that source code for the Program is available from such 86 | Contributor, and informs licensees how to obtain it in a reasonable 87 | manner on or through a medium customarily used for software exchange. 88 | 89 | When the Program is made available in source code form: 90 | 91 | a) it must be made available under this Agreement; and 92 | b) a copy of this Agreement must be included with each copy of the Program. 93 | Contributors may not remove or alter any copyright notices contained 94 | within the Program. 95 | 96 | Each Contributor must identify itself as the originator of its Contribution, 97 | if 98 | any, in a manner that reasonably allows subsequent Recipients to identify the 99 | originator of the Contribution. 100 | 101 | 4. COMMERCIAL DISTRIBUTION 102 | 103 | Commercial distributors of software may accept certain responsibilities with 104 | respect to end users, business partners and the like. While this license is 105 | intended to facilitate the commercial use of the Program, the Contributor who 106 | includes the Program in a commercial product offering should do so in a manner 107 | which does not create potential liability for other Contributors. Therefore, 108 | if a Contributor includes the Program in a commercial product offering, such 109 | Contributor ("Commercial Contributor") hereby agrees to defend and indemnify 110 | every other Contributor ("Indemnified Contributor") against any losses, 111 | damages and costs (collectively "Losses") arising from claims, lawsuits and 112 | other legal actions brought by a third party against the Indemnified 113 | Contributor to the extent caused by the acts or omissions of such Commercial 114 | Contributor in connection with its distribution of the Program in a commercial 115 | product offering. The obligations in this section do not apply to any claims 116 | or Losses relating to any actual or alleged intellectual property 117 | infringement. In order to qualify, an Indemnified Contributor must: 118 | a) promptly notify the Commercial Contributor in writing of such claim, and 119 | b) allow the Commercial Contributor to control, and cooperate with the 120 | Commercial Contributor in, the defense and any related settlement 121 | negotiations. The Indemnified Contributor may participate in any such claim at 122 | its own expense. 123 | 124 | For example, a Contributor might include the Program in a commercial product 125 | offering, Product X. That Contributor is then a Commercial Contributor. If 126 | that Commercial Contributor then makes performance claims, or offers 127 | warranties related to Product X, those performance claims and warranties are 128 | such Commercial Contributor's responsibility alone. Under this section, the 129 | Commercial Contributor would have to defend claims against the other 130 | Contributors related to those performance claims and warranties, and if a 131 | court requires any other Contributor to pay any damages as a result, the 132 | Commercial Contributor must pay those damages. 133 | 134 | 5. NO WARRANTY 135 | 136 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN 137 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR 138 | IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, 139 | NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each 140 | Recipient is solely responsible for determining the appropriateness of using 141 | and distributing the Program and assumes all risks associated with its 142 | exercise of rights under this Agreement , including but not limited to the 143 | risks and costs of program errors, compliance with applicable laws, damage to 144 | or loss of data, programs or equipment, and unavailability or interruption of 145 | operations. 146 | 147 | 6. DISCLAIMER OF LIABILITY 148 | 149 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY 150 | CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, 151 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION 152 | LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 153 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 154 | ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE 155 | EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY 156 | OF SUCH DAMAGES. 157 | 158 | 7. GENERAL 159 | 160 | If any provision of this Agreement is invalid or unenforceable under 161 | applicable law, it shall not affect the validity or enforceability of the 162 | remainder of the terms of this Agreement, and without further action by the 163 | parties hereto, such provision shall be reformed to the minimum extent 164 | necessary to make such provision valid and enforceable. 165 | 166 | If Recipient institutes patent litigation against any entity (including a 167 | cross-claim or counterclaim in a lawsuit) alleging that the Program itself 168 | (excluding combinations of the Program with other software or hardware) 169 | infringes such Recipient's patent(s), then such Recipient's rights granted 170 | under Section 2(b) shall terminate as of the date such litigation is filed. 171 | 172 | All Recipient's rights under this Agreement shall terminate if it fails to 173 | comply with any of the material terms or conditions of this Agreement and does 174 | not cure such failure in a reasonable period of time after becoming aware of 175 | such noncompliance. If all Recipient's rights under this Agreement terminate, 176 | Recipient agrees to cease use and distribution of the Program as soon as 177 | reasonably practicable. However, Recipient's obligations under this Agreement 178 | and any licenses granted by Recipient relating to the Program shall continue 179 | and survive. 180 | 181 | Everyone is permitted to copy and distribute copies of this Agreement, but in 182 | order to avoid inconsistency the Agreement is copyrighted and may only be 183 | modified in the following manner. The Agreement Steward reserves the right to 184 | publish new versions (including revisions) of this Agreement from time to 185 | time. No one other than the Agreement Steward has the right to modify this 186 | Agreement. The Eclipse Foundation is the initial Agreement Steward. The 187 | Eclipse Foundation may assign the responsibility to serve as the Agreement 188 | Steward to a suitable separate entity. Each new version of the Agreement will 189 | be given a distinguishing version number. The Program (including 190 | Contributions) may always be distributed subject to the version of the 191 | Agreement under which it was received. In addition, after a new version of the 192 | Agreement is published, Contributor may elect to distribute the Program 193 | (including its Contributions) under the new version. Except as expressly 194 | stated in Sections 2(a) and 2(b) above, Recipient receives no rights or 195 | licenses to the intellectual property of any Contributor under this Agreement, 196 | whether expressly, by implication, estoppel or otherwise. All rights in the 197 | Program not expressly granted under this Agreement are reserved. 198 | 199 | This Agreement is governed by the laws of the State of New York and the 200 | intellectual property laws of the United States of America. No party to this 201 | Agreement will bring a legal action under this Agreement more than one year 202 | after the cause of action arose. Each party waives its rights to a jury trial in 203 | any resulting litigation. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Workspace](https://codenvy.io/factory/resources/codenvy-contribute.svg)](https://codenvy.io/f?url=https://github.com/codenvy/docs) 2 | 3 | # codenvy-docs 4 | 5 | This repository houses documentation for Codenvy ([repo](https://github.com/codenvy/codenvy) / [site](https://codenvy.com/)). Content is held in markdown files in the `/src/main/_docs` directory. Images should be placed in `/src/main/_docs/assets/imgs`. 6 | 7 | Docs are built using Jekyll and the output is static HTML that is hosted at [codenvy.com/docs](https://codenvy.com/docs) and in the product at `{codenvy-domain}/docs`. 8 | 9 | # Linking to Docs and Images 10 | Because the docs are generated into static HTML linking to docs and images is a bit unusual: 11 | - Link to a Codenvy docs page: `[Codenvy Factories]({{base}}/docs/integration-guide/workspace-automation/index.html)` 12 | - `{{base}}/docs` is always required 13 | - `/integration-guide` is the directory where the .md file is in the repo 14 | - `/workspace-automation` is the name of the .md file without the .md extension 15 | - `/index.html` is always required at the end 16 | - Link to a section in a docs page: `[Codenvy Factories]({{base}}/docs/integration-guide/workspace-automation/index.html#try-a-factory)` 17 | - `#try-a-factory` is the section heading name with spaces replaced by dashes 18 | - Link to an image: `![mypic.png]({{base}}/docs/assets/imgs/mypic.png)` 19 | 20 | # Editing Docs 21 | [![Workspace](https://codenvy.io/factory/resources/codenvy-contribute.svg)](https://codenvy.io/f?url=https://github.com/codenvy/docs) 22 | 23 | Get a workpsace on `codenvy.io` which include all dependencies to edit and preview your changes by clicking on the image above. 24 | 25 | # Building Docs 26 | Docs are built using a Docker image with Jekyll inside it. You will need Docker running on your machine to build the Codenvy docs. 27 | 28 | You can use codenvy.io factory to easily compile and view documentation. Just click [here](https://codenvy.io/f?url=https://github.com/codenvy/docs). 29 | 30 | You can also use the following locally. Navigate to the repo on your filesystem and type: 31 | 32 | `./docs.sh --run` 33 | 34 | The Jekyll server will scan for changes to the .md files every 2 seconds and auto-update the generated HTML. 35 | 36 | # Getting Help 37 | If you have questions or problems, please create an issue in this repo. 38 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 4.0.0 16 | 17 | maven-depmgt-pom 18 | org.eclipse.che.depmgt 19 | 5.23.0-SNAPSHOT 20 | 21 | com.codenvy.docs 22 | codenvy-docs 23 | 5.23.0-SNAPSHOT 24 | war 25 | Codenvy :: Docs War 26 | 27 | scm:git:git@github.com:codenvy/codenvy-docs.git 28 | scm:git:git@github.com:codenvy/codenvy-docs.git 29 | HEAD 30 | 31 | 32 | 5.23.0-SNAPSHOT 33 | 9.4.0.v20161208 34 | Red Hat, Inc. - initial API and implementation 35 | Red Hat, Inc. 36 | https://maven.codenvycorp.com/content/repositories/codenvy-private-releases/ 37 | https://maven.codenvycorp.com/content/repositories/codenvy-private-snapshots/ 38 | 39 | 40 | 41 | 42 | org.eclipse.che.docs 43 | che-docs 44 | ${che.docs.version} 45 | 46 | 47 | 48 | 49 | 50 | codenvy-public-repo 51 | codenvy public 52 | https://maven.codenvycorp.com/content/groups/public/ 53 | 54 | 55 | codenvy-public-snapshots-repo 56 | codenvy public snapshots 57 | https://maven.codenvycorp.com/content/repositories/codenvy-public-snapshots/ 58 | 59 | 60 | 61 | 62 | codenvy-public-repo 63 | codenvy public 64 | https://maven.codenvycorp.com/content/groups/public/ 65 | 66 | 67 | codenvy-public-snapshots-repo 68 | codenvy public snapshots 69 | https://maven.codenvycorp.com/content/repositories/codenvy-public-snapshots/ 70 | 71 | 72 | 73 | 74 | 75 | maven-resources-plugin 76 | 77 | 78 | copy-resources 79 | validate 80 | 81 | copy-resources 82 | 83 | 84 | ${project.build.directory}/codenvy-docs-src/src/main 85 | 86 | 87 | ${project.basedir}/src/main 88 | false 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | org.apache.maven.plugins 97 | maven-dependency-plugin 98 | 99 | 100 | unpack 101 | process-resources 102 | 103 | unpack 104 | 105 | 106 | 107 | 108 | org.eclipse.che.docs 109 | che-docs 110 | ${che.docs.version} 111 | sources 112 | jar 113 | false 114 | ${project.build.directory}/codenvy-docs-src 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | com.mycila 123 | license-maven-plugin 124 | 125 | 126 | **/**/*.js 127 | **/**/*.svg 128 | **/**/*.html 129 | 130 | 131 | 132 | 133 | org.eclipse.jetty 134 | jetty-maven-plugin 135 | ${jetty.version} 136 | 137 | 10 138 | 139 | /docs 140 | 141 | 142 | 143 | 144 | maven-antrun-plugin 145 | 146 | 147 | compile 148 | 149 | run 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | org.apache.maven.plugins 168 | maven-war-plugin 169 | 170 | false 171 | 172 | 173 | target/_site/docs 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /src/main/_config.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2012-2017 Red Hat, Inc. 3 | # All rights reserved. This program and the accompanying materials 4 | # are made available under the terms of the Eclipse Public License v1.0 5 | # which accompanies this distribution, and is available at 6 | # http://www.eclipse.org/legal/epl-v10.html 7 | # 8 | # Contributors: 9 | # Red Hat, Inc. - initial API and implementation 10 | # 11 | 12 | markdown: kramdown 13 | highlighter: rouge 14 | 15 | 16 | kramdown: 17 | toc_levels: 1..1 18 | smart_quotes: lsquo,rsquo,ldquo,rdquo 19 | input: GFM 20 | 21 | repository: https://github.com/codenvy/docs/ 22 | 23 | timezone: America/Los_Angeles 24 | 25 | product_name: "CODENVY" 26 | product_mini_name: "Codenvy" 27 | product_mini_cli: "codenvy" 28 | product_formal_name: "Codenvy" 29 | 30 | collections: 31 | docs: 32 | output: true 33 | tutorials: 34 | output: true 35 | 36 | name: Codenvy Docs 37 | description: Cloud workspaces for development teams 38 | url: https://codenvy.com 39 | 40 | twitter: 41 | username: codenvyhq 42 | 43 | logo: /img/logo-2x.png 44 | 45 | exclude: 46 | - .gitignore 47 | - docs.sh 48 | - assembly/* 49 | - _site/* 50 | - pom.xml 51 | - _docs/che/write-che-ide-plugins 52 | - _docs/che/use-che-as-a-workspace-server 53 | - _docs/che/setup-alternatives 54 | - _docs/che/setup 55 | - _docs/che/openshift-plugin 56 | - _docs/che/chedir-portable-workspaces 57 | - _docs/che/che-data-model 58 | - _docs/che/artik-ide-plugin 59 | - _docs/che/assets 60 | - _docs/che/intro.md 61 | 62 | # The following are used to define markdown permalinks 63 | defaults: 64 | - 65 | scope: 66 | path: "_docs/admin-guide" 67 | values: 68 | categories: [ "docs" , "admin-guide" ] 69 | - 70 | scope: 71 | path: "_docs/developer-guide" 72 | values: 73 | categories: [ "docs" , "developer-guide" ] 74 | - 75 | scope: 76 | path: "_docs/getting-started" 77 | values: 78 | categories: [ "docs" , "getting-started" ] 79 | - 80 | scope: 81 | path: "_docs/integration-guide" 82 | values: 83 | categories: [ "docs" , "integration-guide" ] 84 | - 85 | scope: 86 | path: "_docs/tutorials" 87 | values: 88 | categories: [ "docs" , "tutorials" ] 89 | - 90 | scope: 91 | path: "_docs/user-guide" 92 | values: 93 | categories: [ "docs" , "user-guide" ] 94 | - 95 | scope: 96 | path: "_docs/white-labels" 97 | values: 98 | categories: [ "docs" , "white-labels" ] 99 | - 100 | scope: 101 | path: "_docs/che/devops" 102 | values: 103 | categories: [ "docs" , "getting-started" ] 104 | - 105 | scope: 106 | path: "_docs/che/ide" 107 | values: 108 | categories: [ "docs" , "user-guide" ] 109 | - 110 | scope: 111 | path: "_docs/che/factory-portable-workspaces" 112 | values: 113 | categories: [ "docs" , "factory" ] 114 | - 115 | scope: 116 | path: "_docs/che/tutorials" 117 | values: 118 | categories: [ "docs" , "tutorials" ] 119 | -------------------------------------------------------------------------------- /src/main/_data/docs.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2012-2017 Red Hat, Inc. 3 | # All rights reserved. This program and the accompanying materials 4 | # are made available under the terms of the Eclipse Public License v1.0 5 | # which accompanies this distribution, and is available at 6 | # http://www.eclipse.org/legal/epl-v10.html 7 | # 8 | # Contributors: 9 | # Red Hat, Inc. - initial API and implementation 10 | # 11 | 12 | - title: Admin Guide 13 | docs: 14 | - getting-started 15 | - admin-installation 16 | - admin-configuration 17 | - admin-ldap 18 | - admin-managing 19 | - admin-organizations 20 | - admin-cli 21 | - admin-runbook 22 | - admin-monitoring 23 | - title: Workspace Guide 24 | docs: 25 | - devops-intro # Che workspace-administration 26 | - devops-runtime-stacks # Che workspace-administration 27 | - devops-runtime-recipes # Che workspace-administration 28 | - devops-project-samples # Che workspace-administration 29 | - devops-runtime-machines # Che workspace-administration 30 | - devops-volume-mounts # Che workspace-administration 31 | - devops-ws-agents # Che workspace-administration 32 | - devops-runtime-stacks-data-model # Che workspace-administration 33 | - devops-project-samples-data-model # Che workspace-administration 34 | - title: User Guide 35 | docs: 36 | - devops-intro # Che workspace-administration 37 | - ide-import-a-project # Che use-che-as-an-ide 38 | - user-import 39 | - user-teams 40 | - user-subscriptions 41 | - user-permissions 42 | - ide-git-svn # Che use-che-as-an-ide 43 | - ide-editor-settings # Che use-che-as-an-ide 44 | - ide-intellisense # Che use-che-as-an-ide 45 | - ide-commands # Che use-che-as-an-ide 46 | - ide-previews # Che use-che-as-an-ide 47 | - ide-build # Che use-che-as-an-ide 48 | - ide-run # Che use-che-as-an-ide 49 | - ide-debug # Che use-che-as-an-ide 50 | - ide-sync # Che use-che-as-an-ide 51 | - ide-ssh # Che use-che-as-an-ide 52 | - user-sharing-permissions 53 | - title: Portable Workspaces 54 | docs: 55 | - factory-getting-started # Che factory-portable-workspace 56 | - factory-creating # Che factory-portable-workspace 57 | - factory-json-reference # Che factory-portable-workspace 58 | - title: Integration Guide 59 | docs: 60 | - integration-issue-management 61 | - integration-continuous-integration 62 | - title: White Label Guide 63 | docs: 64 | - labels-introduction-white-labels 65 | - labels-custom-assemblies 66 | -------------------------------------------------------------------------------- /src/main/_data/links.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2012-2017 Red Hat, Inc. 3 | # All rights reserved. This program and the accompanying materials 4 | # are made available under the terms of the Eclipse Public License v1.0 5 | # which accompanies this distribution, and is available at 6 | # http://www.eclipse.org/legal/epl-v10.html 7 | # 8 | # Contributors: 9 | # Red Hat, Inc. - initial API and implementation 10 | # 11 | 12 | ide-build: /docs/user-guide/build/index.html 13 | ide-commands: /docs/user-guide/commands/index.html 14 | ide-debug: /docs/user-guide/debug/index.html 15 | ide-docker: /docs/user-guide/docker/index.html 16 | ide-editor-settings: /docs/user-guide/editor-settings/index.html 17 | ide-electron: /docs/user-guide/electron/index.html 18 | ide-git-svn: /docs/user-guide/git-svn/index.html 19 | ide-import-a-project: /docs/user-guide/import-a-project/index.html 20 | ide-intellisense: /docs/user-guide/intellisense/index.html 21 | ide-previews: /docs/user-guide/previews/index.html 22 | ide-projects: /docs/user-guide/projects/index.html 23 | ide-run: /docs/user-guide/run/index.html 24 | ide-sharing: /docs/user-guide/sharing/index.html 25 | ide-ssh: /docs/user-guide/ssh/index.html 26 | ide-sync: /docs/user-guide/sync/index.html 27 | ws-admin-intro: /docs/getting-started/admin-intro/index.html 28 | ws-agents: /docs/getting-started/agents/index.html 29 | ws-data-model-samples: /docs/getting-started/data-model-samples/index.html 30 | ws-data-model-stacks: /docs/getting-started/data-model-stacks/index.html 31 | ws-machines: /docs/getting-started/machines/index.html 32 | ws-recipes: /docs/getting-started/recipes/index.html 33 | ws-samples: /docs/getting-started/samples/index.html 34 | ws-stacks: /docs/getting-started/stacks/index.html 35 | ws-volume-mounts: /docs/getting-started/volume-mounts/index.html 36 | factory-getting-started: /docs/factory/getting-started/index.html 37 | factory-creating: /docs/factory/creating/index.html 38 | factory-json-reference: /docs/factory/json-reference/index.html 39 | factory-glossary: /docs/factory/glossary/index.html 40 | setup-configuration: /docs/admin-guide/configuration/index.html 41 | plugins-create-and-build-extensions: https://www.eclipse.org/che/docs/plugins/create-and-build-extensions/index.html 42 | server-stack: https://www.eclipse.org/che/docs/server/stack/index.html 43 | setup-getting-started: /docs/index.html 44 | -------------------------------------------------------------------------------- /src/main/_data/tutorials.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2012-2017 Red Hat, Inc. 3 | # All rights reserved. This program and the accompanying materials 4 | # are made available under the terms of the Eclipse Public License v1.0 5 | # which accompanies this distribution, and is available at 6 | # http://www.eclipse.org/legal/epl-v10.html 7 | # 8 | # Contributors: 9 | # Red Hat, Inc. - initial API and implementation 10 | # 11 | 12 | - title: User Tutorials 13 | tutorials: 14 | - tutorial-multi-machine 15 | - tutorial-maven 16 | - tutorial-gradle 17 | - tutorial-java 18 | - tutorial-swing 19 | - tutorial-nodejs 20 | - tutorial-meteor 21 | - tutorial-wordpress 22 | - tutorial-php 23 | - tutorial-composer 24 | - tutorial-android 25 | - tutorial-spring-boot 26 | - tutorial-rails 27 | - tutorial-laravel 28 | - tutorial-tomee 29 | - tutorial-che-in-che 30 | - tutorial-gae 31 | - tutorial-che-and-appfog 32 | - tutorial-subversion 33 | - tutorial-ftpsftp 34 | - tutorial-cuba 35 | - tutorial-sourcegraph 36 | - tutorial-vaadin 37 | - tutorial-platformio 38 | - tutorial-one-click-docker-environments 39 | # - teams-and-collaboration 40 | # - workspace-administration 41 | 42 | -------------------------------------------------------------------------------- /src/main/_docs/admin-guide/admin-monitoring.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Monitoring 4 | excerpt: "Monitoring Codenvy" 5 | layout: docs 6 | permalink: /:categories/monitoring/ 7 | --- 8 | {% include base.html %} 9 | 10 | ## Contents 11 | 12 | - TOC 13 | {:toc} 14 | 15 | --- 16 | 17 | This article discribes how to monitor a standard production setup with a master node that is not configured to run workspaces (the recommended setup for multi-node installations) and separate machine nodes for running workspace containers. 18 | 19 | # What to Monitor 20 | In this example and in our public cloud we use the following tools. Note that other tools can be used: 21 | 22 | - Resource Monitoring: We use Zabbix to monitor service resources, such as available disk space, RAM, number of containers etc... 23 | - Services Monitoring: We use Pingdom for externally accessible services and Zabbix to track the availability of hosts. 24 | 25 | # Zabbix Setup 26 | 27 | In this example we will use Zabbix 3.2.1 (other versions may require slight changes). To run Zabbix we are using a dockerized alpine-based instalation with PostgreSQL and nginx as per [Zabbix documentation](https://www.zabbix.com/documentation/3.2/manual/installation/containers). 28 | 29 | ## List of Containers Used 30 | - postgres:9.5 31 | - zabbix/zabbix-java-gateway:alpine-3.2-latest 32 | - zabbix/zabbix-server-pgsql:alpine-3.2-latest 33 | - zabbix/zabbix-web-nginx-pgsql:alpine-3.2-latest 34 | - zabbix/zabbix-agent:alpine-3.2-latest 35 | 36 | ## List of Templates for Master Node: 37 | - Codenvy KV Template 38 | - Codenvy RAM Usage Template 39 | - Codenvy Docker Space Template 40 | - Codenvy Workspaces Template 41 | - Template JMX Generic 42 | - Template OS Linux 43 | 44 | `Codenvy KV Template` is a custom template used to monitor the avialability of resources needed for Docker's overlay network due to [a Docker issue](https://github.com/docker/swarm/issues/2614). 45 | 46 | `Codenvy RAM Usage Template` is a custom template used to monitor the percentage of free RAM as Docker Swarm sees it. A trigger is set to 85% RAM utilization because new container provisioning will start to fail at a utilization level of 90%. 47 | 48 | `Codenvy Docker Space Template` is a custom template used to monitor percentage of free docker storage space. Trigger set to 80%. 49 | 50 | `Codenvy Workspaces Template` is a custom template used to monitor the number of containers in the Docker Swarm cluster (this doesn't include the Codenvy containers, only containers started for workspaces). A trigger is set to alarm if there are less than 10 (based on the assumption that there are 10 Codenvy containers in the installation) - this can be ajusted if you have more/fewer Codenvy containers. 51 | 52 | `Template JMX Generic` is a generic JMX template used to monitor the JVM for the main Codenvy services. You should change the Template JMX file before importing to match Your JMX user and password. 53 | 54 | `Template OS Linux` is a generic template bundled with Zabbix. You may need to [check/set permissions for monitoring available disk space with zabbix](https://www.zabbix.com/forum/showthread.php?t=12790). To check permissions use: `su zabbix -s /bin/bash -c "df -h /mnt/data"` and to set permissions: `setfacl -m u:zabbix:rx /mnt/data`. 55 | 56 | ## List of Templates for Workspace Nodes: 57 | - Codenvy Docker Space Template 58 | - Template OS Linux Node 59 | 60 | `Codenvy Docker Space Template` is the same template we used in the Master Node. 61 | 62 | `Template OS Linux Node` is a modified version of the `Template OS Linux` above. The only change is to the trigger value for `Too many processes on {HOST.NAME}`. This is increased to 800 - this will depend on the number of workspaces and containers per workspace you expect across your machine nodes. 63 | 64 | # Pingdom Setup 65 | 66 | Pingdom can be used to externally monitor aviability of the following HTTP/HTTPS services: 67 | - Login API: httpp[s]://codenvy.TLD/api/auth/login -- an additional request parameter should contain `{username: "some_user@DOMAIN.TLD", password: "some_password"}` 68 | - Ping: codenvy.TLD 69 | - Aviability: http[s]://codenvy.TLD 70 | - User Settings: http[s]://codenvy.TLD/api/user/settings -- responce should contain `che.auth.user_self_creation` 71 | -------------------------------------------------------------------------------- /src/main/_docs/admin-guide/admin-organizations.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Organizations 4 | excerpt: "Managing Organizations and group of users in Codenvy" 5 | layout: docs 6 | permalink: /:categories/organizations/ 7 | --- 8 | {% include base.html %} 9 | 10 | # Organizations in Codenvy 11 | Organization allow to regroup developers on Codenvy and allocate resources. Resources and permissions are controlled and allocated within Codenvy admin dashboard by system administrator. 12 | 13 | ## Roles 14 | There are two main different roles in an organization: 15 | 16 | - **Admin**: Organization's admins are able to manage the organization. Admins can edit settings, manage members, resources and sub-organization. 17 | - **Members**: Organization's members are able create workspace, manage own workspaces and use any other workspaces they have permissions for. 18 | 19 | Alternatively there is **System Admin** role, on Codenvy System, who is able to create root organizations, manage all the resources, members and sub-organizations. 20 | 21 | ## Organization Workspaces 22 | Workspaces created in an organization use organization resources granted and allocated by the system administrator. 23 | 24 | ## Organization Workspace Resources 25 | Resources for organization are taken from the parent one. Admins can control whether all, or a portion of the resources, that are shared with the sub-organization. 26 | 27 | ## Organization Structure 28 | Organizations can have sub-organizations. 29 | Root organizations are the starting point of each group of developers. Multiple root organizations are allowed onto your system. Root organizations can be created only be the System Admin. The management of the root organization's resources is also allowed only to the System Admin of your Codenvy installation. 30 | 31 | # Creating an Organization 32 | Codenvy system administrator is able to create organizations. 33 | 34 | To create an organization, use the menu in the left sidebar, which leads to the list of organizations: 35 | ![organization-menu.png]({{base}}/docs/assets/imgs/codenvy/organization-menu.png){:style="width: 30%"} 36 | 37 | A new page is displayed with all organizations in your system. Click on the top-left button to create a new organization. 38 | ![organization-list.png]({{base}}/docs/assets/imgs/codenvy/organization-list.png) 39 | 40 | A new page is displayed in which an organization name should set and organization members may be added. 41 | ![organization-create.png]({{base}}/docs/assets/imgs/codenvy/organization-create.png) 42 | 43 | ## Organization List 44 | The list of all organizations are displayed on organizations page: 45 | ![organization-list2.png]({{base}}/docs/assets/imgs/codenvy/organization-list2.png) 46 | 47 | The list contains the general information for each organization: number of members, total and available RAM and number of sub-organizations. 48 | 49 | ## Adding Organization Members 50 | Adding organization members by clicking the "Add" button will display a new popup. You can add multiple users at the same time by separating emails with a comma but note that all users added at the same time will be given the same [role]({{base}}{{site.links["admin-organizations"]}}#roles): 51 | 52 | ![organization-multiple-invites.png]({{base}}/docs/assets/imgs/codenvy/organization-multiple-invites.png) 53 | 54 | You can change an organization member's role or remove them from the organization at any time. 55 | ![organization-create-invite-members.png]({{base}}/docs/assets/imgs/codenvy/organization-create-invite-members.png) 56 | 57 | Note: Users with the green checkmark beside their name already have an account on your Codenvy system and will be added to the organization. Users without a checkmark do not have an account and will not be added into the organization. 58 | 59 | ## Workspaces in Organization 60 | Workspace is created inside of an organization and uses the resources of this very organization. Workspace creator has to choose the organization on workspace creation page: 61 | ![organization-create-workspace.png]({{base}}/docs/assets/imgs/codenvy/organization-create-workspace.png) 62 | 63 | ## Create Sub-Organization 64 | The creation of sub-organization can be done from organization details page by selecting Sub-Organizations tab and clicking "Add Sub-Organization" button. 65 | The flow of sub-organization creation is the same as for [organization]({{base}}{{site.links["admin-organizations"]}}#creating-an-organization). 66 | 67 | ### Add members to Sub-Organization 68 | The sub-organization members can be added only from the list of parent organization's members: 69 | 70 | ![sub-organization-add-members.png]({{base}}/docs/assets/imgs/codenvy/sub-organization-add-members.png) 71 | 72 | # Organization and Sub-Organization Administration 73 | 74 | ![organization-settings.png]({{base}}/docs/assets/imgs/codenvy/organization-settings.png) 75 | 76 | Organization settings are visible to all members of the organization, but only the Codenvy system administrator is able to modify the settings. 77 | 78 | ## Rename an Organization or Sub-Organization 79 | **Action restricted to**: Codenvy system administrator and admins of the organization. 80 | 81 | To rename an Organization, click in the "Name" textfield and start editing the name of the organization. Once edited, the save mode will appear - click on "Save" button to update the name. 82 | 83 | The name of the organization is restricted to the following rules: 84 | - Only alphanumeric characters or a single "-" can be used 85 | - Spaces cannot be used in organization names 86 | - Each organization name must be unique within the Codenvy install 87 | - Each sub-organization name must be unique within an organization 88 | 89 | ## Leave an Organization or Sub-Organization 90 | This action is not possible for members of an organization. Users have to contact organization's admin or Codenvy system admin. 91 | 92 | ## Delete an Organization or Sub-Organization 93 | **Action restricted to**: Codenvy system administrator and admins of the organization. 94 | 95 | ![organization-delete.png]({{base}}/docs/assets/imgs/codenvy/organization-delete.png){:style="width: 40%"} 96 | 97 | To delete an organization or a sub-organization, click on "Delete" button. 98 | This action can't be reverted and all workspaces created under the organization will be deleted. 99 | 100 | All members of the organization will receive an email notification to inform about organization deletion. 101 | 102 | ## Manage Organization and Sub-Organization Limits 103 | **Action restricted to**: Codenvy system administrator and admins of the organization. 104 | The organization default caps are taken from the system configuration. The admin of the organization can manage only the limits of it's sub-organizations. 105 | By default, there are no resource limits applied to the organization so all members can benefit from all the allocated resources. If an organization admin wishes to set limits they have three options: 106 | - **Workspace Cap**: The maximum number of workspaces that can exist in the organization. 107 | - **Running Workspace Cap**: The maximum number of workspaces which can run simultaneously in the organization. 108 | - **Workspace RAM Cap**: The maximum total RAM organization workspaces can use in GB. 109 | 110 | ## Update Organization and Sub-Organization Member Roles 111 | **Action restricted to**: Codenvy system administrator and admins of the organization. 112 | 113 | To edit the role of a organization member click on the "Edit" button in the "Actions" column: 114 | ![organization-edit-role-action.png]({{base}}/docs/assets/imgs/codenvy/organization-edit-role-action.png) 115 | 116 | You'll get a popup where you can update the role of the selected member: 117 | ![organization-edit-role.png]({{base}}/docs/assets/imgs/codenvy/organization-edit-role.png) 118 | 119 | Click "Save" to confirm the update. 120 | 121 | 122 | ## Remove Organization and Sub-Organization Members 123 | **Action restricted to**: Codenvy system administrator and admins of the organization. 124 | 125 | To remove a member from the organization, you can click on the "Delete" button in the "Actions" column: 126 | ![organization-remove-single-member.png]({{base}}/docs/assets/imgs/codenvy/organization-remove-single-member.png) 127 | 128 | You'll get a confirmation popup, where you can confirm or cancel your action. 129 | 130 | You can also select multiple members from the organization, using the checkboxes. A delete button will appear in the header of the table: 131 | ![organization-remove-members.png]({{base}}/docs/assets/imgs/codenvy/organization-remove-members.png) 132 | 133 | The members that are removed from the organization will receive an email notification. 134 | -------------------------------------------------------------------------------- /src/main/_docs/admin-guide/admin-runbook.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Runbook 4 | excerpt: "Running a production Codenvy system" 5 | layout: docs 6 | permalink: /docs/admin-guide/runbook/ 7 | --- 8 | {% include base.html %} 9 | 10 | This article provides specific performance and security guidance for Codenvy on-premises installations based on our experience running codenvy.io hosted SaaS and working with our enterprise customers. We assume a multi-node setup where workspaces are run on Machine Nodes and the Master Node does not operate workspaces, ie the Master Node's IP is not included in the `codenvy.env` Swarm list. 11 | 12 | # Recommended Docker Versions 13 | Codenvy can run on Docker 1.11+, but we recommend **Docker 1.12.5+**. Versions below 1.12.5 have known issues: 14 | 15 | | Issue | Link | Fixed In | 16 | |--- |--- |--- | 17 | | DockerConnector exception "Could not kill running container" | https://github.com/codenvy/codenvy/issues/1164 | Docker 1.12.5 18 | 19 | # Zookeeper Configuration 20 | Zookeeper is a key-value store used by Docker in a clustered setup. To optimize the setup: 21 | 22 | **Step 1**: On the Master Node ensure that port 2181 is open. For example, if you're using `iptables`: 23 | 24 | ``` 25 | #etcd 26 | -A INPUT -m state --state NEW -m tcp -p tcp --dport 2379 -j ACCEPT 27 | ... 28 | #zookeeper 29 | -A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT 30 | ... 31 | -A INPUT -m state --state NEW -m udp -p udp --dport 4789 -j ACCEPT 32 | ``` 33 | 34 | **Step 2**: Change the Docker daemon configuration (subsituting the hostname for your instance and the appopriate network adapter): 35 | 36 | ``` 37 | DOCKER_NETWORK_OPTIONS=' --bip=172.17.42.1/16 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=zk:// codenvy.com:2181 --cluster-advertise=eth0:2375' 38 | ``` 39 | 40 | # Network Infrastructure 41 | We have 2 classes of instances: 42 | 43 | 1. Master Nodes used for running internal Codenvy services. 44 | 2. Machine Nodes that runs user workspaces. 45 | 46 | We suggest separating traffic bewteen two subnets: one for Master and one for Machine Nodes. This keeps the traffic purpose and security properly segregated and allows the use of subnet masks, rather than individual IPs when writing firewall rules. VNET will use addresses `10.0.0.0/8` and two subnets `10.1.0.0/16` for Master and 10.2.0.0/16 for Machine Nodes. 47 | 48 | # Storage 49 | Cloud-based installs (AWS, Google Cloud, etc...) can scale disk space. We suggest LVM and XFS with caching for read and write. 50 | 51 | Workspaces Nodes require fast I/O access to give developers the best experience. This is especially important with interpreted languages like node.js and PHP that require access to a large number of small files. We suggest using SSD for all nodes. 52 | 53 | For Machine Nodes local storage is preferred as it will provide the best performance. 54 | 55 | For the Master Node, LVM or RAID storage is recommended for redundancy. NAS can also be used. If you are using AWS, we recommend LVM with snapshotting turned on for faster backups of the key data. 56 | 57 | The following directories can generate large amounts of data in a production system and care should be taken to ensure that there remains free disk space for them: 58 | 59 | On Master Node: 60 | 61 | ``` 62 | /var/lib/docker 63 | {path-to-your-data-directory}/instance/data/registry 64 | {path-to-your-data-directory}/instance/data/codenvy/fs 65 | {path-to-your-data-directory}/instance/data/codenvy/che-machines 66 | {path-to-your-data-directory}/instance/data/postgres 67 | ``` 68 | 69 | On Machine Nodes: 70 | 71 | ``` 72 | /var/log/journal 73 | /var/lib/docker 74 | ``` 75 | 76 | ## Recommended Disk Setup 77 | The following is our recommendation for disk setup. 78 | 79 | ### Master Node 80 | 81 | After starting the instance inside the first subnet we need to attach 3 data disks: 82 | - For databases and logs: initial size is about 300 GB. 83 | - For file system (main project storage/backups): initial size is about 1TB but this should be monitored as the demands will depend heavily on the type of projects and developer usage patterns in the organization. 84 | - For Docker image snapshots: initial size is about 1TB. 85 | 86 | 1. Unmount used ephemeral disk: `# umount /dev/sdb1` 87 | 2. Zeroing beginning of ephemeral disk: `# dd if=/dev/zero of=/dev/sdb` 88 | 3. Add ephemeral disk to LVM: `# pvcreate /dev/sdb` 89 | 4. Create volume group: `# vgcreate vg-docker /dev/sdb` 90 | 5. Create swap volume with size 4 GB: `# lvcreate -L 4G -n swap vg-docker` 91 | 6. Create docker’s metadata volume with size 2 GB: `# lvcreate -L 2G -n metadata vg-docker` 92 | 7. Create docker data volume using all remaining disk space: `# lvcreate -l 100%FREE -n data vg-docker` 93 | 8. Make swap volume become swap: `# mkswap /dev/vg-docker/swap` 94 | 9. Activate swap volume: `# swapon /dev/vg-docker/swap` 95 | 96 | For databases and logs: 97 | 98 | 1. Add data disk to LVM: `# pvcreate /dev/sdc` 99 | 2. Create volume group: `# vgcreate vg-data /dev/sdc` 100 | 3. Create journal volume with size 10 GB: `# lvcreate -L 10G -n journal vg-data` 101 | 4. Create logs volume with size 20 GB: `# lvcreate -L 20G -n logs vg-data` 102 | 5. Create machine-logs volume with size 30 GB: `# lvcreate -L 30G -n machine-logs vg-data` 103 | 6. Create pgsql volume with size 20 GB: `# lvcreate -L 20G -n psql vg-data` 104 | 9. Create docker data volume using all remaining disk space: `# lvcreate -l 100%FREE -n docker vg-docker` 105 | 106 | For filesystem: 107 | 108 | 1. Add data disk to LVM: `# pvcreate /dev/sdd` 109 | 2. Create volume group: `# vgcreate vg-fs /dev/sdd` 110 | 3. Create FS volume using all remaining disk space: `# lvcreate -l 100%FREE -n fs vg-fs` 111 | 112 | For Docker snapshots: 113 | 114 | 1. Add data disk to LVM: `# pvcreate /dev/sde` 115 | 2. Create volume group: `# vgcreate vg-ddistr /dev/sde` 116 | 3. Create FS volume using all remaining disk space: `# lvcreate -l 100%FREE -n ddistr vg-ddistr` 117 | 118 | Make XFS filesystems for: 119 | 120 | 1. journal: `# mkfs.xfs /dev/vg-data/journal` 121 | 2. logs: `# mkfs.xfs /dev/vg-data/logs` 122 | 3. machine-logs: `# mkfs.xfs /dev/vg-data/machine-logs` 123 | 6. pgsql: `# mkfs.xfs /dev/vg-data/pgsql` 124 | 7. docker: `# mkfs.xfs /dev/vg-data/docker` 125 | 8. fs: `# mkfs.xfs /dev/vg-fs/fs` 126 | 9. Snapshots: `# mkfs.xfs /dev/vg-ddistr/ddistr` 127 | 128 | Example `/etc/fstab` entries (note the *nofail* option): 129 | 130 | ``` 131 | # 132 | # /etc/fstab 133 | # Created by anaconda on Thu Mar 14 11:03:34 2013 134 | # 135 | # Accessible filesystems, by reference, are maintained under '/dev/disk' 136 | # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 137 | # 138 | LABEL=rootfs / ext4 defaults,relatime 1 1 139 | tmpfs /dev/shm tmpfs defaults 0 0 140 | devpts /dev/pts devpts gid=5,mode=620 0 0 141 | sysfs /sys sysfs defaults 0 0 142 | proc /proc proc defaults 0 0 143 | /dev/vg-docker/swap swap swap defaults,nofail 0 0 144 | /dev/vg-data/fs {path-to-your-data-directory}instance/data/codenvy/fs xfs defaults,nofail 0 0 145 | /dev/vg-ddist/ddist {path-to-your-data-directory}instance/data/registry xfs defaults,nofail 0 0 146 | /dev/vg-data/machine-logs {path-to-your-data-directory}/instance/data/codenvy/che-machines xfs defaults,nofail 0 0 147 | /dev/vg-data/pgsql {path-to-your-data-directory}/instance/data/postgres xfs defaults,nofail 0 0 148 | ``` 149 | 150 | - Activate all fstab entries: `# mount -a` 151 | - Check if swap activated: `# free` 152 | - Check if all volumes mounted and have correct sizes: `# df -h` 153 | 154 | ### Machine Nodes 155 | 156 | After starting the instance inside the second subnet we need to attach Docker and logs (initial size is about 300 GB). 157 | 158 | 1. Unmount used ephemeral disk: `# umount /dev/sdb1` 159 | 2. Zeroing beginning of ephemeral disk: `# dd if=/dev/zero of=/dev/sdb` 160 | 3. Add ephemeral disk to LVM: `# pvcreate /dev/sdb` 161 | 4. Create volume group: `# vgcreate vg-docker /dev/sdb` 162 | 5. Create swap volume with size 4 GB: `# lvcreate -L 4G -n swap vg-docker` 163 | 6. Create docker’s metadata volume with size 2 GB: `# lvcreate -L 2G -n metadata vg-docker` 164 | 7. Create docker data volume using all remaining disk space: `# lvcreate -l 100%FREE -n data vg-docker` 165 | 8. Make swap volume become swap: `# mkswap /dev/vg-docker/swap` 166 | 9. Activate swap volume: `# swapon /dev/vg-docker/swap` 167 | 168 | For Docker and logs: 169 | 170 | 1. Add data disk to LVM: `# pvcreate /dev/sdc` 171 | 2. Create volume group: `# vgcreate vg-data /dev/sdc` 172 | 3. Create journal volume with size 10 GB: `# lvcreate -L 10G -n journal vg-data` 173 | 4. Create docker data volume using all remaining disk space: `# lvcreate -l 100%FREE -n docker vg-data` 174 | 175 | Make XFS filesystems for: 176 | 177 | 1. journal: `# mkfs.xfs /dev/vg-data/journal` 178 | 2. docker: `# mkfs.xfs /dev/vg-data/docker` 179 | 180 | Example `/etc/fstab` entries (note the *nofail* option): 181 | 182 | ``` 183 | # 184 | # /etc/fstab 185 | # Created by anaconda on Thu Mar 14 11:03:34 2013 186 | # 187 | # Accessible filesystems, by reference, are maintained under '/dev/disk' 188 | # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 189 | # 190 | LABEL=rootfs / ext4 defaults,relatime 1 1 191 | tmpfs /dev/shm tmpfs defaults 0 0 192 | devpts /dev/pts devpts gid=5,mode=620 0 0 193 | sysfs /sys sysfs defaults 0 0 194 | proc /proc proc defaults 0 0 195 | /dev/vg-docker/swap swap swap defaults,nofail 0 0 196 | ``` 197 | 198 | - Activate all fstab entries: `# mount -a` 199 | - Check if swap activated: `# free` 200 | - Check if all volumes mounted and have correct sizes: `# df -h` 201 | 202 | ## Increasing Disk Space 203 | If additional disk space is needed you can attach a new data disk (if using Azure make sure caches are turned ON), then issue the following commands: 204 | 205 | 1. Create physical volume: `# pvcreate /dev/sdg` 206 | 2. Scan disks for changes, new disk should appear here: `lvmdiskscan pvdisplay pvscan` 207 | 3. Extend volume group: `# vgextend vg-data /dev/sdg` 208 | 4. Extend logical volume: `# lvextend -l +100%FREE /dev/vg-fs/fs` 209 | 5. To grow the actual filesystem, it must be run on mounted volume, no need to stop codenvy or unmount filesystem: `# xfs_growfs {path-to-your-data-directory}/instance/data/codenvy/fs` 210 | 211 | ## Detaching Disks 212 | If you need to detach disks: 213 | 214 | 1. Stop Codenvy 215 | 1. Unmount FS: `# umount {path-to-your-data-directory}/instance/data/codenvy/fs` 216 | 2. Deactivate volume group: `# vgchange -an vg-fs` 217 | 3. Detach data disk 218 | 4. Reattach data disk (if using Azure ensure caching is ON) 219 | 5. Activate volume group: `# vgchange -ay vg-fs` 220 | -------------------------------------------------------------------------------- /src/main/_docs/assets/css/screen.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | @import "mixins"; 5 | @import "normalize"; 6 | @import "gridism"; 7 | @import "pygments"; 8 | @import "font-awesome"; 9 | @import "style"; 10 | -------------------------------------------------------------------------------- /src/main/_docs/assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/16x16.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/32x32.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/AIO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/AIO.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/Codenvywordmarkwhite.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 12 | 16 | 19 | 21 | 23 | 25 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/ScreenShot2016-08-02at8_18_23AM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/ScreenShot2016-08-02at8_18_23AM.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/VSTSextension-DevelopandReviewinIDE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/VSTSextension-DevelopandReviewinIDE.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/billing-access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/billing-access.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/billing-get-ram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/billing-get-ram.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/billing-info-popup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/billing-info-popup.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/billing-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/billing-information.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/billing-invoices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/billing-invoices.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/billing-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/billing-summary.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/favicon.ico -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 12 | 13 | 14 | 18 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/get-more-idle-timeout-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/get-more-idle-timeout-button.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/git-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/git-menu.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/github-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/github-button.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/jira-github-jenkins-integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/jira-github-jenkins-integration.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/logo-codenvy-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/logo-codenvy-white.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "icons": [ 4 | { 5 | "src": "/android-chrome-192x192.png", 6 | "sizes": "192x192", 7 | "type": "image/png" 8 | }, 9 | { 10 | "src": "/android-chrome-512x512.png", 11 | "sizes": "512x512", 12 | "type": "image/png" 13 | } 14 | ], 15 | "theme_color": "#ffffff", 16 | "background_color": "#ffffff", 17 | "display": "standalone" 18 | } -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/master_plus_node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/master_plus_node.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/microsoft-vsts-integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/microsoft-vsts-integration.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/multi-machine-ide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/multi-machine-ide.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-create-invite-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-create-invite-members.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-create-workspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-create-workspace.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-create.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-delete.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-edit-role-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-edit-role-action.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-edit-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-edit-role.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-list.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-list2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-list2.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-menu.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-multiple-invites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-multiple-invites.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-remove-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-remove-members.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-remove-single-member.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-remove-single-member.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/organization-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/organization-settings.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/plugins.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/postbuild-email-notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/postbuild-email-notification.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/postbuild-script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/postbuild-script.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/sub-organization-add-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/sub-organization-add-members.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/svn-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/svn-menu.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-caps-limits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-caps-limits.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-create-invite-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-create-invite-members.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-create-workspace-select-team.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-create-workspace-select-team.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-create.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-delete.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-edit-role-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-edit-role-action.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-edit-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-edit-role.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-invited-users.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-invited-users.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-leave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-leave.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-list-workspaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-list-workspaces.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-list.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-manage-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-manage-members.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-menu.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-multiple-invites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-multiple-invites.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-remove-members.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-remove-members.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-remove-single-member.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-remove-single-member.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-remove-workspaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-remove-workspaces.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-settings.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-stop-workspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-stop-workspace.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-workspace-share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-workspace-share.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/team-workspaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/team-workspaces.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/user-management-add-user-popup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/user-management-add-user-popup.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/user-management-add-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/user-management-add-user.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/user-management-delete-user-popup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/user-management-delete-user-popup.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/user-management-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/user-management-menu.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/user-management-user-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/user-management-user-list.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/user-management-user-organizations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/user-management-user-organizations.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/user-management-user-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/user-management-user-profile.png -------------------------------------------------------------------------------- /src/main/_docs/assets/imgs/codenvy/webhook-vcs-integration-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codenvy/docs/5af1df1e7e3debe330c4780ae194e9998f0580ec/src/main/_docs/assets/imgs/codenvy/webhook-vcs-integration-flow.png -------------------------------------------------------------------------------- /src/main/_docs/getting-started.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Getting Started 4 | excerpt: "" 5 | layout: docs 6 | permalink: /docs/ 7 | --- 8 | {% include base.html %} 9 | 10 | |Options |      Action      | 11 | |:--- | :---: | 12 | |*Create a Free Account at codenvy.io*. Everyone gets 3GB for free. Connect to a public toolchain and be coding in minutes.| [Sign up](https://codenvy.io/) 13 | |*Download Codenvy*. Install Codenvy anywhere Docker runs and connect it to your private toolchain. Control security and configuration–even add your own extensions.|[Install Now]({{base}}{{site.links["admin-installation"]}}) 14 | 15 | ## Quick Install 16 | With Docker 1.11+ (1.12.5+ recommended) on Windows, Mac, or Linux: 17 | ``` 18 | $ docker run codenvy/cli start 19 | ``` 20 | You will be prompted with how to configure your hostname, volume mounts, and Docker configuration. Codenvy will launch a server that lets you create workspaces. 21 | 22 | ![multi-machine-ide.png]({{base}}/docs/assets/imgs/codenvy/multi-machine-ide.png) 23 | 24 | ## Quick Install 25 | With Docker 1.11+ (1.12.5+ recommended) on Windows, Mac, or Linux: 26 | ``` 27 | $ docker run codenvy/cli start 28 | ``` 29 | You will be prompted with how to configure your hostname, volume mounts, and Docker configuration. Codenvy will launch a server that lets you create workspaces. *The admin guide*({{base}}/docs/admin-guide/installation/index.html) contains full installation instructions. 30 | 31 | ![multi-machine-ide.png]({{base}}/docs/assets/imgs/codenvy/multi-machine-ide.png) 32 | 33 | ## Codenvy.io Account 34 | We run a free, hosted cloud at http://codenvy.io. This service lets you create accounts, invite other users, and create workspaces for development. The service gives you 3 GB of RAM and you can add more users or additional users for a small fee. Our terms of service and privacy policy are on [our legal page](http://codenvy.com/legal). 35 | 36 | Your workspaces can clone Git or Subversion repositories into the project space. To prevent bad people from doing bad stuff, we whitelist all external Git providers individually. While it would be uncommon for your Git provider to not be listed in our whitelists, new providers do sometimes miss our coverage. If you are working with a non-standard provider, please consider asking us about whitelisting it by opening an issue on our [GitHub repository](http://github.com). 37 | 38 | ## Where To Go Next 39 | 40 | |I am a...| Check out the... | 41 | | --- | --- | 42 | | **System Administrator** | [*The Admin Guide*]({{base}}/docs/admin-guide/installation/index.html).
Install, configure, and operate a global Codenvy cloud servicing all your developers. | 43 | | **Developer** | [*The User Guide*]({{base}}/docs/getting-started/intro/index.html).
Configure and use workspaces and the Che IDE (or any desktop IDE). | 44 | | **DevOps** or **Team Lead** | [*The Factory Guide*]({{base}}/docs/factory/getting-started/index.html).
Automate workspace creation with Factories and [*integrate Codenvy with your private toolchain*]({{base}}/docs/integration-guide/issue-management/index.html) including GitHub, BitBucket, JIRA and Jenkins. | 45 | | **Plug-in Developer** | [*Che Plugin Guide*](https://eclipse.org/che/docs/assemblies/intro/index.html).
Codenvy is based on Eclipse Che - to extend Codenvy simply build Che extensions. If you are going to place your extensions into a Codenvy On-Prem instance please [contact us for guidance](https://codenvy.com/contact/questions/). | 46 | -------------------------------------------------------------------------------- /src/main/_docs/integration-guide/html-factory.jelly: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 39 | 40 | 41 | 42 | 43 | 44 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | BUILD ${build.result}
Build URL${rooturl}${build.url}
Project:${project.name}
Description:${project.description}
Date of build:${it.timestampString}
Build duration:${build.durationString}
45 |
46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 |
CHANGES
${spc}Revision ${cs.commitId?:cs.revision?:cs.changeNumber} by 59 | ${aUser!=null?aUser.displayName:cs.author.displayName}: 60 | (${cs.msgAnnotated}) 61 |
${spc}${p.editType.name}${p.path}
No Changes
74 |
75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 |
CONSOLE OUTPUT
${line}
85 |
86 |
87 | 88 | 89 |
90 | -------------------------------------------------------------------------------- /src/main/_docs/integration-guide/integration-continuous-integration.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Continuous Integration 4 | excerpt: "" 5 | layout: docs 6 | permalink: /:categories/continuous-integration/ 7 | --- 8 | {% include base.html %} 9 | 10 | Codenvy can use [Factories]({{base}}{{site.links["factory-getting-started"]}}) with a Jenkins CI system to generate developer workspaces pre-configured with the context of the CI job. For example, a failed CI build email can be customized to include a link to two factories that open a workspace pre-configured to: 11 | * The commit ID that broke the build for the project and branch being built. 12 | * The head (latest commit) for the project and branch being built. 13 | 14 | These Factories are included in the Jenkins job description and in the email notifications, speeding diagnosis and resolution for failed builds and giving anyone a quick way to run or debug the latest build. 15 | 16 | Because configuring this integration requires system-level property settings it can only be used by customer with Codenvy installed [on-premises]({{base}}{{site.links["admin-installation"]}}). 17 | 18 | If you'd like to speak to us about an integrations between Codenvy and another CI system, [please contact us](https://codenvy.com/contact/questions/). 19 | 20 | # Configuring the Integration 21 | 22 | ## Set up Plugins 23 | Go to **Manage Jenkins - Manage Plugins** and install: 24 | 1. GitHub plug-in 25 | 2. Post-Build script plug-in 26 | 3. Email extension template plug-in. 27 | 28 | ![plugins.png]({{base}}/docs/assets/imgs/codenvy/plugins.png) 29 | 30 | ## Create a Jenkins Job 31 | (Skip this step if you have your Jenkins job already set up). 32 | 33 | Set up a Jenkins Job that matches your project requirements (JDK, Maven, Node.js etc). You may need to install additional plugins that your project requires. 34 | 35 | ## Configure the Jenkins Job's Post Build Actions 36 | Once a Jenkins job is set up you need to make sure that an email is sent out when a job succeeds or fails. You should use a [.jelly template]({{base}}/docs/integration-guide/html-factory.jelly) as the default message template. Download it and save to `/var/lib/jenkins/email-templates/html-factory.jelly` on the instance where Jenkins runs. 37 | 38 | In the **Post-build Actions** configuration section: 39 | 40 | ### Add an Editable Email Notification Task 41 | In the task add the following message content: `${JELLY_SCRIPT,template="html-factory"}`. For example: 42 | 43 | ![postbuild.png]({{base}}/docs/assets/imgs/codenvy/postbuild-email-notification.png) 44 | 45 | ### Add an Execute a Set of Scripts Task 46 | Inside that panel's **Execute shell** build step insert the following command: 47 | 48 | ``` 49 | curl -H "Content-Type: application/json" -H "Jenkins-Event: jenkins" -X POST -d '{"jobName" : "'$JOB_NAME'", "buildId" : "'$BUILD_ID'", "jenkinsUrl" : "'$JENKINS_URL'", "repositoryUrl" : ""}' /api/jenkins-webhook 50 | ``` 51 | 52 | ![postbuild.png]({{base}}/docs/assets/imgs/codenvy/postbuild-script.png) 53 | 54 | ## Create a Codenvy Factory 55 | 56 | You need a Codenvy Factory configured to use the project you want associated with your Jenkins job. This Factory will be modified by the plugin and injected into Jenkins job emails. See: [Factories]({{base}}{{site.links["factory-creating"]}}). 57 | 58 | Your Factory will need to outline the location of the git repo associated with the job and the default branch. 59 | 60 | ``` 61 | "source": { 62 | "location": "https://github.com/che-samples/console-ruby-simple.git", 63 | "type": "git", 64 | "parameters": { 65 | "branch": "TEST-1" 66 | } 67 | } 68 | ``` 69 | 70 | ## Set Codenvy Environment Variables 71 | 72 | ### Credentials 73 | 74 | Update the `codenvy.env` with the username and password of the user who created the Factory in Codenvy. You only need one user for all the Factories used by your Jenkins integration: 75 | 76 | ```text 77 | CODENVY_INTEGRATION_FACTORY_OWNER_USERNAME=somebody@somemail.com 78 | CODENVY_INTEGRATION_FACTORY_OWNER_PASSWORD=password 79 | ``` 80 | 81 | ### Git 82 | The Jenkins integration supports both GitHub and BitBucket Server repos. 83 | 84 | #### For GitHub 85 | 86 | Update the `codenvy.env` with `GitHub` webhooks properties. Note that you can rename "WEBHOOK1" with any identifier. Webhooks are tied to connectors through Factory IDs. There can be multiple webhooks (if you need to receive webhooks from multiple repositories) - in this case, add a new entry with a different name for WEBHOOKID. 87 | 88 | ```text 89 | CODENVY_GITHUB_WEBHOOK_WEBHOOK1_REPOSITORY_URL=https://github.com/example/testrepo.git 90 | CODENVY_GITHUB_WEBHOOK_WEBHOOK1_FACTORY1_ID=factory1Id 91 | ``` 92 | 93 | Each webhook can update more than one Factory - in this case, add a new entry with a FACTORYN_ID, where N is an incremented number, for example `FACTORY2_ID`, `FACTORY3_ID`,`FACTORY4_ID`, etc...: 94 | 95 | ```text 96 | CODENVY_GITHUB_WEBHOOK_WEBHOOK1_REPOSITORY_URL=https://github.com/example/testrepo.git 97 | CODENVY_GITHUB_WEBHOOK_WEBHOOK1_FACTORY1_ID=hfdhfd749347hd64 98 | CODENVY_GITHUB_WEBHOOK_WEBHOOK1_FACTORY2_ID=hfdhfd857141fq97 99 | ``` 100 | 101 | In this case, the webhook with ID `WEBHOOK_WEBHOOK1` will update two Factories - `FACTORY1_ID` and `FACTORY2_ID`. 102 | 103 | #### BitBucket Server 104 | 105 | Update the `codenvy.env` with `Bitbucket Server` webhooks properties. Webhooks are tied to connectors through Factory IDs. There can be multiple webhooks (if you need to receive webhooks from multiple repositories) - in this case, add a new entry with a different name for WEBHOOKID. 106 | 107 | ```text 108 | CODENVY_BITBUCKET_SERVER_WEBHOOK_WEBHOOKID_REPOSITORY_URL=https://username@bitbucket.org/teamsinspace/documentation-tests.git 109 | CODENVY_BITBUCKET_SERVER_WEBHOOK_WEBHOOKID_FACTORY1_ID=hfdhfd749347hd64 110 | 111 | ``` 112 | 113 | Each webhook can update more than one Factory - in this case, add a new entry with a FACTORYN_ID, where N is an incremented number, for example `FACTORY2_ID`, `FACTORY3_ID`,`FACTORY4_ID`, etc...: 114 | 115 | ```text 116 | CODENVY_BITBUCKET_SERVER_WEBHOOK_WEBHOOKID_REPOSITORY_URL=https://username@bitbucket.org/teamsinspace/documentation-tests.git 117 | CODENVY_BITBUCKET_SERVER_WEBHOOK_WEBHOOKID_FACTORY1_ID=hfdhfd749347hd64 118 | CODENVY_BITBUCKET_SERVER_WEBHOOK_WEBHOOKID_FACTORY2_ID=hfdhfd857141fq97 119 | ``` 120 | 121 | In this case, webhook with ID `WEBHOOK_WEBHOOK1` will update 2 Factories - `FACTORY1_ID` and `FACTORY2_ID`. 122 | 123 | ### Jenkins Connector 124 | Update the `codenvy.env` with the connectors properties. Note that you can rename "CONNECTOR1" to anything you want. The system will match the Git and Jenkins Connector variables using the Factory IDs. You can setup as many connectors as you need: CONNECTOR1, CONNECTOR2, CONNECTORx, etc...: 125 | 126 | ```text 127 | CODENVY_JENKINS_CONNECTOR_CONNECTOR1_FACTORY_ID=r6p0l1sfnwm99k94 128 | CODENVY_JENKINS_CONNECTOR_CONNECTOR1_URL=http://userName:password@jenkins.codenvy-dev.com:8080 129 | CODENVY_JENKINS_CONNECTOR_CONNECTOR1_JOB_NAME=new_job 130 | ``` 131 | 132 | A Jenkins user should have write access to a targeted Jenkins job in order to update it. 133 | 134 | ### Configure Repo Webhooks 135 | The Jenkins integration supports both GitHub and BitBucket Server repos. 136 | 137 | #### For GitHub 138 | 139 | 1. On your repository's GitHub page, go to Settings > Webhooks & services. 140 | 2. Click the "Add webhook" button. 141 | 3. In the Payload URL field enter: `http://{your-codenvy-url}/api/github-webhook`. 142 | 4. Content Type is application/json. 143 | 5. Leave the Secret field empty. 144 | 5. Select "Let me select individual events" radio button. 145 | 6. Check "Push" and "Pull Request" checkboxes. 146 | 147 | #### For BitBucket Server 148 | 149 | 1. Log into the Bitbucket Server as an Admin 150 | 2. Install Post-Receive WebHooks plugin. 151 | 3. In repo settings, configure the plugin to use Bitbucket Server webhook: `http(s)://$codenvyURL/api/bitbucketserver-webhook` 152 | 4. Configure `bitbucket_endpoint` property with the URL of your Bitbucket Server 153 | 154 | ## Test Integration 155 | To trigger the email you will need to make the build fail. If everything is configured correctly the build failed email should include a "Codenvy Factory" line in the build information at the top of the email. 156 | -------------------------------------------------------------------------------- /src/main/_docs/integration-guide/integration-issue-management.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Issue Management 4 | excerpt: "" 5 | layout: docs 6 | permalink: /:categories/issue-management/ 7 | --- 8 | {% include base.html %} 9 | 10 | [Codenvy Factories]({{base}}{{site.links["factory-getting-started"]}}) can be integrated with nearly any issue mangement system. However, we have developed two plug-ins that allow completely automated Factory creation and update based on changes to Atlassian JIRA or Microsoft VSTS issue management. 11 | 12 | Because configuring this integration requires system-level property settings it can only be used by customer with [on-premises Codenvy]({{base}}{{site.links["admin-installation"]}}). 13 | 14 | ## Codenvy Issue Management Integrations 15 | 16 | * Codenvy Plug-In for Atlassian JIRA: [Documentation]({{base}}/docs/integration-guide/issue-management/index.html#codenvy-plug-in-for-atlassian-jira) / [Video](https://www.youtube.com/watch?v=y4wdplYj6qs) 17 | 18 | * Codenvy Extension for Microsoft VSTS: [Documentation]({{base}}/docs/integration-guide/issue-management/index.html#codenvy-extension-for-microsoft-visual-studio-team-services) / [Video](http://www.screencast.com/users/codenvy-brad/folders/Default/media/3b77d397-0363-4963-9107-b1275111f571) 19 | 20 | # Codenvy Plug-in for Atlassian JIRA 21 | The Codenvy plug-in for Atlassian JIRA allows anyone to jump directly from an issue in JIRA to a custom, isolated workspace designed to let them edit, built, debug and review the issue. [This video](https://www.youtube.com/watch?v=y4wdplYj6qs) shows the agile flow from JIRA to Codenvy. 22 | 23 | The plug-in for JIRA consists of three parts: 24 | 25 | 1. **Issue event listener**: Automatically generates [Codenvy Factories]({{base}}{{site.links["factory-getting-started"]}}) for the develop and review issue fields when an issue in a Factory-enabled project is created. 26 | 2. **Custom issue fields**: Display the links to the develop and review workspaces in Codenvy. 27 | 3. **Plug-in administration page**: Defines the location of the associated Codenvy instance, username and password. 28 | 29 | The Codenvy agile workflow with Atlassian JIRA requires: 30 | 31 | - Codenvy 5.0+. 32 | - Atlassian JIRA issue management system 7.x. 33 | - Codenvy Plug-in for Atlassian JIRA 1.0.5+. 34 | - GitHub or BitBucket Server repo. 35 | ![jira-github-jenkins-integration.png]({{base}}/docs/assets/imgs/codenvy/jira-github-jenkins-integration.png) 36 | 37 | ## Installing the Plug-In for JIRA 38 | 39 | The Codenvy plug-in for JIRA is available from the [Atlassian Marketplace](https://marketplace.atlassian.com/plugins/com.codenvy.jira.codenvy-jira-plugin/server/overview). 40 | 41 | 42 | ## Configuring the Plug-In for JIRA 43 | ### Defining the Parent Factory 44 | 1. In Codenvy create a new generic user account that will house the factories created by the plug-in for JIRA (e.g. `jira-user@some-email.com`). 45 | 2. Each project in JIRA that you want to be [Factory-enabled]({{base}}{{site.links["factory-getting-started"]}}) must have a "parent Factory" configured in Codenvy. The parent Factory defines the workspace needed by developers working with the project and must be named identically to the Key of the JIRA Project it is associated with (e.g. if JIRA Key is "SPRING" then the parent Factory must be called "spring"). The "parent Factory" name should be always LOWERCASE. 46 | 47 | ### Connecting Codenvy to JIRA 48 | 1. Log into your JIRA instance as an admin. 49 | 2. Navigate to JIRA Administration > Add-Ons. 50 | 3. Click on Codenvy Administration at the bottom of the left-hand nav. 51 | 4. Enter the URL to your Codenvy instance, as well as the Codenvy username and password you created in the previous section. 52 | 5. Save your changes. 53 | 54 | ### Defining Factory-Enabled Projects 55 | 1. Log into your JIRA instance as an admin. 56 | 2. Navigate to JIRA Administration > Issues. 57 | 3. Choose "Custom fields" from the "Fields" section. 58 | 3. Add a new custom field by clicking the button on the right. 59 | 4. In the dialog box click the "Advanced" option on the left. 60 | 5. Choose "Codenvy Develop Field" and click "Next". 61 | 6. Type in your custom field name (e.g. "Develop") and click "Create". 62 | 7. Associate the field to the JIRA projects you want to be Factory-enabled and click "Update". 63 | 9. Create a second custom field. 64 | 10. Choose "Codenvy Review Field" and click "Next". 65 | 11. Type in your custom field name (e.g. "Review") and click "Create". 66 | 12. Associate the field to the JIRA projects you want to be Factory-enabled and click "Update". 67 | 68 | ## Testing 69 | At this point Codenvy will automatically generate custom develop and review workspaces for every issues that's created based on the parent Factory associated with the JIRA Project. 70 | 71 | Log into JIRA and choose one of the project types that you have Factory-enabled. Create a new issue. There will be two new labels "Develop" and "Review" each with a link that will load a Codenvy workspace. 72 | 73 | ## Using the Plug-In for JIRA 74 | When a developer is ready to start work on an issue they click the Develop link. They are brought into a developer workspace that is isolated to them and includes project sources and the build / run / debug environments needed for the project. The definition of the [project's parent Factory]({{base}}{{site.links["factory-getting-started"]}}) defines pre- and post-load behaviors. 75 | ![webhook-vcs-integration-flow.png]({{base}}/docs/assets/imgs/codenvy/webhook-vcs-integration-flow.png) 76 | The git webhooks ensure that as the repository changes the JIRA issue Factory is kept up to date. For example, if a branch associated with the Factory is merged then the Factory will be updated to point to the commitID on the branch that was merged-to. 77 | 78 | ## Plug-In for JIRA User Data Usage and Privacy 79 | The plug-in requires the URL of Codenvy as well as a Codenvy user's username and password. The plug-in acts exclusively on the "Issue" object in JIRA. No data from that object is stored. 80 | 81 | If you have security or privacy questions regarding this plug-in please contact us: https://codenvy.com/contact/questions/ 82 | 83 | # Codenvy Extension for Microsoft Visual Studio Team Services 84 | The Codenvy extension for Microsoft Visual Studio Team Services (VSTS) allows anyone to jump directly from an work item in VSTS to a custom, isolated workspace designed to let them edit, build, debug and review the code. [This video](http://www.screencast.com/users/codenvy-brad/folders/Default/media/9ebfd758-d808-4ab9-9940-61d0c58775a2) shows the agile flow from Microsoft VSTS to Codenvy. 85 | 86 | The plug-in processes events from VSTS issue management: 87 | 1. **Work Item created events**: Triggers the creation of a work item-specific [Codenvy Factory]({{base}}{{site.links["factory-getting-started"]}}) and adds it to the "Develop" and "Review" fields in the Codenvy section of the work item detail card. 88 | 2. **Git repo events**: Updates the branch and commitID information for the Codenvy Factory based on changes in the git repo. 89 | 90 | The Codenvy agile workflow with Microsoft Visual Studio Team Services requires: 91 | - A Codenvy installation with the VCS Factory Plug-In installed. 92 | - A Microsoft Visual Studio Team Services installation with a git-based repo. 93 | - The Codenvy Agile Plugin for VSTS 94 | ![microsoft-vsts-integration.png]({{base}}/docs/assets/imgs/codenvy/microsoft-vsts-integration.png) 95 | 96 | ## Installing the Extension for VSTS 97 | The Codenvy extension for Microsoft VSTS is available from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=codenvy.codenvy-extension). 98 | 99 | ## Configuring the Extension for VSTS 100 | ### Creating the Codenvy User for VSTS 101 | In Codenvy create a new generic user account that will house the factories created by the extension for Microsoft VSTS (e.g. `vsts-user@some-email.com`). 102 | 103 | ### Setting VSTS Webhooks 104 | 1. On VSTS go to: 105 | 106 | ``` 107 | https://{your-account}.visualstudio.com/{your-collection}/{your-project-name}/_admin/_servicehooks\ 108 | ``` 109 | 2. Configure a new webhook for 'Work item created' events. 110 | 3. Set the webhook to `http://your-codenvy-url/api/github-webhook` 111 | 4. Configure a new webhook for 'Pull request updated' events. 112 | 5. Set the webhook to `http://your-codenvy-url/api/github-webhook` 113 | 114 | ### Setting Properties in Codenvy 115 | 1. In `/home/codenvy/credentials.properties` 116 | Include the Codenvy User for VSTS username and password created above. 117 | 118 | ``` 119 | username=somebody@somemail.com 120 | password=somepw\ 121 | ``` 122 | 2. In `/home/codenvy/vsts-webhooks.properties` 123 | For each VSTS webhook created include: 124 | [webhook-name]=[webhook-type],[api-version],[project-api-url],[username],[password] 125 | 126 | ``` 127 | # [webhook-name]=[webhook-type],[host],[account],[collection],[api-version],[username],[password] 128 | webhook1=work-item-created,visualstudio,myaccount,DefaultCollection,2.2-preview.1,some-user,some-pw\ 129 | ``` 130 | 131 | ### VSTS Credentials 132 | The VSTS credentials used must be secondary credentials. Read more about secondary credentials in the [Microsoft documentation](https://www.visualstudio.com/en-us/integrate/get-started/auth/overview). 133 | 134 | ### Defining the Parent Factory 135 | Each project in JIRA that you want to be [Factory-enabled]({{base}}{{site.links["factory-getting-started"]}}) must have a "Parent Factory" configured in Codenvy. 136 | 1. Create the Parent Factory with the Codenvy VSTS user created above. 137 | 2. Name the Parent Factory identically to the Team Project in VSTS that it will be associated with. 138 | 139 | ## Testing 140 | Test that Codenvy automatically generates custom develop and review workspaces for every work item that's created based on the parent Factory associated with the VSTS Project. 141 | 142 | Log into Microsoft VSTS and choose one of the project types that you have Factory-enabled. Create a new work item and open its detail card. There will be a new section called "Codenvy" with a link for Developer Workspace and one for Review Workspace. 143 | 144 | ## Using the Codenvy Extension for Microsoft VSTS 145 | When a developer is ready to start work on a work item they click the Develop link. They are brought into a developer workspace that is isolated to them and includes project sources and the build / run / debug environments needed for the project. The definition of the [project's parent Factory]({{base}}{{site.links["factory-getting-started"]}}) defines pre- and post-load behaviors. 146 | 147 | ![webhook-vcs-integration-flow.png]({{base}}/docs/assets/imgs/codenvy/webhook-vcs-integration-flow.png) 148 | 149 | The git webhooks ensure that as the repository changes the Microsoft VSTS work item Factory is kept up to date. For example, if a branch associated with the Factory is merged then the Factory will be updated to point to the commitID on the branch that was merged-to. 150 | -------------------------------------------------------------------------------- /src/main/_docs/tutorials/tutorial-one-click-docker-environments.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: One-Click Docker Environments 4 | excerpt: "Create workspaces with production runtimes containing your source code and dev tools. Choose any architecture - microservices, multi-tier, multi-container, or shared server. We excel at complex topologies." 5 | layout: tutorials 6 | permalink: /:categories/one-click-docker-environments/ 7 | --- 8 | {% include base.html %} 9 | 10 | # Integrate Your Repo 11 | You need to generate SSH key to be able to clone private repositories. 12 | 13 | For GitHub SSH keys are generated and uploaded automatically at Profile > Preferences > SSH > VCS. 14 | 15 | ![github-button.png]({{base}}/docs/assets/imgs/codenvy/github-button.png) 16 | 17 | For other Git hosting providers SSH key should be generated and manually saved to profile settings of git hosting settings. Find more details on how to do that in the [Eclipse Che Git docs](https://eclipse-che.readme.io/docs/git#section-other-git-hosting-providers). 18 | # Integrate Your Registry 19 | Eclipse Che workspaces are based upon a Docker image. You can either pull that image from a public registry, like Docker Hub, or a private registry which is managed by yourself. Images in a registry can be publicly visible or private, which require user credentials to access. You can also set up a private registry to act as a mirror to Docker Hub. And, if you are running Eclipse Che behind a proxy, you can configure the Docker daemon registry to operate behind a proxy. 20 | 21 | ## Proxy for Docker 22 | If you are installing Eclipse Che behind a proxy and you want your users to create workspaces powered by images hosted at Docker Hub, then you will need to configure the Docker daemon used by Eclipse Che to [operate over a proxy](https://docs.docker.com/engine/admin/systemd/#http-proxy). 23 | 24 | ## Private Docker Images 25 | When users create a workspace in Eclipse Che, they must select a Docker image to power the workspace. We provide ready-to-go stacks which reference images hosted at the public Docker Hub. You can provide your own images that are stored in a local private registry or at Docker Hub. The images may be publicly or privately visible, even if they are part of a private registry. 26 | 27 | ### Accessing Private Images 28 | You can configure Che to access private images in a public or private registry. Modify the `codenvy.env` to configure your private registry: 29 | 30 | 31 | ```shell 32 | # Docker registry configuration. 33 | # Note that you can configure many registries with different names. 34 | CHE_DOCKER_REGISTRY_AUTH__URL=https://index.docker.io/v1/ 35 | CHE_DOCKER_REGISTRY_AUTH__USERNAME= 36 | CHE_DOCKER_REGISTRY_AUTH__PASSWORD= 37 | CHE_DOCKER_REGISTRY_AWS_REGISTRY1_ID=id1 38 | CHE_DOCKER_REGISTRY_AWS_REGISTRY1_REGION=region1 39 | CHE_DOCKER_REGISTRY_AWS_REGISTRY1_ACCESS__KEY__ID=key_id1 40 | CHE_DOCKER_REGISTRY_AWS_REGISTRY1_SECRET__ACCESS__KEY=secret1 41 | ``` 42 | 43 | 44 | Registries added in User Dashboard override registries added to `codenvy.env`. 45 | 46 | 47 | ## Private Docker Registries 48 | When creating a workspace, a user must reference a Docker image. The default location for images is located at Docker Hub. However, you can install your own Docker registry and host custom images within your organization. 49 | 50 | When users create their workspace, they must reference the custom image in your registry. Whether you provide a custom stack, or you have users reference a custom workspace recipe from the dashboard, to access a private registry, you must provide the domain of the private registry in the `FROM` syntax of any referenced Dockerfiles. 51 | 52 | ```shell 53 | # Syntax 54 | FROM /: 55 | 56 | # Where repository is the hostname:port of your registry: 57 | FROM my.registry.url:9000/image:latest 58 | ``` 59 | 60 | To add a private registry, perform steps documented above (either adding a registry to global configuration or in User Dashboard). 61 | #### Custom Images 62 | To get your custom image into a private registry, you will need to build it, tag it with the registry repository name, and push it into the registry. When tagging images into a private registry, they are always tagged with the fully qualified hostname of the registry that will host them. So it is not uncommon to see an image named `ops.codenvy.org:9000/myimage`. 63 | -------------------------------------------------------------------------------- /src/main/_docs/tutorials/tutorial-teams-and-collaboration.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Teams and Collaboration 4 | excerpt: "" 5 | layout: tutorials 6 | permalink: /:categories/teams-and-collaboration/ 7 | --- 8 | {% include base.html %} 9 | -------------------------------------------------------------------------------- /src/main/_docs/tutorials/tutorial-workspace-administration.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Workspace Administration 4 | excerpt: "" 5 | layout: tutorials 6 | permalink: /:categories/workspace-administration/ 7 | --- 8 | {% include base.html %} 9 | -------------------------------------------------------------------------------- /src/main/_docs/user-guide/user-import.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Import 4 | excerpt: "" 5 | layout: docs 6 | permalink: /:categories/import/ 7 | --- 8 | {% include base.html %} 9 | There are several ways to import a project: 10 | * `IDE > Import Project` 11 | * `Dashboard > Create Project` 12 | * Import via Git 13 | * Import from a ZIP file 14 | * Copy a project to Che's projects folder on the local file system 15 | * Open a terminal in the IDE and create files in the `/projects` directory 16 | 17 | Private repositories require SSH keys that need to be generated and uploaded to a code hosting server. It is done automatically for GitHub at `Help > Preferences`. Click the GitHub icon and follow instructions. 18 | # From the User Dashboard 19 | In the user dashboard click the "+" button in the upper-right to enter the New Project creation wizard. 20 | * In the "Select Source" section click the "Import from existing location" radio button 21 | * Enter the URL of your git repo 22 | * Enter your credentials to connect Codenvy to your GitHub account 23 | * Enter the URL of your source code ZIP file 24 | 25 | In the "Select Workspace" section select a [ready-to-go stack]({{base}}{{site.links["ws-stacks"]}}#ready-to-go-stacks) that matches your project's language and runtime or create a [custom stack]({{base}}{{site.links["ws-stacks"]}}#custom-stack) based on the Eclipse Che open standard. 26 | 27 | To import from an SVN repo create a workspace by selecting "Workspaces" in the left-hand nav and hitting the "+" sign in the upper-right. Once your workspace is started use the instructions in the "From the IDE" section below to import from SVN. 28 | # From the IDE 29 | If starting in the IDE make sure the workspace you're in is compatible with the project you're going to import (e.g. if you're importing a node.js project you'll need a node.js workspace). 30 | * In the IDE menu select *Workspace > Import Project* (you can import multiple projects into a single workspace). 31 | * Select the appropriate source control option on the left 32 | * Fill in the parameters on the right 33 | 34 | Once your code is imported you'll have to configure your project. 35 | 36 | 37 | # Project Configuration 38 | Codenvy will perform a project "estimation" when a project is being imported in an attempt for it to estimate the project type. The project type will cause the IDE and workspace to inherit special behaviors, such as Java intellisense for maven, or Bower plug-in for JavaScript. You can manually set the project type in `Project > Configuration`. 39 | -------------------------------------------------------------------------------- /src/main/_docs/user-guide/user-permissions.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Permissions 4 | excerpt: "" 5 | layout: docs 6 | permalink: /:categories/permissions/ 7 | --- 8 | {% include base.html %} 9 | 10 | 11 | Permissions are used to control user actions. Rather than provide a fixed set of roles we use a broader set of permissions that can be applied in any combination to establish the security you need. 12 | 13 | Codenvy also provides a mechanisms and layers which allow to define "who" is allowed to do "what". Any user and administrator can control resources managed by Codenvy and allow certain actions or behaviors for other users or groups. For example as owner of a workspace, you can grant other users permission to see and/or use your workspace. 14 | 15 | Permissions can be applied to: 16 | - Workspace 17 | - Organization 18 | - Stack 19 | - Recipe 20 | - System 21 | 22 | Permissions can be assigned to: 23 | - Users 24 | - Group of users (see [teams]({{base}}{{site.links["user-teams"]}})) 25 | 26 | # Workspace Permissions 27 | 28 | The user who creates a workspace is the _workspace owner_ and has all permissions by default. Workspace owners can invite other users into the workspace and control their permissions for the workspace. 29 | 30 | The following permissions are applicable to workspaces: 31 | 32 | | Permission | Description | 33 | | --------------- | ------------------------------------------------------- | 34 | | read | Allows reading a workspace's configuration. 35 | | use | Allows using a workspace and interacting with it. 36 | | run | Allows starting and stopping a workspace. 37 | | configure | Allows defining and changing a workspace configuration. 38 | | setPermissions | Allows updating workspace permissions for other users. 39 | | delete | Allows deleting the workspace. 40 | 41 | # Organization Permissions 42 | 43 | An organization is a named set of users. Organizations are the underlying layer for [teams]({{base}}{{site.links["user-teams"]}}) in Codenvy. 44 | 45 | The following permissions are applicable to organizations: 46 | 47 | | Permission | Description | 48 | | ----------------------------- | --------------------------------------------------------------------- | 49 | | update | Allows editing of organization settings and information. 50 | | delete | Allows deleting an organization. 51 | | manageSuborganizations | Allows creating and managing sub-organizations. 52 | | manageResources | Allows redistribution of an organization’s resources and defining resource limits. 53 | | manageWorkspaces | Allows creating and managing all the organization's workspaces. 54 | | setPermissions | Allows adding and removing users as well as updating their permissions. 55 | 56 | # System Permissions 57 | 58 | System permissions control aspects that affect the whole Codenvy installation. 59 | 60 | The following permissions are applicable to organizations: 61 | 62 | | Permission | Description | 63 | | ----------------------------- | --------------------------------------------------------------------- | 64 | | manageSystem | Allows control of the system, workspaces and organizations. 65 | | setPermissions | Allows updating of permissions for users on the system. 66 | | manageUsers | Allows creating and managing users. 67 | 68 | ## Super Priviliged Mode 69 | 70 | The permission "manageSystem" can be extended to provide a super privileged mode that allows advanced actions to be performed on any resources managed by the system. A user with "manageSystem" permission is able read and stop any workspaces. To perform other actions on workspaces and organizations, the user will need to assign himself the permissions needed. 71 | 72 | By default, this mode is disabled. 73 | 74 | It is possible to activate this option by configuring the `CODENVY_SYSTEM_SUPER_PRIVILEGED_MODE` in the `codenvy.env` file. 75 | 76 | # Stack Permissions 77 | 78 | A stack is a runtime configuration for a workspace, see [stack definition]({{base}}{{site.links["ws-stacks"]}}). 79 | 80 | The following permissions are applicable to a stack: 81 | 82 | | Permission | Description | 83 | | ----------------------------- | --------------------------------------------------------------------- | 84 | | search | Allows searching of the stacks. 85 | | read | Allows reading of the stack's configuration. 86 | | update | Allows updating of the stack's configuration. 87 | | delete | Allows deleting of the stack. 88 | | setPermissions | Allows managing permissions for the stack. 89 | 90 | # Recipe Permissions 91 | 92 | A recipe defines part of the runtime of a workspace, see [recipe definition]({{base}}{{site.links["ws-reciped"]}}). 93 | 94 | The following permissions are applicable to a recipe: 95 | 96 | | Permission | Description | 97 | | ----------------------------- | --------------------------------------------------------------------- | 98 | | search | Allows searching of the recipes. 99 | | read | Allows reading of the recipe's configuration. 100 | | update | Allows updating of the recipe's configuration. 101 | | delete | Allows deleting of the recipe. 102 | | setPermissions | Allows managing permissions for the recipe. 103 | 104 | 105 | # Permissions API 106 | 107 | All permissions can be managed by using the provided REST API. The APIs are documented using Swagger, as explained [here]({{base}}{{site.links["server-rest-api"]}}). 108 | 109 | The permissions API list can be accessed by: [{host}/swagger/#!/permissions](). 110 | 111 | ## List Permissions 112 | 113 | List the permissions which can be applied to a specific resources: 114 | GET /permissions : [{host}/swagger/#!/permissions/getSupportedDomains]() 115 | 116 | Applicable `domain` values are the following: 117 | 118 | | Domain | 119 | | -------------------------- | 120 | | system | 121 | | organization | 122 | | workspace | 123 | | stack | 124 | | recipe | 125 | 126 | Note: `domain` is optional, in this case the API will return all possible permissions for all domains. 127 | 128 | ## List Permissions for Specific User 129 | 130 | List the permissions which are applied to a specific user: 131 | GET /permissions/{domain} : [{host}/swagger/#!/permissions/getCurrentUsersPermissions]() 132 | 133 | Applicable `domain` values are the following: 134 | 135 | | Domain | 136 | | -------------------------- | 137 | | system | 138 | | organization | 139 | | workspace | 140 | | stack | 141 | | recipe | 142 | 143 | `instance` parameter corresponds to the ID of the resource you want to get the applied permissions. 144 | 145 | ## List Permissions for All Users 146 | 147 | List the permissions which are applied to a specific user (you must have sufficient permissions to allow you to see this information): 148 | GET /permissions/{domain}/all : [{host}/swagger/#!/permissions/getUsersPermissions]() 149 | 150 | Applicable `domain` values are the following: 151 | 152 | | Domain | 153 | | -------------------------- | 154 | | system | 155 | | organization | 156 | | workspace | 157 | | stack | 158 | | recipe | 159 | 160 | `instance` parameter corresponds to the ID of the resource you want to get the applied permissions for all users. 161 | 162 | ## Assign Permissions 163 | 164 | Assign permissions to a resource: 165 | POST /permissions : [{host}/swagger/#!/permissions/storePermissions]() 166 | 167 | Applicable `domain` values are the following: 168 | 169 | | Domain | 170 | | -------------------------- | 171 | | system | 172 | | organization | 173 | | workspace | 174 | | stack | 175 | | recipe | 176 | 177 | `instance` parameter corresponds to the ID of the resource you want to get the applied permissions for all users. 178 | 179 | `userId` parameter corresponds to the ID of the user who want to grant certain permissions. 180 | 181 | Sample `body` to grant user `userID` permissions to a workspace `workspaceID`: 182 | 183 | ```json 184 | { 185 | "actions": [ 186 | "read", 187 | "use", 188 | "run", 189 | "configure", 190 | "setPermissions" 191 | ], 192 | "userId": "userID", 193 | "domainId": "workspace", 194 | "instanceId": "workspaceID" 195 | } 196 | ``` 197 | -------------------------------------------------------------------------------- /src/main/_docs/user-guide/user-sharing-permissions.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Sharing Permissions 4 | excerpt: "" 5 | layout: docs 6 | permalink: /:categories/sharing-permissions/ 7 | --- 8 | {% include base.html %} 9 | 10 | ## Sharing Workspaces 11 | 12 | A user with `setPermissions` privileges (See: Permissions {% assign docs_todo="Update when team page is ready."%}) can share a workspace, i.e. grant other users `read, use, run, configure or setPermissions` privileges. 13 | 14 | Select a workspace in User Dashboard, navigate to `Share` tab and enter emails of users to share this workspace with (use comma or space as separator if there are multiple emails). 15 | -------------------------------------------------------------------------------- /src/main/_docs/user-guide/user-subscriptions.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Subscription and Billing 4 | excerpt: "" 5 | layout: docs 6 | permalink: /:categories/subscriptions/ 7 | --- 8 | {% include base.html %} 9 | 10 | 11 | You can purchase subscriptions for codenvy.io accounts from the user dashboard. Subscriptions allow you to have: 12 | - RAM: up to 50GB of RAM to run workspaces 13 | - Workspace timeout: 4 hours 14 | - Workspaces: Unlimited 15 | 16 | Subscriptions are charged when purchased and on the first of each following month (see [billing]({{base}}{{site.links["user-subscriptions"]}}#billing)). 17 | 18 | # Billing 19 | 20 | Paid subscriptions are charged at the time of purchase and renewals are charged at the beginning of each month. To calculate the charge when purchased we use the daily rate for the package the user has chosen and multiply that by the number of days remaining in the month (including the day of purchase). 21 | 22 | Example: 23 | - **Initial purchase**: May 26th I buy a 1GB RAM package 24 | - May 26, my credit card is charged $1.92 (6 x $0.32) 25 | - June 1 and on the first of each month after, my credit card is charged $10 26 | - **Upgrade**: June 17 I buy another 1GB RAM package 27 | - June 17, my credit card is charged $4.48 (14 x $0.32) 28 | - July 1 and on the first of each month after, my credit card is charged $20 29 | 30 | If the credit card is removed or if the credit card cannot be charged all running workspaces will be stopped and the account resources will be moved back to the free tier level. If the credit card can't be charged an email notification will be sent to the user warning them of the issue. 31 | 32 | ## Receipts 33 | 34 | The following receipts are sent to paid subscription users: 35 | - **Transaction Receipt**: Sent as soon as the credit card is charged for a subscription. 36 | - **Monthly Subscription Summary**: Sent at the beginning of the month to any user with a credit card on file (even if it the user doesn't currently have a paid subscription). Users without a paid subscription will not be charged. 37 | 38 | # Billing in the Dashboard 39 | 40 | ## Subscription Status 41 | 42 | You can view a summary of your subscriptions in the dashboard. 43 | 44 | Click on your profile at the bottom of the left sidebar: 45 | ![billing-access.png]({{base}}/docs/assets/imgs/codenvy/billing-access.png){:style="width: 30%"} 46 | 47 | View a summary your account state: 48 | ![billing-summary.png]({{base}}/docs/assets/imgs/codenvy/billing-summary.png) 49 | 50 | ## Buying RAM 51 | 52 | From the "Dashboard" page or "Billing" summary page, you are able to buy more RAM for your account. 53 | 54 | Click on the button "Get More RAM". A new popup will be displayed: 55 | ![billing-get-ram.png]({{base}}/docs/assets/imgs/codenvy/billing-get-ram.png) 56 | 57 | If your billing information is not already registered, you will have to provide it: 58 | ![billing-info-popup.png]({{base}}/docs/assets/imgs/codenvy/billing-info-popup.png) 59 | 60 | Clicking "Continue" will purchase the subscription. Your card will be charged and you will immediately receive the requested additional RAM and a confirmation of the transaction. 61 | 62 | The workspace details page has a section "Idle timeout", where the current idle timeout value is displayed along with a button "Buy More RAM To Get 4 Hour Idle Timeout", 63 | that also provides ability to buy more RAM and increase timeout: 64 | ![get-more-idle-timeout-button.png]({{base}}/docs/assets/imgs/codenvy/get-more-idle-timeout-button.png) 65 | 66 | ## Update Billing information 67 | You can update your billing information by going under the "Card" tab from billing page. 68 | 69 | ![billing-information.png]({{base}}/docs/assets/imgs/codenvy/billing-information.png) 70 | 71 | ## Invoices 72 | 73 | You can download all your subscription invoices under the "Invoices" tab from billing page. 74 | 75 | ![billing-invoices.png]({{base}}/docs/assets/imgs/codenvy/billing-invoices.png) 76 | 77 | ## Cancel Subscription 78 | 79 | To cancel a subscription, just remove your credit card information from your account. You can remove your credit card by going under the "Card" tab from billing page: 80 | 81 | ![billing-information.png]({{base}}/docs/assets/imgs/codenvy/billing-information.png) 82 | -------------------------------------------------------------------------------- /src/main/_docs/user-guide/user-teams.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Teams 4 | excerpt: "" 5 | layout: docs 6 | permalink: /:categories/teams/ 7 | --- 8 | {% include base.html %} 9 | 10 | # Teams in Codenvy 11 | Teams allow groups of developers to collaborate with private and shared workspaces. Resources and permissions are controlled and allocated within the team by the team administrator. 12 | 13 | ## Roles 14 | There are three different roles in a team: 15 | - **Owner**: The team owner is the user who creates the team. It is the owner's resources that are allocated within the team. Team owners can define limits on the resources that team members can use. 16 | - **Admin**: Team's admins are able to manage the team. Admins can edit settings, manage workspaces, resources and members. 17 | - **Developer**: Team's developers are able create workspace, manage own workspaces and use any other workspaces they have permissions for. 18 | 19 | ## Team Workspaces 20 | Workspaces created in a team use team resources and can be shared with all, or a subset of team members. 21 | 22 | ## Team Workspace Resources 23 | Resources for team are taken from the owner's resource pool. Owners can control whether all, or a portion of their resources are shared with the team. 24 | 25 | On Codenvy.io, all users are granted 3 free GB of RAM which can be used either for personal workspaces or team workspaces. Additional RAM can be purchased to provide more resources for personal or team use, learn more [here]({{base}}{{site.links["user-subscriptions"]}}). 26 | 27 | # Creating a Team 28 | All users are able to create a team and invite other users to join it. The user who creates a team is designated as the team owner and controls the resources shared with the team. 29 | 30 | To create a team, use the menu in the left sidebar: 31 | ![team-menu.png]({{base}}/docs/assets/imgs/codenvy/team-menu.png){:style="width: 30%"} 32 | 33 | A new page is displayed in which a team name is set and team members are added. 34 | ![team-create.png]({{base}}/docs/assets/imgs/codenvy/team-create.png) 35 | 36 | ## Teams List 37 | The list of all teams are displayed on dashboard page: 38 | ![team-list.png]({{base}}/docs/assets/imgs/codenvy/team-list.png) 39 | 40 | ## Adding Team Members 41 | Adding team members by clicking the "Add" button will display a new popup. You can add multiple users at the same time by separating emails with a comma but note that all users added at the same time will be given the same [role]({{base}}{{site.links["user-teams"]}}#roles): 42 | 43 | ![team-multiple-invites.png]({{base}}/docs/assets/imgs/codenvy/team-multiple-invites.png) 44 | 45 | 46 | You can change a team member's role or remove them from the team at any time. 47 | ![team-create-invite-members.png]({{base}}/docs/assets/imgs/codenvy/team-create-invite-members.png) 48 | 49 | Note: Users with the green checkmark beside their name already have a Codenvy account and will be invited to join the team. Users without a checkmark do not have a Codenvy account and will receive email invitations to signup for a new account. Once users signs up for a new account they will join the team automatically. 50 | 51 | ## Team Workspaces 52 | Members of the team are able to browse certain team workspaces, create new workspaces and manage workspaces under the "Workspaces" tab of the team's page. 53 | 54 | ![team-workspaces.png]({{base}}/docs/assets/imgs/codenvy/team-workspaces.png) 55 | 56 | ### Browse Workspaces 57 | - **Owner and Admins**: will see all the workspaces in the team. 58 | - **Developers**: will see only the workspaces they created or that they have been invited to. 59 | 60 | Click on a workspace to access its details or use it. Learn more about [workspaces]({{base}}{{site.links["ws-admin-intro"]}}). 61 | 62 | Alternatively, team workspaces can be accessed along with personal workspaces in the "Workspaces" page from Dashboard: 63 | ![team-list-workspaces.png]({{base}}/docs/assets/imgs/codenvy/team-list-workspaces.png) 64 | 65 | ### Create a Team Workspace 66 | 67 | All members of a team are able to create workspaces in a team by clicking the "Add Workspaces" button. Team workspaces are administered in the same way as personal workspaces. 68 | 69 | When you are member of multiple teams, you must select which team the workspace will be created in: 70 | ![team-create-workspace-select-team.png]({{base}}/docs/assets/imgs/codenvy/team-create-workspace-select-team.png) 71 | 72 | You always have the choice to keep your workspace private - just select "personal" under the team selector. 73 | 74 | Note that when you are using a team, resources come from the team owner's account and may be subject to [resource caps]({{base}}{{site.links["user-teams"]}}#manage-team-limits). 75 | 76 | Depending on the team settings, you may get error messages while trying to do certain action: 77 | - Restriction on workspace creation: The owner has set a limit on the total number of workspaces that can be created and this limit has been reached. 78 | - Restriction on workspace starting: The owner of the team has limited the number of workspaces that can run simultaneously in the team and this limit has been reached. 79 | 80 | ### Share a Workspace 81 | 82 | {% assign TODO="As a **team owner or admin**, you are able to share workspaces with all members of the team by selecting the "share with all team members" option.[TODO add snapshot when implem finished]" %} 83 | 84 | As a **team developer**, you can share workspaces with other team members by using the "Share" tab under the workspace's details. You can control which team members can access to the workspace. The wizard show you the team members that are not yet invited into the workspace. 85 | 86 | ![team-workspace-share.png]({{base}}/docs/assets/imgs/codenvy/team-workspace-share.png) 87 | 88 | ### Manage Workspaces 89 | Team workspaces can be managed by team owners, team admins or a team member if they created the specific workspace. 90 | 91 | To stop workspaces: 92 | ![team-stop-workspace.png]({{base}}/docs/assets/imgs/codenvy/team-stop-workspace.png) 93 | 94 | To remove workspaces, use the checkboxes to select a single or multiple workspaces. A delete button will appear in the header of the table: 95 | ![team-remove-workspaces.png]({{base}}/docs/assets/imgs/codenvy/team-remove-workspaces.png) 96 | 97 | # Team Administration 98 | 99 | ![team-settings.png]({{base}}/docs/assets/imgs/codenvy/team-settings.png) 100 | 101 | Team settings are visible to all members of the team, but only the team owner and admins are able to modify the settings. 102 | 103 | ## Rename a Team 104 | To rename a team, click in the "Name" textfield and start editing the name of the team. Once edited, the team name will automatically be saved and applied. When a team is renamed all members of the team will receive an email notification with the new team name. 105 | 106 | The name of the team is restricted to the following rules: 107 | - Only alphanumeric characters or a single "-" can be used 108 | - Spaces cannot be used in team names 109 | - Each team name must be unique within the Codenvy install 110 | 111 | ## Leave a Team 112 | **Action forbidden to**: Owner of the Team. 113 | 114 | ![team-leave.png]({{base}}/docs/assets/imgs/codenvy/team-leave.png){:style="width: 40%"} 115 | 116 | A team member can leave team by clicking "Leave" button. 117 | This action can't be reverted and user will not be able to access team's workspaces. 118 | 119 | ## Delete a Team 120 | **Action restricted to**: Owner and Admin of the Team. 121 | 122 | ![team-delete.png]({{base}}/docs/assets/imgs/codenvy/team-delete.png){:style="width: 40%"} 123 | 124 | To delete a team, click on "Delete" button. 125 | This action can't be reverted and all team's workspaces will be deleted. 126 | 127 | All members of the team will receive an email notification to inform about team deletion. 128 | 129 | ## Manage Team Limits 130 | By default, there are no resource limits applied to the team so team workspaces can use all the resources of the team owner's account. If a team owner wishes to set limits they have three options: 131 | - **Workspace Cap**: The maximum number of workspaces that can exist in the team. 132 | - **Running Workspace Cap**: The maximum number of workspaces which can run simultaneously in the team. 133 | - **Workspace RAM Cap**: The maximum RAM each single workspace can use in GB. 134 | 135 | Note that codenvy.io has a built-in workspace idle timeout of 10 minutes for free accounts (paid accounts receive a 4 hours timeout). Locally installed Codenvy instances default to a 6 hour idle timeout, but this can be set in the `codenvy.env`. 136 | 137 | ## Update Team Member Roles 138 | **Action restricted to**: Owner and Admins of the team. 139 | 140 | To edit the role of a team member click on the "Edit" button in the "Actions" column: 141 | ![team-edit-role-action.png]({{base}}/docs/assets/imgs/codenvy/team-edit-role-action.png) 142 | 143 | You'll get a popup where you can update the role of the selected member: 144 | ![team-edit-role.png]({{base}}/docs/assets/imgs/codenvy/team-edit-role.png) 145 | 146 | Click "Save" to confirm the update. 147 | 148 | 149 | ## Remove Team Members 150 | **Action restricted to**: Owner and Admins of the team. 151 | 152 | To remove a member from the team, you can click on the "Delete" button in the "Actions" column: 153 | ![team-remove-single-member.png]({{base}}/docs/assets/imgs/codenvy/team-remove-single-member.png) 154 | 155 | You'll get a confirmation popup, where you can validate or cancel your action. 156 | 157 | You can also select multiple members from the team, using the checkboxes. A delete button will appear in the header of the table: 158 | ![team-remove-members.png]({{base}}/docs/assets/imgs/codenvy/team-remove-members.png) 159 | 160 | The members that are removed from the team will receive an email notification. 161 | 162 | The invited unregistered users have an "Pending invitation" value in the INFO column and can also be updated and removed as common members: 163 | ![team-invited-users.png]({{base}}/docs/assets/imgs/codenvy/team-invited-users.png) 164 | -------------------------------------------------------------------------------- /src/main/_docs/user-guide/user-using-desktop-ides.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Using Desktop IDEs 4 | excerpt: "" 5 | layout: docs 6 | permalink: /:categories/using-desktop-ides/ 7 | --- 8 | {% include base.html %} 9 | # Standard SSH Connection 10 | It's possible to establish SSH connection between your desktop IDE and a remote Codenvy workspace. 11 | 12 | In Codenvy create a new workspace, open it in the IDE and import any project in there. On the Consoles panel click `Connect via SSH`, you will see the following instructions: 13 | 14 | ```shell 15 | You can connect your SSH client to 'default' with: 16 | 17 | [LINUX | OSX] 18 | ssh user@${hostname} -p ${port} [-i /path/to/your/private/ssh/key] 19 | 20 | [WINDOWS] 21 | putty -ssh -l user -P ${port} ${hostname} [-i /path/to/your/private/ssh/key] 22 | 23 | USERNAME: user 24 | PASSWORD: secret 25 | 26 | NOTES: 27 | 1. You can login with user / password, but it is not recommended. 28 | 2. Use an SSH key pair to securely authenticate. 29 | 3. You can generate new SSH key pairs at `Profile -> Preferences -> SSH -> Machine` 30 | 4. Or, you can upload your own public key. 31 | 5. You must restart your workspace for the keys to take affect. 32 | 6. You can verify your key by opening a terminal and viewing `/home/user/.ssh/authorized_keys` 33 | 34 | WINDOWS USERS: 35 | 1. Download Putty and add it to your %PATH% environment. 36 | 2. Use PuttyGen to convert SSH keys generated by Che to putty PPK files. 37 | 3. Use the Putty .ppk file as the key reference. 38 | ``` 39 | Follow the below steps to connect to a remote Codenvy workspace from the local IDE on Linux: 40 | 41 | 1. When in the Codenvy IDE, go to `Profile > Preferences > Machine > SSH` and upload your local **public** key there. Restart a workspace. 42 | 43 | 2. Open your local Terminal and execute `sshfs user@${hostname}:/projects /your/local/directory/ -p ${port}`, where ${port} is a random port from the ephemeral port range, to which 22 port is mapped (you can find it on the Consoles panel > SSH or at the Operations Perspective > Servers tab). This command will mount `/projects` folder to your local directory. 44 | 45 | 3. Check the local directory to verify if your Codenvy projects are there. 46 | 47 | 4. Open your favorite local IDE and import your Codenvy project. 48 | 49 | 5. Make some edits in the project. 50 | 51 | 6. Go to a Codenvy workspace to verify changes are there. 52 | 53 | [Video - SSH Export Eclipse IDE](https://www.youtube.com/watch?v=oWCPczMK-_8&feature=youtu.be) 54 | 55 | 56 | # Mount and Sync 57 | 58 | #### Beta 59 | This method uses a Docker container with a sync mechanism inside to keep the Codenvy workspace and local filesystems aligned. If going offline the Docker container will have to be stopped and then restarted when back online. If you experience issues please let us know at: https://github.com/codenvy/codenvy/issues. 60 | 61 | ##HOW 62 | We provide a Docker container which acts as a bridge between your workspace and the local host file system. Inside of the che-mount Docker container, we will create an sshfs connection to the remote workspace using your user name, password, and workspace port number. Inside of that Docker container, we then use unison, a high performance file system synchronizer to synchronize the contents of the remote workspace with a directory within the container. Your local host will then volume mount the synchronized directory, for which those files appear. The unison synchronizer is run every minute, and will capture both changes made locally on your host and any changes made in the remote workspace. You can perform a mount on any operating system that supports Docker. However, if you are on Windows using Boot2Docker, then you can only mount directories in `%userprofile%`. 63 | 64 | This particular approach is fast because your local IDE has local I/O performance for all file actions. The synchronizer runs in the background asynchronously, and synchronizes your local changes into the workspace. The reverse course is true as well. This asynchronous approach provides a non-blocking I/O performance that is essential. 65 | 66 | ##USE 67 | In the IDE, open the “Consoles” panel and press “SSH”. Here you will find information you will need: 68 | - The default user name / password 69 | - The IP of the codenvy server = `` in the Docker command below 70 | - The ephemeral port for SSH = `` in the Docker command below 71 | 72 | Capture all three of these items. 73 | ![ScreenShot2016-08-02at8.18.23AM.png](../../../docs/assets/imgs/codenvy/ScreenShot2016-08-02at8_18_23AM.png) 74 | Using Docker launch the `che-mount` container, pass in the information you captured from the SSH screen: 75 | 76 | ```shell 77 | # Launch the Che mount container with your Codenvy instance 78 | docker run --rm -it \ 79 | --cap-add SYS_ADMIN \ 80 | --device /dev/fuse \ 81 | --name codenvy-mount \ 82 | -v /c/Users/%USERNAME%/mount:/mnthost \ 83 | codenvy/che-mount 84 | 85 | # Verify directories in Docker container 86 | docker exec -ti che-mount sh 87 | >ls /mnthost 88 | >ls /mntssh 89 | >exit 90 | 91 | # Verify host directory 92 | bash 93 | > ls /c/Users/%USERNAME%/mount 94 | 95 | # where is the IP address your Docker daemon is bound to. 96 | # You can determine this IP by 97 | docker run - -rm - -net host \ 98 | alpine sh -c \ 99 | “ip a show " 100 | 101 | # where is ‘eth0’, or if using boot2docker, then ‘eth1’. 102 | ``` 103 | Once started the container will ask for the username and password. 104 | 105 | Once started you can connect your IDE to the mounted directory on your local filesystem. 106 | 107 | [Video - Mount Local Desktop Directory to Codenvy IDE](https://www.youtube.com/watch?v=WmBYF7xNLR8&feature=youtu.be) 108 | 109 | 110 | # Mount Without Sync 111 | If you just want to mount the remote workspace to a local directory, you can do so with sshfs. Mounting will allow all file system writes to take place immediately. However, all changes are sent over the network. If the workspace and desktop IDE are both on the same machine or local network, then this method may be preferred. However, the greater the network latency, the slower the sync will be. 112 | 113 | You can still use your local IDE with the local file mount. You may want a local file mount instead of a sync if you want to eliminate the risk of any synchronization conflicts from clients accessing the same file system locally and remotely within the workspace at the same time. 114 | 115 | Windows users can use sshfs by installing free software [win-sshfs](https://code.google.com/archive/p/win-sshfs/) for Window versions up to 7 or by purchasing software such as [SFTP Net Drive](https://www.eldos.com/) for Windows 8.0, 8.1 or 10. Mac users can use sshfs by installing free open source software [FUSE](https://osxfuse.github.io/) and associated sshfs extension. Linux has sshfs built into it kernel so most Linux distributions require a small sshfs package to be installed. 116 | 117 | ```shell 118 | # On Linux & Mac - first install sshfs. Then: 119 | sshfs -p user@:/projects /mnt/che 120 | ``` 121 | -------------------------------------------------------------------------------- /src/main/_docs/white-labels/labels-custom-assemblies.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Custom Assemblies 4 | excerpt: "Build your own Codenvy binaries" 5 | layout: docs 6 | permalink: /:categories/custom-assemblies/ 7 | --- 8 | {% include base.html %} 9 | 10 | You can create new assemblies (binaries) for Codenvy. An assembly can contain Eclipse Che extensions, custom stacks, and templates that appear in the dashboard and IDE. You create the binary from Codenvy source code and then use the embedded Puppet system to update Codenvy with your new binary. Your binary can optionally include Eclipse Che extensions. [Eclipse Che extensions](http://www.eclipse.org/che/docs) can be created as part of your Codenvy project, or previously compiled and uploaded to maven. 11 | 12 | Codenvy runs as a set of distributed Docker containers. The core runtime is a Codenvy server that runs on a Tomcat instance in the Docker container. This process shows you how to build a new set of binaries for deployment into Tomcat and then how to restart Codenvy's distributed services to make use of your new binary. 13 | 14 | You will need to have a valid Eclipse Che development environment setup, which requires Java and Maven installed in order to build assemblies. 15 | 16 | # Clone Codenvy Repository 17 | Get the Codenvy source code repository and checkout the proper version that you would like to base your assembly off of. 18 | 19 | ```shell 20 | git clone https://github.com/codenvy/codenvy 21 | ``` 22 | 23 | Select the version on which perform the change. For example for a custom 5.0.0 version 24 | ```shell 25 | $ git checkout -b custom-assembly 5.0.0 26 | ``` 27 | 28 | # Customize the Assembly 29 | You can now make source code changes to resource files to change the branding. Or, if you want to add or remove different Eclipse Che plugins, you will modify Codenvy's dependency and assembly files. 30 | 31 | For example, let's remove the Node.JS GDB debugger from Codenvy. 32 | 33 | ``` 34 | $ cd assembly/onpremises-ide-compiling-war-ide/ 35 | ``` 36 | 37 | In this folder, you will add or remove dependencies from the `` section of `pom.xml` and edit ` src/main/resources/com/codenvy/ide/IDE.gwt.xml `to add or remove plug-ins from the IDE itself. 38 | 39 | In the example, let remove nodejs gdb debugger dependenvy from `pom.xml` and remove NodeJS debugger from `IDE.gwt.xml` file. Here is diff output of both files: 40 | 41 | ``` 42 | diff --git a/assembly/onpremises-ide-compiling-war-ide/pom.xml b/assembly/onpremises-ide-compiling-war-ide/pom.xml 43 | index 7a6c713..87be61e 100644 44 | --- a/assembly/onpremises-ide-compiling-war-ide/pom.xml 45 | +++ b/assembly/onpremises-ide-compiling-war-ide/pom.xml 46 | @@ -250,10 +250,6 @@ 47 | 48 | 49 | org.eclipse.che.plugin 50 | - che-plugin-nodejs-debugger-ide 51 | - 52 | - 53 | - org.eclipse.che.plugin 54 | che-plugin-nodejs-lang-ide 55 | 56 | 57 | 58 | diff --git a/assembly/onpremises-ide-compiling-war-ide/src/main/resources/com/codenvy/ide/IDE.gwt.xml b/assembly/onpremises-ide-compiling-war-ide/src/main/resources/com/codenvy/ide/IDE.gwt.xml 59 | index bed45eb..c97119a 100644 60 | --- a/assembly/onpremises-ide-compiling-war-ide/src/main/resources/com/codenvy/ide/IDE.gwt.xml 61 | +++ b/assembly/onpremises-ide-compiling-war-ide/src/main/resources/com/codenvy/ide/IDE.gwt.xml 62 | @@ -47,7 +47,6 @@ 63 | 64 | 65 | 66 | - 67 | 68 | 69 | 70 | ``` 71 | 72 | # Build Your Assembly 73 | 74 | ```shell 75 | cd assembly 76 | mvn clean install 77 | ``` 78 | 79 | # Run Codenvy With Your Assembly 80 | You will use the Codenvy CLI as you normally would with a single additional. Add a single volume mount to `:/repo` that contains the path to where the Codenvy git repo resides. When you start Codenvy with this extra volume mount, the CLI will look inside the repo for a built assembly and use its binaries instead of those included within the Docker image. 81 | 82 | ``` 83 | docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock \ 84 | -v :/data \ 85 | -v $(pwd):/repo codenvy/cli:5.0.0 start 86 | ``` 87 | 88 | # Add Custom Eclipse Che Extensions 89 | You can create bundles that include your own Eclipse Che extensions, stacks and templates. You will need to have build those extensions and compiled them into JAR and ZIP files. Eclipse Che has docs for [writing extensions and customizing stacks](https://www.eclipse.org/che/docs/plugins/introduction/index.html). 90 | 91 | Maven's default enforcement rules require that every extension that you add be listed as a dependency in Codenvy's parent `pom.xml`. You can skip enforcement by using `-Denforcer.skip=true` argument when performing a `mvn clean install`. 92 | 93 | Beyond this mandatory requirement, you may have to add your dependencies to additional locations depending upon the type of extension that you are adding (server-side, workspace extension, IDE extensions). 94 | 95 | First, add the dependency in the `` section of Codenvy's parent `pom.xml` located in the root of the repostiory: 96 | 97 | ```xml 98 | 99 | {groupid-of-extension} 100 | {artifactid-of-extension} 101 | ${project.version} 102 | 103 | ``` 104 | After adding a dependency, you need to sort maven with `mvn sortpom:sort`. You do not have to provide the `` tag. Maven will pull the version of your extension that matches the version of Codenvy. 105 | 106 | Second, if your extension is an IDE extension, add your extension as a dependency to the IDE: 107 | 108 | ```xml 109 | 110 | {groupid-of-extension} 111 | {artifactid-of-extension} 112 | ${project.version} 113 | 114 | ``` 115 | 116 | ```xml 117 | 118 | ``` 119 | Third, if your extension is a server-side workspace extension, add your extension as a dependency to the workspace master: 120 | 121 | ```xml 122 | 123 | {groupid-of-extension} 124 | {artifactid-of-extension} 125 | ${project.version} 126 | 127 | ``` 128 | If you deployed your server-side extension as a REST service, it will then be available at `/api/{your-custom-path}` 129 | 130 | Fourth, if your extension is a server-side workspace agent extension, which is designed to run inside workspaces, then add your extension as a dependency to the workspace agent: 131 | 132 | ```xml 133 | 134 | {groupid-of-extension} 135 | {artifactid-of-extension} 136 | ${project.version} 137 | 138 | ``` 139 | -------------------------------------------------------------------------------- /src/main/_docs/white-labels/labels-introduction-white-labels.md: -------------------------------------------------------------------------------- 1 | --- 2 | tag: [ "codenvy" ] 3 | title: Introduction 4 | excerpt: "White labeling is for embedding, distributing, or hosting Codenvy as part of another brand." 5 | layout: docs 6 | permalink: /:categories/introduction-white-labels/ 7 | --- 8 | {% include base.html %} 9 | A Codenvy white label is the ability to embed Codenvy within another product, or to customize Codenvy with your own extensions or brand identity. You may add extensions for the IDE or workspaces, remove default extensions (such as the Node.JS debugger), modify the user interface and create custom integrations to other tools. 10 | 11 | # Extending Codenvy 12 | White label licensees often wish to add new features to Codenvy. This can be done by creating Eclipse Che extensions and plugins which will work with Codenvy or Eclipse Che. Eclipse Che docs include an extensive section on [building extensions and plugins](https://www.eclipse.org/che/docs). 13 | 14 | ## Creating Custom Assemblies 15 | If you create custom Eclipse Che extensions that you want to deploy within Codenvy, you will need to create a custom assembly {%assign docs_todo="need location or add"%}. A custom assembly is a new Codenvy binary that is runnable by our Docker infrastructure. It's simple and easy to build one. 16 | 17 | # Modifying the User Interface 18 | It's possible to customize nearly any portion of the user interface, however there are several customizations that are commonly requested. 19 | 20 | ## Changing the Codenvy Logo 21 | All branding is located in `dashboard/src/assets/branding`: 22 | - `codenvy-logo.svg` is used in loading screens. 23 | - `codenvy-logo-text.svg` is displayed in the left navbar's menu at the top. 24 | 25 | To change the logo replace those two files with your organization's logo (match the size of the existing codenvy.svg files to avoid resizing issues). Then set the links to them in product.json {%assign docs_todo="need location or add"%} file: 26 | 27 | ```json 28 | "logoFile": "my-corp-logo.svg\n"logoTextFile": "my-corp-logo-text.svg" 29 | ``` 30 | The `product.json` file is also where you can change the Codenvy title and Favicon files. 31 | 32 | ## Changing the Help Links 33 | The Help menu button in the footer can be changed in the `dashboard/src/assets/branding/product.json` file: 34 | 35 | ```json 36 | "helpPath": "https://codenvy.com/support/\n"helpTitle": "Help" 37 | ``` 38 | 39 | ## Removing the Codenvy Loader 40 | To remove the loader from the splash screen, delete the appropriate lines in: 41 | - [index html, line 64](https://github.com/codenvy/codenvy/blob/master/dashboard/src/index.html#L64) 42 | - [load-factory.html, line 66](https://github.com/codenvy/codenvy/blob/master/dashboard/src/app/factories/load-factory/load-factory.html#L66) 43 | 44 | ## Changing the Left Navbar 45 | The colors of the navigation menu are configured in [navbar-theme.styl](https://github.com/codenvy/codenvy/blob/master/dashboard/src/app/navbar/navbar-theme.styl): 46 | 47 | ```json 48 | $onprem-navbar-backgroud-color #background color of the menu 49 | $onprem-navbar-active-menu-background-color #background color of selected menu item 50 | $onprem-navbar-border-right-color #color of the right border of selected item 51 | $onprem-navbar-menu-icon-color #menu icon’s color 52 | $onprem-navbar-active-menu-icon-color #selected menu item's color 53 | $onprem-navbar-menu-text-color - #text color of menu item 54 | $onprem-navbar-active-menu-text-color - #text color of selected menu item 55 | $onprem-navbar-menu-number-color #color of number in brackets 56 | $onprem-navbar-recent-workspaces-stopped-color - #recent workspaces items color in stopped state\ 57 | ``` 58 | 59 | ## Removing the "Make a Wish" Widget 60 | This widget is configured to send emails to Codenvy with the comments written by users. To remove this widget in the footer, remove the `che-support-email` attribute in the `che-footer element` in the index.html: 61 | 62 | ```html 63 | #remove this section 64 | 65 | ``` 66 | Alternatively you can leave the widget but change the link to point to your own organization's email by changing the `helpPath` and `supportEmail` attributes in the product.json {%assign docs_todo="need location or add"%} file. 67 | -------------------------------------------------------------------------------- /src/main/_includes/analytics.html: -------------------------------------------------------------------------------- 1 | {% if site.gauges_id %} 2 | 3 | 16 | {% endif %} 17 | 18 | {% if site.google_analytics_id %} 19 | 20 | 30 | {% endif %} 31 | -------------------------------------------------------------------------------- /src/main/_includes/anchor_links.html: -------------------------------------------------------------------------------- 1 | 34 | -------------------------------------------------------------------------------- /src/main/_includes/base.html: -------------------------------------------------------------------------------- 1 | {% assign base = '' %} 2 | {% assign depth = page.url | split: '/' | size | minus: 1 %} 3 | {% if depth <= 1 %}{% assign base = '..' %} 4 | {% elsif depth == 2 %}{% assign base = '../..' %} 5 | {% elsif depth == 3 %}{% assign base = '../../..' %} 6 | {% elsif depth == 4 %}{% assign base = '../../../..' %}{% endif %} 7 | {% assign base_che = '' %} -------------------------------------------------------------------------------- /src/main/_includes/default.html: -------------------------------------------------------------------------------- 1 | {% assign base = '' %} 2 | {% assign depth = page.url | split: '/' | size | minus: 1 %} 3 | {% if depth <= 1 %}{% assign base = '..' %} 4 | {% elsif depth == 2 %}{% assign base = '../..' %} 5 | {% elsif depth == 3 %}{% assign base = '../../..' %} 6 | {% elsif depth == 4 %}{% assign base = '../../../..' %} 7 | {% endif %} 8 | {% include top.html %} 9 | 10 | 11 | {% include header.html %} 12 | 13 | {{ content }} 14 | 15 | {% include footer.html %} 16 | {% include anchor_links.html %} 17 | {% include analytics.html %} 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/main/_includes/docs_contents.html: -------------------------------------------------------------------------------- 1 |
2 | 18 |
19 | -------------------------------------------------------------------------------- /src/main/_includes/docs_contents_mobile.html: -------------------------------------------------------------------------------- 1 |
2 | 16 |
17 | -------------------------------------------------------------------------------- /src/main/_includes/docs_option.html: -------------------------------------------------------------------------------- 1 | {% include base.html %} 2 |
    3 | {% for item in include.items %} 4 | {% assign item_url = item | prepend:"/docs/" | append:"/" %} 5 | {% assign item_url = item_url | replace_first:'/docs/getting-started/','/docs/' %} 6 | {% assign item_url = item_url | replace_first:'/start-','/getting-started/' | replace_first:'/admin-','/admin-guide/' %} 7 | {% assign item_url = item_url | replace_first:'/developer-','/developer-guide/' | replace_first:'/integration-','/integration-guide/' %} 8 | {% assign item_url = item_url | replace_first:'/tutorial-','/tutorials/' | replace_first:'/user-','/user-guide/' %} 9 | {% assign item_url = item_url | replace_first:'/labels-','/white-labels/' | replace_first:'/factory-','/factory/' %} 10 | {% assign item_url = item_url | replace_first:'/devops-','/getting-started/' | replace_first:'/ide-','/user-guide/' %} 11 | {% assign p = site.documents | where:"url", item_url | first %} 12 | {% if p != null %} 13 | 14 | {% else %} 15 | 16 | {% endif %} 17 | {% endfor %} 18 |
19 | -------------------------------------------------------------------------------- /src/main/_includes/docs_ul.html: -------------------------------------------------------------------------------- 1 | {% include base.html %} 2 |
    3 | {% for item in include.items %} 4 | {% assign item_url = item | prepend:"/docs/" | append:"/" %} 5 | {% assign item_url = item_url | replace_first:'/docs/getting-started/','/docs/' %} 6 | {% assign item_url = item_url | replace_first:'/start-','/getting-started/' | replace_first:'/admin-','/admin-guide/' %} 7 | {% assign item_url = item_url | replace_first:'/developer-','/developer-guide/' | replace_first:'/integration-','/integration-guide/' %} 8 | {% assign item_url = item_url | replace_first:'/tutorial-','/tutorials/' | replace_first:'/user-','/user-guide/' %} 9 | {% assign item_url = item_url | replace_first:'/labels-','/white-labels/' | replace_first:'/factory-','/factory/' %} 10 | {% assign item_url = item_url | replace_first:'/devops-','/getting-started/' | replace_first:'/ide-','/user-guide/' %} 11 | {% assign p = site.documents | where:"url", item_url | first %} 12 | {% if p != null %} 13 |
  • {{ p.title }}
  • 14 | {% else %} 15 |
  • Error Generating Page Link. Contact Maintainer.
  • 16 | {% endif %} 17 | {% endfor %} 18 |
19 | -------------------------------------------------------------------------------- /src/main/_includes/error.html: -------------------------------------------------------------------------------- 1 | {% include top.html %} 2 | 3 | 4 |
5 |
6 |
7 |

8 | 9 | Jekyll 10 | Jekyll Logo 11 | 12 |

13 |
14 |
15 |
16 | 17 | {{ content }} 18 | 19 | {% include anchor_links.html %} 20 | {% include analytics.html %} 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/_includes/footer.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 |
7 |

8 | Proudly hosted by 9 | 10 | GitHub • Social coding 11 | 12 |

13 |
14 |
15 |
16 | -------------------------------------------------------------------------------- /src/main/_includes/header-github-io.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | 12 | 14 |
15 |
16 | -------------------------------------------------------------------------------- /src/main/_includes/header.html: -------------------------------------------------------------------------------- 1 | {% include base.html %} 2 | 3 |
4 | 7 |
8 | 14 | 17 |
18 |
19 | -------------------------------------------------------------------------------- /src/main/_includes/news.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |
7 | 8 | {% include news_contents_mobile.html %} 9 | 10 |
11 | {{ content }} 12 |
13 | 14 | {% include news_contents.html %} 15 | 16 |
17 | 18 |
19 |
20 | -------------------------------------------------------------------------------- /src/main/_includes/news_contents.html: -------------------------------------------------------------------------------- 1 |
2 | 33 |
34 | -------------------------------------------------------------------------------- /src/main/_includes/news_contents_mobile.html: -------------------------------------------------------------------------------- 1 |
2 | 11 |
12 | -------------------------------------------------------------------------------- /src/main/_includes/news_item.html: -------------------------------------------------------------------------------- 1 | 26 | -------------------------------------------------------------------------------- /src/main/_includes/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |
7 | 8 |
9 |
10 |

{{ page.title }}

11 | {{ content }} 12 |
13 |
14 | 15 |
16 | 17 |
18 |
19 | -------------------------------------------------------------------------------- /src/main/_includes/primary-nav-items.html: -------------------------------------------------------------------------------- 1 |
    2 | {% unless page.url contains '/docs/tutorials/' or page.url contains '/docs/openshift/' or page.url contains '/docs/artik/' %} 3 | {% assign docs_general = true %} 4 | {% endunless %} 5 |
  • 6 | Docs 7 |
  • 8 |
  • 9 | Tutorials 10 |
  • 11 |
  • 12 | View on GitHub 13 |
  • 14 |
15 | -------------------------------------------------------------------------------- /src/main/_includes/section_nav.html: -------------------------------------------------------------------------------- 1 | {% comment %} 2 | Map grabs the doc sections, giving us an array of arrays. Join, flattens all 3 | the items to a comma delimited string. Split turns it into an array again. 4 | {% endcomment %} 5 | {% if page.layout == 'tutorials' %} 6 | {% assign layout_docs = site.data.tutorials %} 7 | {% else %} 8 | {% assign layout_docs = site.data.docs %} 9 | {% endif %} 10 | {% assign docs = layout_docs | map: 'docs' | join: ',' | split: ',' %} 11 | 12 | {% comment %} 13 | Because this is built for every page, lets find where we are in the ordered 14 | document list by comparing url strings. Then if there's something previous or 15 | next, lets build a link to it. 16 | {% endcomment %} 17 | 18 | {% for document in docs %} 19 | {% assign document_url = document | prepend:"/docs/" | append:"/" %} 20 | {% if document_url == page.url %} 21 |
22 |
23 | {% if forloop.first %} 24 | Back 25 | {% else %} 26 | {% assign previous = forloop.index0 | minus: 1 %} 27 | {% assign previous_page = docs[previous] | prepend:"/docs/" | append:"/" %} 28 | 29 | {% endif %} 30 |
31 |
32 | {% if forloop.last %} 33 | Next 34 | {% else %} 35 | {% assign next = forloop.index0 | plus: 1 %} 36 | {% assign next_page = docs[next] | prepend:"/docs/" | append:"/" %} 37 | 38 | {% endif %} 39 |
40 |
41 |
42 | {% break %} 43 | {% endif %} 44 | {% endfor %} -------------------------------------------------------------------------------- /src/main/_includes/top.html: -------------------------------------------------------------------------------- 1 | {% include base.html %} 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /src/main/_layouts/default.html: -------------------------------------------------------------------------------- 1 | {% include base.html %} 2 | 3 | 4 | 5 | 21 | {% include top.html %} 22 | 23 | 24 | {% include header.html %} 25 | 26 | {{ content }} 27 | 28 | {% include anchor_links.html %} 29 | {% include analytics.html %} 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/main/_layouts/docs.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |
7 | 8 | {% include docs_contents_mobile.html %} 9 | 10 |
11 |
12 |
13 | {% if page.tags[0] == "eclipse" %} 14 |  Improve this page 15 | {% else %} 16 |  Improve this page 17 | {% endif %} 18 |
19 |
20 |

{{ page.title }}

21 |
22 |
23 |
24 | {{ content }} 25 |
26 |
27 | 28 | {% include docs_contents.html %} 29 | 30 |
31 | 32 |
33 |
34 | -------------------------------------------------------------------------------- /src/main/_layouts/error.html: -------------------------------------------------------------------------------- 1 | {% include top.html %} 2 | 3 | 4 |
5 |
6 |
7 |

8 | 9 | Jekyll 10 | Jekyll Logo 11 | 12 |

13 |
14 |
15 |
16 | 17 | {{ content }} 18 | 19 | {% include anchor_links.html %} 20 | {% include analytics.html %} 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/_layouts/github-io.html: -------------------------------------------------------------------------------- 1 | {% assign base = '' %} 2 | {% include top.html %} 3 | 4 | 5 | {% include header-github-io.html %} 6 | 7 |
8 |
9 | 10 |
11 |
12 | 15 |
16 |

{{ page.title }}

17 |
18 |
19 |
20 | {{ content }} 21 |
22 |
23 | 24 | 25 |
26 | 27 |
28 |
29 | 30 | ======= 31 | 32 | ======= 33 | {% include anchor_links.html %} 34 | {% include analytics.html %} 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/main/_layouts/news.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |
7 | 8 | {% include news_contents_mobile.html %} 9 | 10 |
11 | {{ content }} 12 |
13 | 14 | {% include news_contents.html %} 15 | 16 |
17 | 18 |
19 |
20 | -------------------------------------------------------------------------------- /src/main/_layouts/news_item.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: news 3 | --- 4 | 5 | 28 | -------------------------------------------------------------------------------- /src/main/_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |
7 | 8 |
9 |
10 |

{{ page.title }}

11 | {{ content }} 12 |
13 |
14 | 15 |
16 | 17 |
18 |
19 | -------------------------------------------------------------------------------- /src/main/_layouts/tutorials.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 |
7 | 8 | {% include docs_contents_mobile.html %} 9 | 10 |
11 |
12 |
13 | {% if page.tags[1] != null %} 14 |  Improve this page 15 | {% else %} 16 |  Improve this page 17 | {% endif %} 18 |
19 |
20 |

{{ page.title }}

21 |
22 |
23 |
24 | {{ content }} 25 | {% include section_nav.html %} 26 |
27 |
28 | 29 | {% include docs_contents.html %} 30 | 31 |
32 | 33 |
34 |
35 | -------------------------------------------------------------------------------- /src/main/_plugins/links.rb: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2012-2017 Red Hat, Inc. 3 | # All rights reserved. This program and the accompanying materials 4 | # are made available under the terms of the Eclipse Public License v1.0 5 | # which accompanies this distribution, and is available at 6 | # http://www.eclipse.org/legal/epl-v10.html 7 | # 8 | # Contributors: 9 | # Red Hat, Inc. - initial API and implementation 10 | # 11 | 12 | module Reading 13 | class Generator < Jekyll::Generator 14 | def generate(site) 15 | begin 16 | docs = site.docs_to_write 17 | entries = {} 18 | collections = {} 19 | 20 | site.collections["docs"].filtered_entries.each do |entry| 21 | page = "" 22 | site.config["defaults"].each do |default| 23 | scope = default["scope"] 24 | path = scope["path"] 25 | full_path = "_docs/" + entry 26 | if full_path.include? path 27 | value = default["values"] 28 | categories = value["categories"] 29 | categories.each do |category| 30 | page=page+"/"+category 31 | end 32 | page=page+"/" 33 | end 34 | if full_path.include? "assets/" 35 | image_name = entry.split('/').pop 36 | collections[image_name]="/docs/"+entry 37 | end 38 | end 39 | 40 | entries[entry]=page 41 | end 42 | 43 | site.config["collections"].each do |collection| 44 | if collection[0] != "posts" 45 | collections=collections.merge(get_col(site,collection[0],entries)) 46 | end 47 | end 48 | #puts collections 49 | site.config["links"] = collections.merge(site.data["links"]) 50 | rescue 51 | red = "\033[0;31m" 52 | puts red + "Jekyll> There is an error in the ruby plugin file _plugins/links.rb." 53 | puts red + "Jekyll> Check collection files such ass 'docs.yml' and 'tutorials.yml' under _data/ folder are formatted correctly." 54 | puts "" 55 | raise 56 | end 57 | end 58 | def get_col(site,col_name, entries) 59 | collections = {} 60 | hash1 = site.data 61 | hash1.each do |hash2| 62 | hash3 = hash1[col_name] 63 | hash3.each do |hash4| 64 | 65 | files = hash4[col_name] 66 | files.each do |file| 67 | parse = file.split('-') 68 | parse.shift 69 | parse = parse.join('-') 70 | entries.keys.any? {|k| 71 | if k.include? file 72 | collections[file]=entries[k]+parse+"/index.html" 73 | end 74 | } 75 | end 76 | end 77 | end 78 | return collections 79 | end 80 | end 81 | end 82 | -------------------------------------------------------------------------------- /src/main/_sass/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/_sass/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .#{$fa-css-prefix}-pull-left { float: left; } 11 | .#{$fa-css-prefix}-pull-right { float: right; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .#{$fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/_sass/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/_sass/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /src/main/_sass/_font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /src/main/_sass/_gridism.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * Gridism 3 | * A simple, responsive, and handy CSS grid by @cobyism 4 | * https://github.com/cobyism/gridism 5 | */ 6 | 7 | /* Preserve some sanity */ 8 | .grid, 9 | .unit { 10 | -webkit-box-sizing: border-box; 11 | -moz-box-sizing: border-box; 12 | box-sizing: border-box; 13 | } 14 | 15 | /* Set up some rules to govern the grid */ 16 | .grid { 17 | display: block; 18 | clear: both; 19 | } 20 | .grid .unit { 21 | float: left; 22 | width: 100%; 23 | padding: 10px; 24 | } 25 | 26 | /* This ensures the outer gutters are equal to the (doubled) inner gutters. */ 27 | .grid .unit:first-child { padding-left: 20px; } 28 | .grid .unit:last-child { padding-right: 20px; } 29 | 30 | /* Nested grids already have padding though, so let's nuke it */ 31 | .unit .unit:first-child { padding-left: 0; } 32 | .unit .unit:last-child { padding-right: 0; } 33 | .unit .grid:first-child > .unit { padding-top: 0; } 34 | .unit .grid:last-child > .unit { padding-bottom: 0; } 35 | 36 | /* Let people nuke the gutters/padding completely in a couple of ways */ 37 | .no-gutters .unit, 38 | .unit.no-gutters { 39 | padding: 0 !important; 40 | } 41 | 42 | /* Wrapping at a maximum width is optional */ 43 | .wrap .grid, 44 | .grid.wrap { 45 | max-width: 1400px; 46 | margin: 0 auto; 47 | } 48 | 49 | /* Width classes also have shorthand versions numbered as fractions 50 | * For example: for a grid unit 1/3 (one third) of the parent width, 51 | * simply apply class="w-1-3" to the element. */ 52 | .grid .whole, .grid .w-1-1 { width: 100%; } 53 | .grid .half, .grid .w-1-2 { width: 50%; } 54 | .grid .one-third, .grid .w-1-3 { width: 33.3332%; } 55 | .grid .two-thirds, .grid .w-2-3 { width: 66.6665%; } 56 | .grid .one-quarter, 57 | .grid .one-fourth, .grid .w-1-4 { width: 25%; } 58 | .grid .three-quarters, 59 | .grid .three-fourths, .grid .w-3-4 { width: 75%; } 60 | .grid .one-fifth, .grid .w-1-5 { width: 20%; } 61 | .grid .two-fifths, .grid .w-2-5 { width: 40%; } 62 | .grid .three-fifths, .grid .w-3-5 { width: 60%; } 63 | .grid .four-fifths, .grid .w-4-5 { width: 80%; } 64 | .grid .golden-small, .grid .w-g-s { width: 38.2716%; } /* Golden section: smaller piece */ 65 | .grid .golden-large, .grid .w-g-l { width: 61.7283%; } /* Golden section: larger piece */ 66 | 67 | /* Clearfix after every .grid */ 68 | .grid { 69 | *zoom: 1; 70 | } 71 | .grid:before, .grid:after { 72 | display: table; 73 | content: ""; 74 | line-height: 0; 75 | } 76 | .grid:after { 77 | clear: both; 78 | } 79 | 80 | /* Utility classes */ 81 | .align-center { text-align: center; } 82 | .align-left { text-align: left; } 83 | .align-right { text-align: right; } 84 | .pull-left { float: left; } 85 | .pull-right { float: right; } 86 | 87 | /* A property for a better rendering of images in units: in 88 | this way bigger pictures are just resized if the unit 89 | becomes smaller */ 90 | .unit img { 91 | max-width: 100%; 92 | height: auto; 93 | } 94 | 95 | /* Responsive Stuff */ 96 | @media screen and (max-width: 568px) { 97 | /* Stack anything that isn't full-width on smaller screens 98 | and doesn't provide the no-stacking-on-mobiles class */ 99 | .grid:not(.no-stacking-on-mobiles) > .unit { 100 | width: 100% !important; 101 | padding-left: 20px; 102 | padding-right: 20px; 103 | } 104 | .unit .grid .unit { 105 | padding-left: 0px; 106 | padding-right: 0px; 107 | } 108 | 109 | /* Sometimes, you just want to be different on small screens */ 110 | .center-on-mobiles { 111 | text-align: center !important; 112 | } 113 | .hide-on-mobiles { 114 | display: none !important; 115 | } 116 | } 117 | 118 | /* Expand the wrap a bit further on larger screens */ 119 | @media screen and (min-width: 1180px) { 120 | .wider .grid, 121 | .grid.wider { 122 | max-width: 1180px; 123 | margin: 0 auto; 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /src/main/_sass/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /src/main/_sass/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/_sass/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin box-shadow($shadow...) { 2 | -webkit-box-shadow: $shadow; 3 | -moz-box-shadow: $shadow; 4 | box-shadow: $shadow; 5 | } 6 | 7 | @mixin border-radius($radius...) { 8 | -webkit-border-radius: $radius; 9 | -moz-border-radius: $radius; 10 | border-radius: $radius; 11 | } 12 | 13 | @mixin border-top-left-radius($radius...) { 14 | -webkit-border-top-left-radius: $radius; 15 | -moz-border-radius-topleft: $radius; 16 | border-top-left-radius: $radius; 17 | } 18 | 19 | @mixin border-top-right-radius($radius...) { 20 | -webkit-border-top-right-radius: $radius; 21 | -moz-border-radius-topright: $radius; 22 | border-top-right-radius: $radius; 23 | } 24 | 25 | @mixin transition($transition...) { 26 | -webkit-transition: $transition; 27 | -moz-transition: $transition; 28 | -o-transition: $transition; 29 | transition: $transition; 30 | } 31 | 32 | @mixin user-select($select...) { 33 | -webkit-user-select: $select; /* Chrome all / Safari all */ 34 | -moz-user-select: $select; /* Firefox all */ 35 | -ms-user-select: $select; /* IE 10+ */ 36 | -o-user-select: $select; 37 | user-select: $select; 38 | } 39 | 40 | @mixin fa-icon() { 41 | display: inline-block; 42 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 43 | font-size: inherit; // can't have font-size inherit on line above, so need to override 44 | text-rendering: auto; // optimizelegibility throws things off #1094 45 | -webkit-font-smoothing: antialiased; 46 | -moz-osx-font-smoothing: grayscale; 47 | 48 | } 49 | 50 | @mixin fa-icon-rotate($degrees, $rotation) { 51 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); 52 | -webkit-transform: rotate($degrees); 53 | -ms-transform: rotate($degrees); 54 | transform: rotate($degrees); 55 | } 56 | 57 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 58 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); 59 | -webkit-transform: scale($horiz, $vert); 60 | -ms-transform: scale($horiz, $vert); 61 | transform: scale($horiz, $vert); 62 | } 63 | 64 | -------------------------------------------------------------------------------- /src/main/_sass/_normalize.scss: -------------------------------------------------------------------------------- 1 | /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none} 2 | -------------------------------------------------------------------------------- /src/main/_sass/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot'), 7 | url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff') format('woff'), 9 | url('#{$fa-font-path}/fontawesome-webfont.ttf') format('truetype'), 10 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 11 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 12 | font-weight: normal; 13 | font-style: normal; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/_sass/_pygments.scss: -------------------------------------------------------------------------------- 1 | .highlight { 2 | .hll { background-color: #ffffcc } 3 | .c { color: #87ceeb} /* Comment */ 4 | .err { color: #ffffff} /* Error */ 5 | .g { color: #ffffff} /* Generic */ 6 | .k { color: #f0e68c} /* Keyword */ 7 | .l { color: #ffffff} /* Literal */ 8 | .n { color: #ffffff} /* Name */ 9 | .o { color: #ffffff} /* Operator */ 10 | .x { color: #ffffff} /* Other */ 11 | .p { color: #ffffff} /* Punctuation */ 12 | .cm { color: #87ceeb} /* Comment.Multiline */ 13 | .cp { color: #cd5c5c} /* Comment.Preproc */ 14 | .c1 { color: #87ceeb} /* Comment.Single */ 15 | .cs { color: #87ceeb} /* Comment.Special */ 16 | .gd { color: #0000c0; font-weight: bold; background-color: #008080 } /* Generic.Deleted */ 17 | .ge { color: #c000c0; text-decoration: underline} /* Generic.Emph */ 18 | .gr { color: #c0c0c0; font-weight: bold; background-color: #c00000 } /* Generic.Error */ 19 | .gh { color: #cd5c5c} /* Generic.Heading */ 20 | .gi { color: #ffffff; background-color: #0000c0 } /* Generic.Inserted */ 21 | span.go { color: #add8e6; font-weight: bold; background-color: #4d4d4d } /* Generic.Output, qualified with span to prevent applying this style to the Go language, see #1153. */ 22 | .gp { color: #ffffff} /* Generic.Prompt */ 23 | .gs { color: #ffffff} /* Generic.Strong */ 24 | .gu { color: #cd5c5c} /* Generic.Subheading */ 25 | .gt { color: #c0c0c0; font-weight: bold; background-color: #c00000 } /* Generic.Traceback */ 26 | .kc { color: #f0e68c} /* Keyword.Constant */ 27 | .kd { color: #f0e68c} /* Keyword.Declaration */ 28 | .kn { color: #f0e68c} /* Keyword.Namespace */ 29 | .kp { color: #f0e68c} /* Keyword.Pseudo */ 30 | .kr { color: #f0e68c} /* Keyword.Reserved */ 31 | .kt { color: #bdb76b} /* Keyword.Type */ 32 | .ld { color: #ffffff} /* Literal.Date */ 33 | .m { color: #ffffff} /* Literal.Number */ 34 | .s { color: #ffffff} /* Literal.String */ 35 | .na { color: #ffffff} /* Name.Attribute */ 36 | .nb { color: #ffffff} /* Name.Builtin */ 37 | .nc { color: #ffffff} /* Name.Class */ 38 | .no { color: #ffa0a0} /* Name.Constant */ 39 | .nd { color: #ffffff} /* Name.Decorator */ 40 | .ni { color: #ffdead} /* Name.Entity */ 41 | .ne { color: #ffffff} /* Name.Exception */ 42 | .nf { color: #ffffff} /* Name.Function */ 43 | .nl { color: #ffffff} /* Name.Label */ 44 | .nn { color: #ffffff} /* Name.Namespace */ 45 | .nx { color: #ffffff} /* Name.Other */ 46 | .py { color: #ffffff} /* Name.Property */ 47 | .nt { color: #f0e68c} /* Name.Tag */ 48 | .nv { color: #98fb98} /* Name.Variable */ 49 | .ow { color: #ffffff} /* Operator.Word */ 50 | .w { color: #ffffff} /* Text.Whitespace */ 51 | .mf { color: #ffffff} /* Literal.Number.Float */ 52 | .mh { color: #ffffff} /* Literal.Number.Hex */ 53 | .mi { color: #ffffff} /* Literal.Number.Integer */ 54 | .mo { color: #ffffff} /* Literal.Number.Oct */ 55 | .sb { color: #ffffff} /* Literal.String.Backtick */ 56 | .sc { color: #ffffff} /* Literal.String.Char */ 57 | .sd { color: #ffffff} /* Literal.String.Doc */ 58 | .s2 { color: #ffffff} /* Literal.String.Double */ 59 | .se { color: #ffffff} /* Literal.String.Escape */ 60 | .sh { color: #ffffff} /* Literal.String.Heredoc */ 61 | .si { color: #ffffff} /* Literal.String.Interpol */ 62 | .sx { color: #ffffff} /* Literal.String.Other */ 63 | .sr { color: #ffffff} /* Literal.String.Regex */ 64 | .s1 { color: #ffffff} /* Literal.String.Single */ 65 | .ss { color: #ffffff} /* Literal.String.Symbol */ 66 | .bp { color: #ffffff} /* Name.Builtin.Pseudo */ 67 | .vc { color: #98fb98} /* Name.Variable.Class */ 68 | .vg { color: #98fb98} /* Name.Variable.Global */ 69 | .vi { color: #98fb98} /* Name.Variable.Instance */ 70 | .il { color: #ffffff} /* Literal.Number.Integer.Long */ 71 | .bash .nv { 72 | -webkit-user-select: none; 73 | -moz-user-select: none; 74 | -ms-user-select: none; 75 | -o-user-select: none; 76 | user-select: none; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/main/_sass/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/_sass/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /src/main/docs.sh: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2012-2017 Red Hat, Inc. 3 | # All rights reserved. This program and the accompanying materials 4 | # are made available under the terms of the Eclipse Public License v1.0 5 | # which accompanies this distribution, and is available at 6 | # http://www.eclipse.org/legal/epl-v10.html 7 | # 8 | # Contributors: 9 | # Red Hat, Inc. - initial API and implementation 10 | # 11 | 12 | 13 | # Hardcoded for windows right now. 14 | # Need to make this configurable for our CI systems and to work on windows or linux. 15 | # 16 | # Optionally - you can run 'jekyll/jekyll jekyll serve' to get a local server on port 9080 17 | # NOTE - these files will not work without a hosted server right now - they are not static stand alone 18 | GLOBAL_HOST_ARCH=$(docker version --format {{.Client}} | cut -d" " -f5) 19 | 20 | docker() { 21 | if has_docker_for_windows_client; then 22 | MSYS_NO_PATHCONV=1 docker.exe "$@" 23 | else 24 | "$(which docker)" "$@" 25 | fi 26 | } 27 | 28 | has_docker_for_windows_client(){ 29 | if [ "${GLOBAL_HOST_ARCH}" = "windows" ]; then 30 | return 0 31 | else 32 | return 1 33 | fi 34 | } 35 | 36 | 37 | BUILD_OR_RUN=${1:-"--build"} 38 | 39 | if [ "$BUILD_OR_RUN" = "--build" ]; then 40 | COMMAND="jekyll build --incremental" 41 | echo "" 42 | echo "Outputting site contents into /_site" 43 | echo "" 44 | elif [ "$BUILD_OR_RUN" = "--run" ]; then 45 | COMMAND="jekyll serve -w --force_polling --incremental" 46 | 47 | echo "" 48 | echo "View generated docs at http://localhost:9080/docs/" 49 | echo "" 50 | fi 51 | 52 | docker rm -f jekyll > /dev/null 2>&1 53 | docker run --rm -it -p 9080:4000 --name jekyll \ 54 | -v "${PWD}":/srv/jekyll \ 55 | -v "${PWD}"/_site:/srv/jekyll/_site \ 56 | jekyll/jekyll $COMMAND 57 | 58 | --------------------------------------------------------------------------------