chore: update releases [ci skip]
This commit is contained in:
68
main.go
68
main.go
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user