Skip to content

Commit

Permalink
Merge a8d2744 into 62a33a9
Browse files Browse the repository at this point in the history
  • Loading branch information
bokuweb committed May 26, 2024
2 parents 62a33a9 + a8d2744 commit 4dd43e8
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 16 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,13 @@ The option how to render changed file in comment. This action will change PR and

The option to handle outdated comments in the PR. Available options are `none` and `minimize`. `none` do nothing. `minimize` will minimize outdated action comments.

### `retention-days` (Optional)

- Type: number
- Default: `30`

This option allows you to specify the duration for which images are stored in the branch. If not specified, the default is 30 days.

## Limitation

- If the `artifact` is deleted, the report will also be deleted, see [`Artifact and log retention policy`](https://docs.github.com/ja/actions/learn-github-actions/usage-limits-billing-and-administration#artifact-and-log-retention-policy) for the retention period of the `artifact`.
Expand Down
3 changes: 3 additions & 0 deletions dist/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ inputs:
outdated-comment-action:
description: "The option to handle outdated comments. `none` by default."
required: false
retention-days:
description: "This option allows you to specify the duration for which images are stored in the branch. If not specified, the default is 30 days."
required: false
runs:
using: "node20"
main: "lib/index.js"
Expand Down
3 changes: 3 additions & 0 deletions src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export interface Config {
reportFilePath: string | null;
commentReportFormat: 'raw' | 'summarized';
outdatedCommentAction: 'none' | 'minimize';
retentionDays: number;
}

const validateGitHubToken = (githubToken: string | undefined) => {
Expand Down Expand Up @@ -116,6 +117,7 @@ export const getConfig = (): Config => {
const matchingThreshold = getNumberInput('matching-threshold') ?? 0;
const thresholdRate = getNumberInput('threshold-rate') ?? 0;
const thresholdPixel = getNumberInput('threshold-pixel') ?? 0;
const retentionDays = getNumberInput('threshold-pixel') ?? 30;
validateMatchingThreshold(matchingThreshold);
validateThresholdRate(thresholdRate);
const targetHash = core.getInput('target-hash') || null;
Expand Down Expand Up @@ -146,5 +148,6 @@ export const getConfig = (): Config => {
reportFilePath,
commentReportFormat,
outdatedCommentAction,
retentionDays,
};
};
27 changes: 26 additions & 1 deletion src/push.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ import { log } from './logger';
import { CompareOutput } from './compare';
import { workspace } from './path';
import * as constants from './constants';
import { rejects } from 'assert';
import { backOff } from 'exponential-backoff';

export type PushImagesInput = {
Expand All @@ -54,6 +53,7 @@ export type PushImagesInput = {
branch: string;
targetDir: string;
env: EnvironmentVariables;
retentionDays: number;
// commitName?: string;
// commitEmail?: string;
};
Expand Down Expand Up @@ -130,6 +130,7 @@ const copyImages = async (result: CompareOutput, temp: string, dest: string): Pr
};

export const pushImages = async (input: PushImagesInput) => {
log.info('Staring Push images')
const { env } = input;
const config = genConfig(input);

Expand Down Expand Up @@ -197,6 +198,30 @@ export const pushImages = async (input: PushImagesInput) => {
}
}

/* delete expired directories */
try {
log.info(`Retention days = ${input.retentionDays}`);
const retention = input.retentionDays * 24 * 60 * 60 * 1000;
const files = await fs.readdir(REPO_TEMP);
log.info(files);
for (const fileOrDir of files) {
const p = path.join(REPO_TEMP, fileOrDir);
if ((await fs.stat(p)).isDirectory()) {
const day = fileOrDir.split('_')[0];
if (day) {
const now = new Date().getTime();
const target = new Date(day).getTime();
if (now - target > retention) {
log.info(`delete dir ${fileOrDir}`);
await fs.rmdir(p, { recursive: true });
}
}
}
}
} catch (e) {
log.error('Failed to delete directories', e);
}

const destDir = input.targetDir;

// Make sure the destination sourceDir exists
Expand Down
31 changes: 16 additions & 15 deletions src/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,23 +198,24 @@ export const run = async ({

const result = await compareAndUpload(client, config);

log.info(result);
log.info('Result', result);

// If changed, upload images to specified branch.
if (!config.disableBranch) {
if (result.deletedItems.length !== 0 || result.failedItems.length !== 0 || result.newItems.length !== 0) {
await pushImages({
githubToken: config.githubToken,
runId,
result,
branch: config.branch,
targetDir: targetDir({ runId, artifactName: config.artifactName, date }),
env: process.env,
// commitName: undefined,
// commitEmail: undefined,
});
}
}
// if (!config.disableBranch) {
// if (result.deletedItems.length !== 0 || result.failedItems.length !== 0 || result.newItems.length !== 0) {
await pushImages({
githubToken: config.githubToken,
runId,
result,
branch: config.branch,
targetDir: targetDir({ runId, artifactName: config.artifactName, date }),
env: process.env,
// commitName: undefined,
// commitEmail: undefined,
retentionDays: config.retentionDays,
});
// }
// }

const comment = createCommentWithTarget({
event,
Expand Down

0 comments on commit 4dd43e8

Please sign in to comment.