diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 945bf0d..6e3f80b 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -16,19 +16,11 @@ jobs:
runs-on: ubuntu-latest
env:
NODE_VERSION: '18'
- GIT_USER_NAME: 'mocayo'
- GIT_USER_EMAIL: 'qihai@bytedance.com'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- - name: Config Git User
- # should be turn to ci user
- run: |
- git config --local user.name ${{ env.GIT_USER_NAME }}
- git config --local user.email ${{ env.GIT_USER_EMAIL }}
-
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
diff --git a/packages/ci-tools/CHANGELOG.md b/packages/ci-tools/CHANGELOG.md
index dc583cf..3d1912c 100644
--- a/packages/ci-tools/CHANGELOG.md
+++ b/packages/ci-tools/CHANGELOG.md
@@ -1,6 +1,6 @@
# π Change Log - @cozeloop/ci-tools
-## 0.0.2
+## 0.0.2 ~ 0.0.5
* [feat] add `sync-pr` to synchronize GitHub PR via lark in `lark` command
## 0.0.1
diff --git a/packages/ci-tools/package.json b/packages/ci-tools/package.json
index d09ad83..e6a7c7f 100644
--- a/packages/ci-tools/package.json
+++ b/packages/ci-tools/package.json
@@ -1,7 +1,7 @@
{
"name": "@cozeloop/ci-tools",
- "version": "0.0.4",
- "description": "π§ Tools for CI",
+ "version": "0.0.5",
+ "description": "π§ Tools for Coze Loop CI",
"homepage": "https://github.com/coze-dev/cozeloop-js/tree/main/packages/ci-tools",
"bugs": {
"url": "https://github.com/coze-dev/cozeloop-js/issues"
diff --git a/packages/ci-tools/src/index.ts b/packages/ci-tools/src/index.ts
index 1ad5ad8..718eb6e 100644
--- a/packages/ci-tools/src/index.ts
+++ b/packages/ci-tools/src/index.ts
@@ -22,3 +22,7 @@ export function run() {
program.parse(process.argv);
}
+
+// if (require.main === module) {
+// run();
+// }
diff --git a/packages/ci-tools/src/lark/sync-pr.ts b/packages/ci-tools/src/lark/sync-pr.ts
index 6a097ba..cb60c3b 100644
--- a/packages/ci-tools/src/lark/sync-pr.ts
+++ b/packages/ci-tools/src/lark/sync-pr.ts
@@ -5,6 +5,27 @@ import { Client } from '@larksuiteoapi/node-sdk';
import { larkOptionSchema, messageReceiverSchema } from './schema';
+function makeCRUrl(pr_url?: string) {
+ const baseUrl = process.env.PR_CR_BASE_URL;
+
+ if (!pr_url || !baseUrl) {
+ return;
+ }
+
+ const docUrl = process.env.PR_CR_DOC_URL || '';
+ const formData = JSON.stringify([
+ { name: 'pr_url', value: pr_url },
+ { name: 'doc_url', value: docUrl },
+ ]);
+
+ const cr_url = new URL(baseUrl);
+ cr_url.searchParams.append('formData', formData);
+ cr_url.searchParams.append('autoreg', 'true');
+ cr_url.searchParams.append('fromapp', 'GitHub');
+
+ return cr_url.toString();
+}
+
function makePrMessage() {
const repo_name = process.env.REPO_NAME;
const pr_action = process.env.PR_ACTION;
@@ -17,11 +38,14 @@ function makePrMessage() {
const pr_target_owner = process.env.PR_TARGET_OWNER;
const pr_target_ref = process.env.PR_TARGET_REF;
const pr_merged = process.env.PR_MERGED;
+ const cr_url = makeCRUrl(pr_url);
- const title =
- pr_action === 'closed' && pr_merged === 'true'
- ? `π PR #${pr_number} merged`
- : `π’ PR #${pr_number} ${pr_action}`;
+ const isOpen = pr_action === 'opened' || pr_action === 'reopened';
+ const isMerged = pr_action === 'closed' && pr_merged === 'true';
+
+ const title = isMerged
+ ? `π PR #${pr_number} merged`
+ : `π’ PR #${pr_number} ${pr_action}`;
return JSON.stringify({
schema: '2.0',
@@ -59,13 +83,43 @@ function makePrMessage() {
margin: '0px 0px 0px 0px',
},
{
- tag: 'markdown',
- content: `π εεΎζ₯η`,
- text_align: 'left',
- text_size: 'normal_v2',
- margin: '0px 0px 0px 0px',
+ tag: 'column_set',
+ columns: [
+ {
+ tag: 'column',
+ width: 'weighted',
+ elements: [
+ {
+ tag: 'markdown',
+ content: `π εεΎζ₯η`,
+ text_align: 'left',
+ text_size: 'normal_v2',
+ margin: '0px 0px 0px 0px',
+ },
+ ],
+ vertical_align: 'top',
+ weight: 1,
+ },
+ isOpen && cr_url
+ ? {
+ tag: 'column',
+ width: 'weighted',
+ elements: [
+ {
+ tag: 'markdown',
+ content: `π Aime CR`,
+ text_align: 'left',
+ text_size: 'normal_v2',
+ margin: '0px 0px 0px 0px',
+ },
+ ],
+ vertical_align: 'top',
+ weight: 1,
+ }
+ : undefined,
+ ],
},
- ],
+ ].filter(v => Boolean(v)),
},
header: {
title: {