70bf21e064
Handle Changesets / Handle Changesets (push) Waiting to run
Semgrep OSS scan / semgrep-oss (push) Waiting to run
Deploy (to testing) and Test Playground Preview Worker / Deploy Playground Preview Worker (testing) (push) Has been skipped
Deploy Workers Shared Staging / Deploy Workers Shared Staging (push) Failing after 0s
Prerelease / build (push) Has been skipped
217 lines
5.9 KiB
TypeScript
217 lines
5.9 KiB
TypeScript
import {
|
|
deleteAgentMemoryNamespace,
|
|
deleteCertificate,
|
|
deleteContainerApplication,
|
|
deleteContainerImage,
|
|
deleteDatabase,
|
|
deleteHyperdriveConfig,
|
|
deleteKVNamespace,
|
|
deleteProject,
|
|
deleteR2Bucket,
|
|
deleteWorker,
|
|
listCertificates,
|
|
listE2eContainerImages,
|
|
listHyperdriveConfigs,
|
|
listTmpAgentMemoryNamespaces,
|
|
listTmpDatabases,
|
|
listTmpE2EContainerApplications,
|
|
listTmpE2EProjects,
|
|
listTmpE2EWorkers,
|
|
listTmpKVNamespaces,
|
|
listTmpR2Buckets,
|
|
} from "./common";
|
|
|
|
if (!process.env.CLOUDFLARE_API_TOKEN) {
|
|
console.error("CLOUDFLARE_API_TOKEN must be set");
|
|
process.exit(1);
|
|
}
|
|
|
|
if (!process.env.CLOUDFLARE_ACCOUNT_ID) {
|
|
console.error("CLOUDFLARE_ACCOUNT_ID must be set");
|
|
process.exit(1);
|
|
}
|
|
|
|
run().catch((e) => {
|
|
if ("code" in e) {
|
|
process.exit(e.code);
|
|
}
|
|
});
|
|
|
|
async function run() {
|
|
// KV namespaces don't have a creation timestamp, but deletion will fail if there is a worker bound to it
|
|
// so delete these first to avoid interrupting running e2e jobs (unless you are very very unlucky)
|
|
await deleteKVNamespaces();
|
|
|
|
await deleteR2Buckets();
|
|
|
|
await deleteProjects();
|
|
|
|
await deleteWorkers();
|
|
|
|
await deleteD1Databases();
|
|
|
|
await deleteHyperdriveConfigs();
|
|
|
|
await deleteMtlsCertificates();
|
|
|
|
await deleteContainerApplications();
|
|
|
|
await deleteAgentMemoryNamespaces();
|
|
|
|
deleteContainerImages();
|
|
}
|
|
|
|
async function deleteKVNamespaces() {
|
|
const kvNamespacesToDelete = await listTmpKVNamespaces();
|
|
for (const kvNamespace of kvNamespacesToDelete) {
|
|
console.log("Deleting KV namespace: " + kvNamespace.title);
|
|
if (await deleteKVNamespace(kvNamespace.id)) {
|
|
console.log(`Successfully deleted KV namespace ${kvNamespace.id}`);
|
|
} else {
|
|
console.log(`Failed to delete KV namespace ${kvNamespace.id}`);
|
|
}
|
|
}
|
|
|
|
if (kvNamespacesToDelete.length === 0) {
|
|
console.log(`No KV namespaces to delete.`);
|
|
}
|
|
}
|
|
|
|
async function deleteProjects() {
|
|
const projectsToDelete = await listTmpE2EProjects();
|
|
|
|
for (const project of projectsToDelete) {
|
|
console.log("Deleting Pages project: " + project.name);
|
|
if (await deleteProject(project.name)) {
|
|
console.log(`Successfully deleted project ${project.name}`);
|
|
} else {
|
|
console.log(`Failed to delete project ${project.name}`);
|
|
}
|
|
}
|
|
|
|
if (projectsToDelete.length === 0) {
|
|
console.log(`No projects to delete.`);
|
|
}
|
|
}
|
|
|
|
function deleteContainerImages() {
|
|
const containerImagesToDelete = listE2eContainerImages();
|
|
|
|
for (const image of containerImagesToDelete) {
|
|
console.log("Deleting Container image: " + image.name + ":" + image.tag);
|
|
if (deleteContainerImage(image)) {
|
|
console.log(`Successfully deleted project ${image.name}:${image.tag}`);
|
|
} else {
|
|
console.log(`Failed to delete project ${image.name}:${image.tag}`);
|
|
}
|
|
}
|
|
|
|
if (containerImagesToDelete.length === 0) {
|
|
console.log(`No container image to delete.`);
|
|
}
|
|
}
|
|
|
|
async function deleteWorkers() {
|
|
const workersToDelete = await listTmpE2EWorkers();
|
|
|
|
for (const worker of workersToDelete) {
|
|
console.log("Deleting worker: " + worker.script_name);
|
|
if (await deleteWorker(worker.script_name)) {
|
|
console.log(`Successfully deleted Worker ${worker.script_name}`);
|
|
} else {
|
|
console.log(`Failed to delete Worker ${worker.script_name}`);
|
|
}
|
|
}
|
|
|
|
if (workersToDelete.length === 0) {
|
|
console.log(`No workers to delete.`);
|
|
}
|
|
}
|
|
|
|
async function deleteD1Databases() {
|
|
const d1DatabasesToDelete = await listTmpDatabases();
|
|
|
|
for (const db of d1DatabasesToDelete) {
|
|
console.log("Deleting D1 database: " + db.name);
|
|
if (await deleteDatabase(db.uuid)) {
|
|
console.log(`Successfully deleted D1 database ${db.uuid}`);
|
|
} else {
|
|
console.log(`Failed to delete D1 database ${db.uuid}`);
|
|
}
|
|
}
|
|
if (d1DatabasesToDelete.length === 0) {
|
|
console.log(`No D1 databases to delete.`);
|
|
}
|
|
}
|
|
|
|
async function deleteHyperdriveConfigs() {
|
|
const hyperdriveConfigsToDelete = await listHyperdriveConfigs();
|
|
for (const config of hyperdriveConfigsToDelete) {
|
|
console.log("Deleting Hyperdrive configs: " + config.id);
|
|
|
|
if (await deleteHyperdriveConfig(config.id)) {
|
|
console.log(`Successfully deleted Hyperdrive config ${config.id}`);
|
|
} else {
|
|
console.log(`Failed to delete Hyperdrive config ${config.id}`);
|
|
}
|
|
}
|
|
if (hyperdriveConfigsToDelete.length === 0) {
|
|
console.log(`No Hyperdrive configs to delete.`);
|
|
}
|
|
}
|
|
|
|
async function deleteMtlsCertificates() {
|
|
const mtlsCertificates = await listCertificates();
|
|
for (const certificate of mtlsCertificates) {
|
|
console.log("Deleting mTLS certificate: " + certificate.id);
|
|
if (await deleteCertificate(certificate.id)) {
|
|
console.log(`Successfully deleted mTLS certificate ${certificate.id}`);
|
|
} else {
|
|
console.log(`Failed to delete mTLS certificate ${certificate.id}`);
|
|
}
|
|
}
|
|
if (mtlsCertificates.length === 0) {
|
|
console.log(`No mTLS certificates to delete.`);
|
|
}
|
|
}
|
|
|
|
async function deleteAgentMemoryNamespaces() {
|
|
const namespacesToDelete = await listTmpAgentMemoryNamespaces();
|
|
for (const ns of namespacesToDelete) {
|
|
console.log("Deleting Agent Memory namespace: " + ns.name);
|
|
if (await deleteAgentMemoryNamespace(ns.name)) {
|
|
console.log(`Successfully deleted Agent Memory namespace ${ns.name}`);
|
|
} else {
|
|
console.log(`Failed to delete Agent Memory namespace ${ns.name}`);
|
|
}
|
|
}
|
|
if (namespacesToDelete.length === 0) {
|
|
console.log(`No Agent Memory namespaces to delete.`);
|
|
}
|
|
}
|
|
|
|
async function deleteContainerApplications() {
|
|
const containers = await listTmpE2EContainerApplications();
|
|
for (const container of containers) {
|
|
await deleteContainerApplication(container);
|
|
console.log(`Deleted ${container.name} (${container.id})`);
|
|
}
|
|
}
|
|
|
|
async function deleteR2Buckets() {
|
|
const bucketsToDelete = await listTmpR2Buckets();
|
|
|
|
for (const bucket of bucketsToDelete) {
|
|
console.log("Deleting R2 bucket: " + bucket.name);
|
|
if (await deleteR2Bucket(bucket.name)) {
|
|
console.log(`Successfully deleted R2 bucket ${bucket.name}`);
|
|
} else {
|
|
console.log(`Failed to delete R2 bucket ${bucket.name}`);
|
|
}
|
|
}
|
|
|
|
if (bucketsToDelete.length === 0) {
|
|
console.log(`No R2 buckets to delete.`);
|
|
}
|
|
}
|