ci(release): handle no folder gracefully (#27)

This commit is contained in:
Sebastian Poxhofer 2025-03-01 01:20:00 +01:00 committed by GitHub
parent 66adc32ff7
commit bf4743acac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 0 deletions

View file

@ -57,6 +57,12 @@ describe("push-charts", () => {
}); });
describe("getChangedCharts", () => { describe("getChangedCharts", () => {
test("should return empty if archive folder does not exist", async () => {
fs.access.mockRejectedValue(new Error("not found"));
child_process.execSync.mockReturnValue(Buffer.from(""));
await expect(getChangedChartsArchives(["my-chart"])).resolves.toEqual([]);
});
test("should return changed chart if only one exists", async () => { test("should return changed chart if only one exists", async () => {
fs.readdir.mockResolvedValue([myChartDirentMock]); fs.readdir.mockResolvedValue([myChartDirentMock]);
child_process.execSync.mockReturnValue(Buffer.from("")); child_process.execSync.mockReturnValue(Buffer.from(""));

View file

@ -15,6 +15,11 @@ export async function main(rawArgs: string[]) {
const args = rawArgs.slice(2); const args = rawArgs.slice(2);
const archives = await getChangedChartsArchives(args); const archives = await getChangedChartsArchives(args);
if (archives.length === 0) {
console.log("No charts to push");
return;
}
console.log("Pushing charts"); console.log("Pushing charts");
for (const archive of archives) { for (const archive of archives) {
const cmd = `helm push "${archive.path}" "oci://ghcr.io/${process.env.GITHUB_REPOSITORY}"`; const cmd = `helm push "${archive.path}" "oci://ghcr.io/${process.env.GITHUB_REPOSITORY}"`;
@ -45,6 +50,13 @@ export async function getChangedChartsArchives(
} }
async function getChartArchives(): Promise<Record<string, Archive>> { async function getChartArchives(): Promise<Record<string, Archive>> {
try {
await fs.access(CR_RELEASE_PACKAGE_PATH);
} catch (e) {
console.log("No chart archives found");
return {};
}
const archiveList = await fs.readdir(CR_RELEASE_PACKAGE_PATH, { const archiveList = await fs.readdir(CR_RELEASE_PACKAGE_PATH, {
withFileTypes: true, withFileTypes: true,
}); });