chore: update releases [ci skip]

This commit is contained in:
etwodev
2025-10-05 13:06:14 +01:00
parent 21f3bab5e9
commit 68f84bbdab

68
main.go
View File

@@ -36,16 +36,17 @@ type EnvVar struct {
// ------------------------------- // -------------------------------
var ( var (
portainerURL = os.Getenv("PORTAINER_URL") // e.g. https://portainer.example.com/api portainerURL = os.Getenv("PORTAINER_URL") // e.g. https://portainer.example.com/api
portainerToken = os.Getenv("PORTAINER_TOKEN") // API access token portainerToken = os.Getenv("PORTAINER_TOKEN") // API access token
endpointID = os.Getenv("PORTAINER_ENDPOINT") // Portainer endpoint ID endpointID = os.Getenv("PORTAINER_ENDPOINT") // Portainer endpoint ID
stackName = os.Getenv("STACK_NAME") // Name of stack to create/redeploy stackName = os.Getenv("STACK_NAME") // Name of stack to create/redeploy
repoURL = os.Getenv("REPO_URL") // Git repo URL repoURL = os.Getenv("REPO_URL") // Git repo URL
repoRef = os.Getenv("REPO_REF") // e.g. refs/heads/main repoRef = os.Getenv("REPO_REF") // e.g. refs/heads/main
repoComposeFile = os.Getenv("REPO_COMPOSE_FILE") // e.g. docker-compose.yml repoComposeFile = os.Getenv("REPO_COMPOSE_FILE") // e.g. docker-compose.yml
repoUsername = os.Getenv("REPO_USERNAME") // Git username (if needed) repoUsername = os.Getenv("REPO_USERNAME") // Git username (if needed)
repoPassword = os.Getenv("REPO_PASSWORD") // Git password/token (if needed) repoPassword = os.Getenv("REPO_PASSWORD") // Git password/token (if needed)
tlsSkipVerify = os.Getenv("TLS_SKIP_VERIFY") // "true" / "false" tlsSkipVerify = os.Getenv("TLS_SKIP_VERIFY") // "true" / "false"
envData = os.Getenv("ENV_DATA") // Optional env vars in JSON format
) )
// ------------------------------- // -------------------------------
@@ -106,19 +107,28 @@ func main() {
} }
} }
// 3. Parse environment variables
var envVars []EnvVar = []EnvVar{}
if envData != "" {
if err := json.Unmarshal([]byte(envData), &envVars); err != nil {
fmt.Printf("Error parsing ENV_DATA: %v\n", err)
os.Exit(1)
}
}
if existing == nil { if existing == nil {
// 3. Create new stack // 4. Create new stack
payload := map[string]interface{}{ payload := map[string]interface{}{
"composeFile": repoComposeFile, "composeFile": repoComposeFile,
"env": []EnvVar{}, "env": envVars,
"fromAppTemplate": false, "fromAppTemplate": false,
"name": stackName, "name": stackName,
"repositoryAuthentication": repoUsername != "" && repoPassword != "", "repositoryAuthentication": repoUsername != "" && repoPassword != "",
"repositoryUsername": repoUsername, "repositoryUsername": repoUsername,
"repositoryPassword": repoPassword, "repositoryPassword": repoPassword,
"repositoryReferenceName": repoRef, "repositoryReferenceName": repoRef,
"repositoryURL": repoURL, "repositoryURL": repoURL,
"tlsskipVerify": tlsSkipVerify == "true", "tlsskipVerify": tlsSkipVerify == "true",
} }
url := fmt.Sprintf("%s/stacks/create/standalone/repository?endpointId=%s", portainerURL, endpointID) url := fmt.Sprintf("%s/stacks/create/standalone/repository?endpointId=%s", portainerURL, endpointID)
@@ -136,17 +146,17 @@ func main() {
fmt.Printf("✅ Stack %s deployed successfully.\n", stackName) fmt.Printf("✅ Stack %s deployed successfully.\n", stackName)
} else { } else {
// 4. Redeploy stack // 5. Redeploy stack
payload := map[string]interface{}{ payload := map[string]interface{}{
"env": []EnvVar{}, "env": envVars,
"prune": true, "prune": true,
"pullImage": true, "pullImage": true,
"repositoryAuthentication": repoUsername != "" && repoPassword != "", "repositoryAuthentication": repoUsername != "" && repoPassword != "",
"repositoryAuthorizationType": 0, "repositoryAuthorizationType": 0,
"repositoryUsername": repoUsername, "repositoryUsername": repoUsername,
"repositoryPassword": repoPassword, "repositoryPassword": repoPassword,
"repositoryReferenceName": repoRef, "repositoryReferenceName": repoRef,
"stackName": stackName, "stackName": stackName,
} }
url := fmt.Sprintf("%s/stacks/%d/git/redeploy?endpointId=%s", portainerURL, existing.ID, endpointID) url := fmt.Sprintf("%s/stacks/%d/git/redeploy?endpointId=%s", portainerURL, existing.ID, endpointID)