mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 18:27:19 +00:00
Make minor changes to TravisCI sync, faster, reliable
This commit is contained in:
@@ -1364,18 +1364,25 @@ const syncSecretsTravisCI = async ({
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
).data?.env_vars;
|
)
|
||||||
|
.data
|
||||||
|
?.env_vars
|
||||||
|
.reduce((obj: any, secret: any) => ({
|
||||||
|
...obj,
|
||||||
|
[secret.name]: secret
|
||||||
|
}), {});
|
||||||
|
|
||||||
// add secrets
|
// add secrets
|
||||||
for (const key of Object.keys(secrets)) {
|
for await (const key of Object.keys(secrets)) {
|
||||||
const existingSecret = getSecretsRes.find((s: any) => s.name == key);
|
if (!(key in getSecretsRes)) {
|
||||||
if(!existingSecret){
|
// case: secret does not exist in travis ci
|
||||||
|
// -> add secret
|
||||||
await axios.post(
|
await axios.post(
|
||||||
`${INTEGRATION_TRAVISCI_API_URL}/settings/env_vars?repository_id=${integration.appId}`,
|
`${INTEGRATION_TRAVISCI_API_URL}/settings/env_vars?repository_id=${integration.appId}`,
|
||||||
{
|
{
|
||||||
env_var: {
|
env_var: {
|
||||||
name: key,
|
name: key,
|
||||||
value: secrets[key],
|
value: secrets[key]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1385,10 +1392,12 @@ const syncSecretsTravisCI = async ({
|
|||||||
"Accept-Encoding": "application/json",
|
"Accept-Encoding": "application/json",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
)
|
);
|
||||||
}else { // update secret
|
} else {
|
||||||
|
// case: secret exists in travis ci
|
||||||
|
// -> update/set secret
|
||||||
await axios.patch(
|
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: {
|
env_var: {
|
||||||
name: key,
|
name: key,
|
||||||
@@ -1402,29 +1411,29 @@ const syncSecretsTravisCI = async ({
|
|||||||
"Accept-Encoding": "application/json",
|
"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.setUser(null);
|
||||||
Sentry.captureException(err);
|
Sentry.captureException(err);
|
||||||
throw new Error("Failed to sync secrets to CircleCI");
|
throw new Error("Failed to sync secrets to TravisCI");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user