Heads up! On October 1, we introduced Gitpod Flex. You can swap between documentation by using the switcher in the left navigation bar.

February Release 2019 🎉

We are close to leaving the beta phase and with that are also approaching a more regular release schedule. This means we are going to have monthly release notes. They will pop up only once and you can easily dismiss them by pressing [ESC]. If you want to look up the release notes later you can open them through the command palette [F1]. Simply search for ‘Release Notes’.

So here are the new & noteworthy things that we have been hard at work at this time.

You can now navigate to GitHub directly from the editor. The GitHub URL of any editor position or selection can be accessed with a right-click, and used for example in GitHub issues or Pull Request comments to reference interesting code locations.

GitHub Links

Snapshots

In addition to live sharing a running Gitpod workspace, you can now take a snapshot. Snapshots capture the current state of a workspace session including the UI layout and the file changes. Anyone who has a snapshot link can create a fresh workspace based on that.

This is super handy for providing reproducibles in GitHub issues and StackOverflow posts. They are also great to prepare trainigs, tutorials, or just to showcase stuff you have thrown together.

Please see this blog post as well as the documentation for more details.

Snapshot

Configuration

The possibilities to fine-tune the developer experience when using Gitpod on your repository have been improved. Here are the features you can define in your .gitpod.yml:

Tasks

You can now specify multiple tasks. Each task will have its own terminal view on start. You can even specify where those terminals whould be opened. The following config, for instance, will make sure that two terminals are opened next to each other.

language icon yml
tasks:
    - command: echo 'left'
    - command: echo 'right'
      openMode: split-right

Split Terminals

Lifecycles

In addition we have introduced multiple lifecycle phases for the tasks, such as init and before. The main purpose is to avoid rerunning unnecessary commands such as full builds, when restarting workspaces or opening snapshots.

Check the table below for an overview of the different starting scenarios.

Start Mode Execution
Fresh Workspace before && init && command
Restart Workspace before && command
Snapshot before && command

Ports

You can now specify the default behavior on port detection. By default users get a notification when starting a server, asking whether they want to open a web view or an external browser.

This behavior can now be pre-configured so users are not bothered with annoying notifications. Here is an example where we configure port 8080 to automatically open in a web preview pane:

language icon yml
ports:
    - port: 8080
      onOpen: open-preview

Check out the docs to learn more about pre-configuring things in Gitpod.

YAML Support

Gitpod now understands YAML syntax and uses json schema specifications to validate and guide developers. While this works for any YAML files it comes in especially handy when editing .gitpod.yml.

yaml in action

Gitpod CLI

The CLI for Gitpod has learned new tricks. Check out all the cool things you can do with it by typing gp help.

Here are the new commands we added:

gp init

To get the best experience with Gitpod, you should configure your repository to have the right tools, run the right commands on start, etc. This information is stored in a .gitpod.yml file sitting in your repository.

The gp init command walks you through the basic setup and generates a .gitpod.yml and if desired a corresponding Dockerfile.

language icon bash
gitpod /workspace/my-repo $ gp init
Use the arrow keys to navigate: ↓ ↑ → ←
? Workspace Docker image:
  ▸ default
    custom image
    docker file

More information about writing .gitpod.yml configurations can be found in the docs.

gp url

One of the things you do in a .gitpod.yml is declaring the exposed ports. Gitpod maps them to a specific subdomain in order to make them accessible. For instance if you have a dev server running on 0.0.0.0:3000 the gp url command gives you the external url for that service.

Here is an example:

language icon bash
gitpod /workspace/release-notes $ gp url 3000
https://3000-b33f605e-b32a-4e44-ae5a-acad9641de0a.ws-eu0.gitpod.io/

gp url can also give you the URL of the workspace itself:

language icon bash
gitpod /workspace/release-notes $ gp url
https://b33f605e-b32a-4e44-ae5a-acad9641de0a.ws-eu0.gitpod.io/

gp preview

gp preview is similar to gp open, except that it does not open a file in the editor but a URL in a preview pane on the right.

This is especially handy together with gp url if you want to open a specific path from a script.

Here’s an example:

language icon bash
gp preview $(gp url 3000)my/special/path.html

Improved Docker Performance

In addition to the .gitpod.yml you can provide a Dockerfile which is automatically picked up by Gitpod. See this blog post for more information on setting up a Dockerfile for your project.

For example, here is a Dockerfile that allows developing native UI applications in Go on Gitpod:

language icon bash
FROM gitpod/workspace-full-vnc
RUN sudo apt-get update && \
    sudo apt-get install -y libgtk-3-dev && \
    sudo rm -rf /var/lib/apt/lists/*

Since we launched this feature, the performance and logging for docker builds have also been improved significantly.

Status Page

As we continuously improve and expand Gitpod, there are times when things inevitably don’t go as planned, occasionally causing downtime. If you’re ever curious about the status of gitpod.io, or you’d like to follow how we resolve an incident, we made status.gitpod.io just for you.

In fact, thanks to Statusfy, it took us just a few hours to build an entire open source status page. Learn more about this short adventure in this blog post.

Java Debugging

In addition to Node.js one can now also launch and debug Java applications directly from within the editor. Code lense actions on main() methods will automatically use the right classpath from the current project settings (based on maven, gradle or eclipse classpath information).

Launch configs are stored in a VS Code compatible launch.json file.

Debug Java

XML Support

The new improved XML support not only does syntax highlighting for XML and XSD but also uses associated schemas to provide diagnostics, content assist and hover information.

XML Support

Better Previews

Previews can now easily be opened by clicking on the top right icon (icon) on any previewable files, such as Markdown, HTML and SVG files.

The inverse is supported, too. I.e. clicking the file icon on the top right of a preview will open the corresponding editor on the left. For Markdown even scrolling is synced between the two views.

AsciiDoc Support

In addition to Markdown, Gitpod now also supports previewing AsciiDoc as you type.

ASCIIdoc Support

Many Bugfixes, small features and other improvements

These are just the most noteworthy features we have been working on. For a more detailed list of bugfixes and enhancemenst see all the issues we’ve closed:

Was this helpful?