client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
Elencare la cronologia dei deploy
api.GetApplicationDeployments(appID) restituisce [][]squarecloud.Deployment — uno slice interno per ogni deploy. Ogni evento di un gruppo condivide lo stesso ID (lo SHA-1 del commit, 40 caratteri esadecimali) e attraversa gli stati del ciclo di vita: pending → clone → commit → restarting → success | error.
history, err := api.GetApplicationDeployments("abc123def456abc123def456")
if err != nil {
panic(err)
}
for _, timeline := range history {
last := timeline[len(timeline)-1]
fmt.Printf("Deploy %s ended as %s\n", last.ID, last.State)
for _, event := range timeline {
if event.State == "clone" {
fmt.Println(" cloned branch", event.Branch)
}
if event.State == "commit" {
fmt.Println(" files", event.Files.Added, event.Files.Removed, event.Files.Modified)
}
}
}
Branch è popolato solo nell’evento "clone", e Files (Added, Removed, Modified) solo nell’evento "commit".
Ispezionare la configurazione attuale
api.GetApplicationCurrentDeployment(appID) restituisce un squarecloud.DeploymentCurrent con il collegamento alla GitHub App attualmente configurato.
current, err := api.GetApplicationCurrentDeployment("abc123def456abc123def456")
if err != nil {
panic(err)
}
if current.App == nil {
fmt.Println("no GitHub App linked")
} else {
fmt.Println("linked to", current.App.FullName)
}
Collegare tramite la GitHub App di Square Cloud (consigliato)
api.LinkApplicationGithubApp(appID, repoName, branch) collega un repository GitHub all’applicazione tramite la GitHub App ufficiale.
err := api.LinkApplicationGithubApp("abc123def456abc123def456", "octocat/hello-world", "main")
if err != nil {
panic(err)
}
Per rimuovere il collegamento:
err := api.UnlinkApplicationGithubApp("abc123def456abc123def456")
LinkApplicationGithubApp e UnlinkApplicationGithubApp richiedono un token di sessione (JWT) come credenziale — le normali chiavi API non sono accettate da questi endpoint. Passalo con rest.WithToken(sessionToken) oppure costruisci il client con esso.
Collegare tramite il flusso legacy con webhook
api.PostApplicationDeployWebhook(appID, accessToken) registra un Personal Access Token di GitHub (ghp_* o github_pat_*) e restituisce l’URL del webhook da configurare su GitHub.
webhookURL, err := api.PostApplicationDeployWebhook("abc123def456abc123def456", "ghp_xxx...")
if err != nil {
panic(err)
}
fmt.Println("Configure GitHub to POST to:", webhookURL)
Passa il token "@" per rimuovere il webhook configurato.
_, err := api.PostApplicationDeployWebhook("abc123def456abc123def456", "@")