Troubleshooting LXC CI/CD¶
Start from what you see: nothing in Muppy › Qs › Messages, or a message whose journal says why it stopped.
Nothing reaches Muppy¶
When no Gitlab Webhook… or Github Webhook… message appears after a push, Muppy refused the
call. It still answers HTTP 200: open the provider's delivery log (GitLab: Settings ›
Webhooks › Edit › Recent events; GitHub: Settings › Webhooks › Recent Deliveries) and read
the response body.
| Response | Cause | Fix |
|---|---|---|
HTTP 400, Request inferred type is compatible with ['http'] but '/mpy/api/v1/incoming_webhooks' is type='json' |
GitHub sends form-encoded data. | Set Content type to application/json. |
Missing webhook authentication token |
No token in the call. | GitLab: fill Secret token. GitHub: use the Hook URL of an Incoming Webhook whose Pass Token in header is unchecked. |
Invalid webhook token |
Unknown, expired or compromised token. A token received over plain http is expired at once. |
Use https. On the API Auth Token, click Regenerate Credentials, then update the provider. |
Missing webhook 'code' ! / Webhook not found ! |
The URL's code is not the Name of an active Incoming Webhook using this token. |
Copy the Hook URL again. Check Is Active. |
Test Webhook cURL, on the Incoming Webhook, sends a test call. Its message proves the URL and the token work, then stops: the test carries no repository.
The webhook message stops¶
Open the message. Its journal holds one line per decision. The lines you will meet:
| Journal line | Cause | Fix |
|---|---|---|
Found no App. Def. for Git Project '…' |
No Application Definition has this Git Project ID. | Set it on the Application Definition. |
Found several App. Def … |
Several Application Definitions share the Git Project ID, and more than one matches the branch. | Set Ref. selection Regex on each. |
Skipping LXC CI/CD as it is not 'active' in App Def. |
Activate LXC CI/CD is unchecked. | Check it. |
k8s CICD failed with error: … |
The K8s CD of the same Application Definition failed, and the LXC CI/CD did not run. | Fix the K8s error, or uncheck Activate K8s CD. |
Unable to figure out muppy user for username='…' |
The git login matches no Muppy user. | Set Remote User name on the user. See Setting Up. |
Branch '…' processing is excluded by Branch exclusion Regex… |
The branch matches Branch exclusion Regex. | Expected, or adjust the regex. |
Automatic Deployment is not active for …. Aborting |
Activate Auto deploy is off for this kind of server. On Staging and Production, it always is: deploy them by hand. | See Deploying Staging and Production. |
Commit on … branch but trigger 'Comment tag' not found in commits_message. Aborting |
No commit message of the push carries the Deploy Trigger comment tag. | Add the tag to a commit message, or set re-Deployment Trigger to Every push. |
No Target '…' Servers found … and 'Provision Server on commit' not set |
You have no Test Server for this branch, and Muppy does not create one. | Check Provision Server on commit (Test), or create the server. |
The server is not created¶
When the webhook message decided to create a server, the creation runs in a message of its
own: Create '<qualifier>' DevServer '<name>' for refspec='<branch>' and user='<owner>'.
| Journal line | Fix |
|---|---|
No 'Host Allocator (Test)' defined in App Definition and no 'Application default LXC Allocator'… |
Set Host Allocator (Test), or Application default LXC Allocator in Settings ▸ Muppy ▸ Applications. |
Server already exists for this Project, Qualifier… |
A server for this branch and owner already exists, maybe with another qualifier. Deploy it instead. |
The deployment fails¶
The deployment runs in its own message, Deploy branch '…' on server:'…', and leaves a record
on the App Server, page Upgrades. Open the record's database upgrade to read the upgrade
log. What a failure leaves behind, and how to recover, is in
When a deployment fails.
The branch was deleted, the Test Server is still there¶
A deletion destroys Test Servers only when Deprovision on branch Delete and Activate Auto deploy (Test) are checked, and the trigger is Every push. Otherwise, deprovision the server from its form.