Vai al contenuto principale
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.Deploymentuno 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", "@")