Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c1f8aa3c72 | |||
| 8a28d1f1ef | |||
| d04f4dd2bb | |||
| f5cf5950bd | |||
| eae73092ad | |||
| 69624a542e | |||
| 8aa273b8bd | |||
| 00458d4eb2 | |||
| 894ece033b | |||
| fe2a513fbb | |||
| 2193bdd4d6 | |||
| af51ffacee |
+5
-5
@@ -1,9 +1,9 @@
|
||||
FROM node:20-slim
|
||||
FROM alpine
|
||||
|
||||
# force rebuild to ensure git is installed
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
git \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
RUN apk add --no-cache bash nodejs npm git \
|
||||
&& node --version \
|
||||
&& npm --version \
|
||||
&& git --version
|
||||
|
||||
WORKDIR /action
|
||||
|
||||
|
||||
+17
-2
@@ -1,4 +1,5 @@
|
||||
import { spawnSync } from 'child_process';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { GITEA_SERVER_URL, GITEA_REPOSITORY, GITEA_TOKEN, PR_HEAD_BRANCH, FINDINGS_PATH } from './config.js';
|
||||
|
||||
@@ -10,14 +11,28 @@ function git(args, cwd) {
|
||||
}
|
||||
|
||||
export async function commitAndPush(workspace) {
|
||||
const repoDir = path.join(workspace, GITEA_REPOSITORY);
|
||||
const remoteUrl = GITEA_SERVER_URL.replace(/\/$/, '').replace('https://', `https://${GITEA_TOKEN}@`).replace('http://', `http://${GITEA_TOKEN}@`) + `/${GITEA_REPOSITORY}.git`;
|
||||
const remoteUrl = GITEA_SERVER_URL.replace(/\/$/, '')
|
||||
.replace('https://', `https://${GITEA_TOKEN}@`)
|
||||
.replace('http://', `http://${GITEA_TOKEN}@`) + `/${GITEA_REPOSITORY}.git`;
|
||||
|
||||
const repoDir = path.join(workspace, 'repo');
|
||||
|
||||
try {
|
||||
if (!fs.existsSync(repoDir)) {
|
||||
git(['clone', '--depth=1', '--branch', PR_HEAD_BRANCH, remoteUrl, repoDir], workspace);
|
||||
}
|
||||
|
||||
git(['config', 'user.email', 'ai-review[bot]@gitea'], repoDir);
|
||||
git(['config', 'user.name', 'AI Review Bot'], repoDir);
|
||||
git(['fetch', 'origin', PR_HEAD_BRANCH], repoDir);
|
||||
git(['checkout', PR_HEAD_BRANCH], repoDir);
|
||||
|
||||
// 將 findings.json 從 workspace 複製到 clone 的 repo
|
||||
const srcFindings = path.join(workspace, FINDINGS_PATH);
|
||||
const destFindings = path.join(repoDir, FINDINGS_PATH);
|
||||
fs.mkdirSync(path.dirname(destFindings), { recursive: true });
|
||||
fs.copyFileSync(srcFindings, destFindings);
|
||||
|
||||
git(['add', FINDINGS_PATH], repoDir);
|
||||
|
||||
const status = git(['status', '--porcelain'], repoDir);
|
||||
|
||||
Reference in New Issue
Block a user