...
This document explains how to setup a GitLab CI/CD pipeline with a dedicated runner to execute Liquibase Enterprise operations. A GitLab runner can be shared among multiple Liquibase projects, so one runner can serve several teams. This example uses a Linux server for the runner. You can learn more about GitLab runners here: https://docs.gitlab.com/runner/ .
Prerequisites
Before following the steps in this document, setup your databases and create the Liquibase project.
...
Code Block |
---|
git init --initial-branch=main git remote add origin git@gitlab.com:lbe/demo_project.git git add . git commit -m "Initial commit" git push -u origin main |
Step 1: Install Liquibase Enterprise on a Linux Server
The Linux server can be a VM on a cloud platform such as AWS. Make sure to use a supported version of Linux. Hardware, Software, and Database Requirements
Follow these instructions to install Liquibase Enterprise: Theme: Using the CLI and the Composite Repository to Install Datical DB Liquibase Enterprise on Linux Systems
Make sure that git is installed on the Linux server as it will be needed by the Liquibase Enterprise Deploy Packager. SCM Requirements and Features
Step 2: Install GitLab Runner on the Linux Server
https://docs.gitlab.com/runner/install/linux-repository.html
...
This example uses SSH keys for git authentication. You can find information on using SSH keys with GitLab here: https://docs.gitlab.com/ee/user/ssh.html . Copy the SSH private key to /home/gitlab-runner/.ssh.
Step 3: Register the Runner
https://docs.gitlab.com/runner/register/index.html
Login to GitLab.
Navigate to the SQL repo.
Go to Settings > CI/CD
Expand the Runners section.
Copy the registration token.Start a terminal session on the GitLab runner. Run the “gitlab-runner register” command.
You will be prompted for the required information. We recommend creating a tag for the runner so that GitLab CI/CD jobs for Liquibase can be associated with this runner. The executor for the runner should be “shell”.Code Block sudo gitlab-runner register Runtime platform arch=amd64 os=linux pid=11051 revision=5316d4ac version=14.6.0 Running in system-mode. Enter the GitLab instance URL (for example, https://gitlab.com/): https://gitlab.com Enter the registration token: <the token that was copied above> Enter a description for the runner: [ip-172-30-3-12.ec2.internal]: myrunner.mydomain.com Enter tags for the runner (comma-separated): liquibase Registering runner... succeeded runner=q8McuSyX Enter an executor: docker, parallels, virtualbox, docker+machine, kubernetes, custom, shell, ssh, docker-ssh+machine, docker-ssh: shell Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Step 4: Create an Access Token
The Access Token (PAT) is needed to download artifacts.
To create a personal access token:
Login to GitLab.
On the top-right corner, select your avatar.
Select Edit Profile
On the left sidebar, select Access Tokens.
Enter a name.
Leave expiry date blank (never expires).
Select access token scope: api
Select create personal access token.
Save token. It cannot be retrieved later.
If you would prefer to use a Project Access Token, the instructions are here: https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html .
Step 5: Configure the .gitlab-ci.yml file
Deploy Packager jobs will be triggered automatically by commits to the packaging branch of the SQL repo. Forecast and Deploy jobs will be triggered manually from the GitLab web interface. The Logging job will always run to generate a .zip of files to be used for debugging errors.
...
Code Block |
---|
git config --global user.name "Martha Bohls" git config --global user.email "mbohls@liquibase.com" git config --global init.defaultBranch main git init git remote add origin git@gitlab.com:mbohls/$ddb_repo.git |
Step 6: Configure variables for the pipeline.
Variables are a good way to store database credentials. They also allow the same script to be configured to work for different projects.
Login to GitLab.
Navigate to the SQL repo for the project.
Go to Settings > CI/CD
Expand the Variables section.
...
The sample script requires the variables shown below.
...
DDB_DMCDB_PASS: Database password for DMCDB
Step 7: Test your pipeline.
Commit a change to the packaging branch in your SQL repo. GitLab should run the pipeline Packaging job using your runner.