Make minor changes to TravisCI sync, faster, reliable

This commit is contained in:
Tuan Dang
2023-02-24 15:59:12 +07:00
parent 0b08e574c7
commit 53d35757ee

View File

@@ -1364,18 +1364,25 @@ const syncSecretsTravisCI = async ({
},
}
)
).data?.env_vars;
)
.data
?.env_vars
.reduce((obj: any, secret: any) => ({
...obj,
[secret.name]: secret
}), {});
// add secrets
for (const key of Object.keys(secrets)) {
const existingSecret = getSecretsRes.find((s: any) => s.name == key);
if(!existingSecret){
for await (const key of Object.keys(secrets)) {
if (!(key in getSecretsRes)) {
// case: secret does not exist in travis ci
// -> add secret
await axios.post(
`${INTEGRATION_TRAVISCI_API_URL}/settings/env_vars?repository_id=${integration.appId}`,
{
env_var: {
name: key,
value: secrets[key],
value: secrets[key]
}
},
{
@@ -1385,10 +1392,12 @@ const syncSecretsTravisCI = async ({
"Accept-Encoding": "application/json",
},
}
)
}else { // update secret
);
} else {
// case: secret exists in travis ci
// -> update/set secret
await axios.patch(
`${INTEGRATION_TRAVISCI_API_URL}/settings/env_vars/${existingSecret.id}?repository_id=${existingSecret.repository_id}`,
`${INTEGRATION_TRAVISCI_API_URL}/settings/env_vars/${getSecretsRes[key].id}?repository_id=${getSecretsRes[key].repository_id}`,
{
env_var: {
name: key,
@@ -1402,29 +1411,29 @@ const syncSecretsTravisCI = async ({
"Accept-Encoding": "application/json",
},
}
)
}
}
// delete secret
for (const sec of getSecretsRes) {
if (!(sec.name in secrets)){
await axios.delete(
`${INTEGRATION_TRAVISCI_API_URL}/settings/env_vars/${sec.id}?repository_id=${sec.repository_id}`,
{
headers: {
"Authorization": `token ${accessToken}`,
"Content-Type": "application/json",
"Accept-Encoding": "application/json",
},
}
);
}
}
}catch (err) {
for await (const key of Object.keys(getSecretsRes)) {
if (!(key in secrets)){
// delete secret
await axios.delete(
`${INTEGRATION_TRAVISCI_API_URL}/settings/env_vars/${getSecretsRes[key].id}?repository_id=${getSecretsRes[key].repository_id}`,
{
headers: {
"Authorization": `token ${accessToken}`,
"Content-Type": "application/json",
"Accept-Encoding": "application/json",
},
}
);
}
}
} catch (err) {
Sentry.setUser(null);
Sentry.captureException(err);
throw new Error("Failed to sync secrets to CircleCI");
throw new Error("Failed to sync secrets to TravisCI");
}
}