最近,我们的一个版本出现了问题,必须手动回滚所有服务。在此过程中,我们不得不禁用“自动同步”功能。在恢复错误的PR后,我们忘记了再次启用自动同步,应用程序有一天不同步。是否有一种方法可以启用触发器或警报,在每次持续时间之后(例如一个小时)触发,并在空闲时通知我们自动同步功能已被禁用?
我们还想启用通知后,每次PR合并,类似“提交不能释放,因为自动同步是禁用的”。
发布于 2022-11-04 19:45:52
ArgoCD API有一个api/v1/applications/{app_name}端点。您可以从那里获取应用程序的设置。然后,您需要检查spec.syncPolicy对象是否有名为automated的键。下面是一个用bash和jq编写的示例:
#!/usr/bin/env bash
set -e
USERNAME=admin
PASSWORD=yourpassword
ARGOCD_SERVER=https://yourserver
APP_NAME=yourapp
ARGOCD_TOKEN=$(curl -s $ARGOCD_SERVER/api/v1/session -d '{"username":"admin","password":"'$PASSWORD'"}' | jq -r ".token")
response=$(curl -s "$ARGOCD_SERVER/api/v1/applications/$APP_NAME" -H "Authorization: Bearer $ARGOCD_TOKEN")
echo $response | jq '.spec.syncPolicy | has("automated")'https://stackoverflow.com/questions/72187012
复制相似问题