Skip to content

Development tools

IDEs

Visual Studio Code

  • User settings are stored in ~/.config/Code/.
  • Installed packages are stored in ~/.vscode/extensions<!-- -->.
  • (On Linux) Visual Studio Code sources your ~/.bashrc file to populate its working environment. If you wish VSCode to execute some code when starting, you can add that code inside if [[ ! -z "${VSCODE_PID}" ]] ; then ... ; fi guards. For more info, see: Feature Request: Ability to explicitly set PATH.

Alternatives for C / C++

  • Anjutaautotools support. [GTK]
  • CLion — cMake only.
  • Code::blocks
  • CodeLite — cMake support.
  • Dev-C++
  • Eclipse CDT

GitLab

  • To change port, edit gitlab.rt and add external_url "domain:8888" (source)

We can add multiline scripts in .gitlab-ci.yml files as follows:

.foo:
  script: &foo
    - echo "Do"
    - echo "Something"
    - echo "Multi-line"

.bar:
  script: &bar
    - echo "Some"
    - echo "More"
    - echo "Actions"

test:
  script:
    - *foo
    - *bar

For more info, see https://gitlab.com/gitlab-org/gitlab-ce/issues/24235#note_140649852.

Using tags

Tags are now available in GitLab (e.g. https://gitlab.com/explore/projects?tag=clojure). See `gitlab-org/gitlab#14220 for more info.

Gitlab runner

Docker machine executor

Use the following tutorial for setting up gitlab-runner + docker-machine workers on openstack.

For docker+machine, configurations should look something like the following:

concurrent = 12
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-machine-1"
  url = "https://gitlab.com/"
  token = "XXXXX"
  executor = "docker+machine"
  limit = 7
  [runners.docker]
    tls_verify = false
    image = "ubuntu:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    pull_policy = ["if-not-present"]
    shm_size = 0
  [runners.cache]
  [runners.machine]
    IdleCount = 0
    IdleTime = 3600
    MaxBuilds = 60
    MachineDriver = "openstack"
    MachineName = "auto-scale-%s"
    MachineOptions = [
        "openstack-auth-url=https://arbutus.cloud.computecanada.ca:5000/v3",
        "openstack-domain-name=XXXXX",
        "openstack-flavor-name=c8-60gb-186",
        "openstack-image-name=gitlab-ci-base",
        "openstack-insecure=true",
        "openstack-keypair-name=gitlab",
        "openstack-net-name=rrg-pmkim-network",
        "openstack-password=XXXXX",
        "openstack-private-key-file=/home/ubuntu/.ssh/gitlab.pem",
        "openstack-region=XXXXX",
        "openstack-sec-groups=default,gitlabrunner",
        "openstack-ssh-user=ubuntu",
        "openstack-tenant-id=XXXXX",
        "openstack-tenant-name=XXXXX",
        "openstack-user-data-file=/home/gitlab-runner/docker_on_mnt.sh"
        "openstack-username=strokach",
    ]
    OffPeakTimezone = ""
    OffPeakIdleCount = 0
    OffPeakIdleTime = 0

The following should be executed after launching a new VM and before installing docker:

#!/bin/bash
# /home/gitlab-runner/docker_on_mnt.sh
sudo mkdir /mnt/docker
sudo ln -s /mnt/docker /var/lib/docker

Alternatively, modify the base image to include a custom Docker daemon.json file:

#!/bin/bash
# /home/gitlab-runner/docker_on_mnt.sh
sudo mkdir /etc/docker/
echo '{ "data-root": "/mnt" }' | sudo tee /etc/docker/daemon.json

Test out your settings manually before starting gitlab-runner:

docker-machine create deleteme --driver openstack {all-other-options}