Xcode does not allow to edit multiple integrations at once, so we should select and delete them one by one. Such a terrible experience.
Fortunately, an Xcode Server can be accessed via an API. For example, let’s imagine that your Xcode server is running locally and is logged into macOS as vadim
. Run the following command in Terminal:
curl -u vadim -ki https://localhost:20343/api/integrations
Enter your macOS passsword and find out a string like this in the output:
set-cookie: session=s%3ARXT-AwHIQiDlme7cV66WBG-587uxtOhA.y7ypwdMkkFwmLj44onAreGdKCUyd1cDd32jMMO%2FAIZk; Path=/; Expires=Tue, 04 Dec 2018 19:20:10 GMT; HttpOnly; Secure
We will need a session
part later. The following command will show integrations from Xcode:
curl -k https://localhost:20343/api/integrations
The output will be too excessive though, and we need just _id
s:
curl -k https://localhost:20343/api/integrations | jq -r '.results[] | ._id'
Finally, knowing integration ids, we can delete them using another API request and the session from the cookie above:
Be sure to replace <<username:password>>
with your macOS user login.
curl -k https://localhost:20343/api/integrations | jq -r '.results[] | ._id' | while read id; do curl -u <<username:password>> -X DELETE -k -H 'Cookie: session=s%3Ar4GfyFaKvJjfCV-M5GJf5fnuGO5A-o75.qeMbAnP7ydwGvH1F2jbIsIZ%2FWMFX6bnqkNmTqw1skSM' https://localhost:20343/api/integrations/$id && echo $id; done
If you have more than 100 integrations, the last command should be run more than once.