GitLab Self-hosted Agent Setup Checklist
This guide will help you set up a GitLab self-hosted agent for MiddlewareHQ.
Prerequisites
Before proceeding, ensure you have the following:
- Docker installed on your system and docker daemon is running.
- Middleware Credentials: Contact your Middleware Systems administrator to obtain the
MHQ_CLIENT_ID
andMHQ_CLIENT_SECRET
credentials required for authentication.- Instructions for how to use them are below.
- Personal Access Token (PAT): Generate a PAT with the read-api and read-user scopes to authenticate with the GitLab API.
Setup Instructions
- Clone Configurations
- Clone this repository: https://github.com/middlewarehq/sync-agent-conf
- Middleware Credentials:
- Obtain the Middleware Credentials (
MHQ_CLIENT_ID
andMHQ_CLIENT_SECRET
) from your Middleware Systems administrator. - Add these to client.txt.
- Obtain the Middleware Credentials (
- Generate Personal Access Token (PAT):
- Obtain the domain URL (
GITLAB_DOMAIN_URL
) of your self-hosted GitLab instance in the format https://gitlab.com/-/user_settings/personal_access_tokens OR https://yourgitlabinstance.com/-/user\_settings/personal\_access\_tokens . - Generate a PAT with the read_api and read_user scopes to authenticate with the GitLab API.
- Use this token (
GITLAB_ACCESS_TOKEN
) for authentication and update it when necessary for security reasons. - Add both to client.txt.
- Obtain the domain URL (
- Define Repository URLs:
- Save the repository URLs in config.json for reference during synchronization in, integrations->gitlab->repositories
- Deploy the Agent:
- Run the following command to create and run the Docker container for the MHQ GitLab Agent in the project root:
docker compose up -d
This command deploys the agent in detached mode, allowing it to run independently in the background.
(If you’re running this later, rundocker compose pull
)
- Run the following command to create and run the Docker container for the MHQ GitLab Agent in the project root:
Additional Checks
-
Check if the docker container is running properly:
-
docker ps -a
Use the above command to get the list of all the docker containers. Copy the id of the docker-container with the name “mhq-sync-scripts”.-
You may also try this command:
docker ps -a | grep mhq-sync-scripts | awk '{print $1}'
-
-
docker logs -f [id_of_container]
Use the above command with the id of the container you copied from the previous step. This command will give the logs of the container.
For convenience, try this:
docker logs -f $(docker ps -a | grep mhq-sync-scripts | awk '{print $1}')
-
Check the logs to match the following. The order of the logs may differ.
You want to ensure you see the following (regardless of their order):data-extraction-and-transfer entered RUNNING state
python-heartbeat entered RUNNING state
cron entered RUNNING state
- If you see “
FATAL state”
for any of the above, get in touch with us.
-
Finally, the exit status of
data-extraction-and-transfer
shall be 0 (shows up as something likedata-extraction-and-transfer (exit status 0; expected)
). It may take some time to get this last log as it depends on the amount of data it is trying to sync. -
Now go to check #2 to see your data on Middleware!
If you don’t see any data, try the next point 👇 -
If data not found in Middleware, run the following commands:
-
Copy the container ID using:
docker ps -a | grep mhq-sync-scripts | awk '{print $1}'
-
docker exec -it [id_of_mhq_scripts_container]
-
python3 data_extraction.py
-
Once it completes, run
python3 data_transfer.py
-
After that, exit the container simply by running
exit
-
Continue to to check #2 👇
-
-
-
Check Middleware App Integration
Visit your Middleware App (app.middlewarehq.com) to check if your app has integrated with the GitLab self-hosted agent successfully -
Gitlab’s integration should appear linked. The “Link” button as shown below would turn into “Unlink”
- If it worked, you should see this:
- If you don’t see “Unlink” here, try the steps outlined here 👉 (link), or contact us.
- If it worked, you should see this:
-
Select a team of your choice from the list
-
Click on the “Repos” tab right under the page header, see image
-
Your repos will show up under “Repos linked to your org”
-
Click on the << icon on each repo you want to add to the team
-
A “notification” will indicate that your settings have been saved
-
That’s it!
- Process Overview (https://app.middlewarehq.com/collaborate/process) is a great place to start viewing your first insights.
- If you don’t see anything even after 5 minutes or so, let us know on jayant@middlewarehq.com or dhruv@middlewarehq.com.
-
Database Management (optional):
Use a database management tool like TablePlus to connect to the Docker PostgreSQL database and inspect logs for further analysis.
Ensure to configure with the following parameters:
-
Host: localhost or server IP address
-
Port: 5435
-
User: postgres
-
Password: postgres
-
Database: mhqagent
NOTES:
- Password change instructions coming soon.
- We recommend not exposing port 5435 on the machine that this is running on to any external network.
Follow above steps to successfully set up and configure the GitLab self-hosted agent for MiddlewareHQ synchronization.