GitLab

Deploy Token

We use deploy tokens in requirements/ci.txt to allow the CI system to access private apps e.g:

-e git+https://work-deploy-token:abCd1fGhIjKlm45-T3qr@gitlab.com/kb/work.git#egg=kb-work

To create a deploy token follow the GitLab Deploy tokens documentation.

Tip

Copy the Name to “Username (optional)”. The Username is the first part of the URL e.g. work-deploy-token in the example above.

For Scopes, I selected read_repository.

GitLab Branches

Note

Before using Delete Merged Branches, check the list of merged branches to see if there are any you think you might want.

  1. To delete untracked remotes on your local machine, see Git Branches

  2. We have a script to delete untracked-branches

New Repository

To create a new repository:

  • Log into https://gitlab.com/ using our company login details.

  • Click on New Project.

  • In the Project path section select the kb group. Select the correct Visibility Level and click Create Project.

  • You should now be able to clone the repository, add a README.rst file and then push.

  • Go to the project Settings, Repository, and scroll down to Protected branches and unprotect the master branch so developers can push to it.

  • Go to the project Settings, CI/CD, and scroll down to Runners and in the Specific Runners column enable the company ci runner in the Runners activated for this project section. In the Shared Runners column click on the Disable shared runners button.

To move a repository from GitHub to GitLab: Migrate from GitHub

Continuous Integration

Tip

To set-up a runner see Continuous Integration.

Tip

To set-up GitLab Multi-Runner and Docker, see the following section…

GitLab Multi-Runner and Docker

From Install using official GitLab repositories

Install Docker: https://www.pkimber.net/howto/linux/apps/docker/getting-started.html

Create a Docker image, by following the instructions in the README.rst file in https://gitlab.com/kb/gitlab-pytest

Install gitlab-runner:

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-runner

Tip

Register the runner using sudo because you cannot enable the service unless you are root.

From Registering Runners

Get a registration token, by browsing to your group and selecting Settings, CI / CD, Runners e.g:

_images/gitlab-project-settings-ci-cd.png

Set-up:

sudo -i
gitlab-runner register

Sample output:

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
https://gitlab.com/
Please enter the gitlab-ci token for this runner:
eaeae123ababa
Please enter the gitlab-ci description for this runner:
[master-b]: ci.kbsoftware.co.uk
Please enter the gitlab-ci tags for this runner (comma separated):
INFO[0204] eabd2c42 Registering runner... succeeded
Please enter the executor: shell, parallels, docker, docker-ssh, ssh:
docker
Please enter the Docker image (eg. ruby:2.1):
pkimber/gitlab-pytest
Runner registered successfully.

Run in debug mode:

gitlab-runner --debug run

From Install GitLab Runner manually, to install the service:

gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

To start the service:

gitlab-runner start

To view logging:

tail -f /var/log/syslog

To set-up Continuous Integration for the project, see Continuous Integration.

Tip

To cleanup Docker containers, see Docker.

npm package

Tip

We are using a single GitLab repository (package) for all of our Packages.

Find the Project ID in GitLab e.g.

_images/2021-09-28-gitlab-project-id.png

Create a personal access token, Edit Profile , Access Tokens, Personal Access Tokens, https://gitlab.com/-/profile/personal_access_tokens

Set the registry and auth token (replacing the Project ID and access token) e.g:

# set the auth token
pnpm config set '//gitlab.com/api/v4/projects/29981347/packages/npm/:_authToken' "my-gitlab-auth-token"
# set the registry (update the project ID)
pnpm config set @kb:registry https://gitlab.com/api/v4/projects/29981347/packages/npm/

Tip

I guess the @kb part of the command is from the URL e.g. https://gitlab.com/kb/msgraph

Tip

I think we can only have one package repository. To check, npm config list or cat ~/.npmrc.

Patch, install and publish

Warning

Make sure to stop ember serve!

Warning

Make sure to update package.json with the latest versions and remove any link packages.

Tip

We only publish apps to our package repository (see gitlab_npm_package above). We do not publish projects. To release one of our projects, follow the Release and Deploy notes in the README.rst file.

cd ~/dev/app/app-or-project/front/

# check there are no link dependencies
cat package.json | grep file
# check there is no uncommitted code
git status

rm -rf dist/ node_modules/ /tmp/embroider/
pnpm version patch

# if releasing a project (for 'ember-cli-new-version')
python ../kb.py --version-config

pnpm install
git add config/environment.js package.json package-lock.json
git commit -m "prep for release - ember"

pnpm publish

Tip

To use the @kb:registry (see gitlab_npm_package above), I think the package name needs to be prefixed with @kb e.g. "name": "@kb/ember-work"