semaphoreui/semaphore · error
error at integrations
Error message
error at integrations[%d]: %s
What it means
Produced during project restore in services/project/restore.go when the i-th entry of the backup's Integration list fails to restore itself via its Restore method. It is an aggregation wrapper: the %s embeds the underlying per-integration error (bad stored integration data, missing secret, or a store failure), while the %d index identifies exactly which integrations[] entry in the backup archive is at fault, letting callers distinguish one bad record from a wholesale restore failure.
Solutions
- Read the embedded per-entry message to identify which integration type failed and why
- Fix or remove the offending integration entry from the backup archive (the index in the message points at the exact element) and retry the restore
- If the integration references a missing secret or key, restore the secret storage first or re-create the referenced credential before re-running
- Report the index to the user so they can inspect that specific integration in the exported project
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at services/project/restore.go:687 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of semaphoreui/semaphore@1774ccb71a (2026-09-07).
Data as JSON: /api/errors/5741d7fc82b74b1f.
Report an issue: GitHub.
Appendix: source
Thrown at services/project/restore.go:687
if string(o.Type) == "deploy" {
deployTemplates = append(deployTemplates, i)
continue
}
if err := o.Restore(&b); err != nil {
return nil, fmt.Errorf("error at templates[%d]: %s", i, err.Error())
}
}
for _, i := range deployTemplates {
o := backup.Templates[i]
if err := o.Restore(&b); err != nil {
return nil, fmt.Errorf("error at templates[%d]: %s", i, err.Error())
}
}
for i, o := range backup.Integration {
if err := o.Restore(&b); err != nil {
return nil, fmt.Errorf("error at integrations[%d]: %s", i, err.Error())
}
}
for _, o := range backup.IntegrationAliases {
alias := db.IntegrationAlias{
Alias: o,
ProjectID: b.meta.ID,
}
_, _ = b.store.CreateIntegrationAlias(alias)
}
for i, o := range backup.Schedules {
if err := o.Restore(&b); err != nil {
return nil, fmt.Errorf("error at schedules[%d]: %s", i, err.Error())
}
}
for i, o := range backup.Runners {View on GitHub (pinned to 1774ccb71a)