GoLand 2021.1 Help

Run targets

You can run your code in another environment such as cloud or a Docker container directly from GoLand.

This feature allows you to instantly test the changes against the real environment the app is intended for. This ensures that there will be no incompatibilities when moving to production, which is especially important when working on code that heavily depends on the environment.

Running the app directly in such environment also spares you the extra actions normally required to deploy and run the app every time something changes.

The environment that is used for running the app is referred to as target. For GoLand to run code on a target, the target has to define a language runtime, which represents something on the target that can be used by a run/debug configuration to run code.

In order to run your code on a target, all you need is to define the target execution environment in the run/debug configuration that you would normally use for local run. After you have done that, launching the app on a target is no different than launching it locally.

Supported run/debug configuration types

The following run/debug configurations can run on a remote target:

  • Go App Engine
  • Go Build
  • Go Test

Create a run/debug configuration

  1. From the main menu, select Run | Edit Configurations. Alternatively, press Alt+Shift+F10, then 0.

  2. In the Run/Debug Configuration dialog, click the Add button the Add button on the toolbar or press Alt+Insert.

  3. Select one of the supported run/debug configuration types.

  4. If you have already defined the target, select it from the Run on menu. Otherwise, click Manage targets to add a new target. For instructions on configuring a particular target type, refer to the following procedures:

    Create a run/debug configuration

Run

Procedure for running the app on a remote target is the same as for running it locally:

  1. Select the run/debug configuration on the main toolbar.

  2. Click The Run button or press Shift+F10.

GoLand builds the artifacts and then copies them to the target. After that, it runs the app on the target using the specified runtime.

Target types

A target describes the configuration of the environment in which the application will run.

When you create a remote target, GoLand automatically detects the runtimes available in the remote environment. If required, you can manually configure additional runtimes.

SSH

  1. Select if you want to use an existing SSH configuration or create a new one:

    Select an existing SSH configuration from the SSH list, then click Next. For instructions on how to configure an SSH configuration, refer to Create SSH configurations.

    1. Enter the IP of the SSH server, the port listening for SSH connections, and the name of the user on the server machine, on whose behalf you are going to run your application. Click Next.

    2. Wait for the connection to be established. If there is an agent that has the credentials, no additional configuration will be required. Otherwise, select the authentication method and provide the required values:

      • Password: enter the password.

      • Key pair (OpenSSH or PuTTY): To apply this authentication method, you must have a private key on the client machine and a public key on the remote server. GoLand supports private keys that are generated with the OpenSSH utility.

        Specify the path to the file where your private key is stored and type the passphrase (if any) in the corresponding fields. To have GoLand remember the passphrase, select the Save passphrase checkbox.

      Click Next.

  2. Wait for the SSH server introspection to complete. During this step, GoLand tries to identify the language runtimes available in the environment. Click Next.

    Introspection of the SSH server
  3. Configure the following properties:

    • Use rsync: toggle this option to use rsync for file transfer. This is recommended as it will generally speed up copying files.

    • Project path on target: the path on the server that will be used for storing the project files.

  4. Add language runtimes. For each runtime, specify its version and path on the server. The configured runtimes then appear in the Build and run section of the run/debug configuration when you select this environment as the target.

    The following runtimes are available:

    • Go Executable: the path to the Go executable (for example, /usr/local/go/bin/go)

    • GOPATH: the path that defines the root of your workspace. A root directory must contain bin, pkg, and src subdirectories. (for example, /home/goprojects)

    • Version: a version number of your Go SDK (for example, go1.15.8 linux/amd64). GoLand detects this information automatically by running go version.

    Go Run Targets Ssh Runtime

Docker

  1. Select or configure a Docker server as described in Enable Docker support.

  2. Select if you want to build an image locally or pull it from Docker registry.

    • Dockerfile: the Dockerfile that will be used for building the image.

    • Context folder: a folder whose contents will be accessible by the Docker daemon during the build to be later used in the image filesystem.

    • Rebuild image automatically every time before running code: when this option is set, the image will be rebuilt every time the code is run. Otherwise, GoLand will use the already existing image (if any).

    Additionally, you can specify the following:

    • Image tag: specify the name and tag for the built image. Similar to using the -t option with docker build.

    • Build options: specify arbitrary options for the docker build command.

    • Build args: override the default build-time variables. Similar to using the --build-arg option with docker build.

    • Run options: specify arbitrary options for the docker run command.

    run targets docker build image
    • Image tag: specify the full coordinates for the image to be pulled from a registry. The default :latest tag will be used if only repository is specified.

    • Run options: specify arbitrary options for the docker run command.

    run targets docker pull image

  3. Wait for the container introspection to complete. During this step, GoLand tries to identify the language runtimes available in the environment. Click Next.

  4. If required, configure language runtimes. You may need it in when:

    • you have a complex image (for example with several JDKs). The primary runtime will be identified automatically, however any additional runtimes require manual configuration.

    • the introspection fails. In most cases GoLand will correctly identify the primary runtime based on the context from step 1. If, for some reason, this does not happen, manually modify the primary runtime.

    For each runtime, specify its version and path in the container. The configured runtimes then appear in the Build and run section of the run/debug configuration when you select this environment as the target.

    The following runtimes are available:

    • Go Executable: the path to the Go executable (for example, /usr/local/go/bin/go)

    • GOPATH: the path that defines the root of your workspace. A root directory must contain bin, pkg, and src subdirectories. (for example, /home/goprojects)

    • Version: a version number of your Go SDK (for example, go1.15.8 linux/amd64). GoLand detects this information automatically by running go version.

    The final step of the Docker target

WSL

  1. From the main menu, select Run | Edit Configurations. Alternatively, press Alt+Shift+F10, then 0.

  2. In the Run/Debug Configuration dialog, click the Add button on the toolbar or press Alt+Insert..

  3. From the Add New Configuration window, select the run/debug configuration that you want to create for running a target. It can be Go App Engine, Go Build, or Go Test.

  4. From the Run on menu, under the New targets section, select WSL to add a WSL target.

    select wsl from run on list
  5. In the New Target wizard, select your Linux distribution from the Linux distribution list. If the distribution was detected automatically and the introspection passed, press Next.

    introspection of wsl target
  6. Check that the Go runtime configuration for WSL was detected correctly and click Finish.

    Alternatively, type your own settings.

    check Go runtime configuration for WSL
  7. From the main menu, click Run and select the necessary run configuration or press (Shift+F10) to run your code and check the output in the Run tool window.

    Run tool window: WSL output

Last modified: 11 May 2021