mirror of
https://code.forgejo.org/actions/git-backporting.git
synced 2025-05-31 09:54:28 -04:00
feat(issue-41): set and inherit labels (#48)
fix https://github.com/kiegroup/git-backporting/issues/41
This commit is contained in:
parent
f923f7f4c2
commit
fcc01673f4
28 changed files with 962 additions and 140 deletions
|
@ -10,6 +10,7 @@ export interface GitPullRequest {
|
|||
body: string,
|
||||
reviewers: string[],
|
||||
assignees: string[],
|
||||
labels: string[],
|
||||
targetRepo: GitRepository,
|
||||
sourceRepo: GitRepository,
|
||||
nCommits?: number, // number of commits in the pr
|
||||
|
@ -32,6 +33,7 @@ export interface BackportPullRequest {
|
|||
body: string, // pr body
|
||||
reviewers: string[], // pr list of reviewers
|
||||
assignees: string[], // pr list of assignees
|
||||
labels: string[], // pr list of assigned labels
|
||||
branchName?: string,
|
||||
}
|
||||
|
||||
|
|
|
@ -59,13 +59,26 @@ export default class GitHubClient implements GitClient {
|
|||
head: backport.head,
|
||||
base: backport.base,
|
||||
title: backport.title,
|
||||
body: backport.body
|
||||
body: backport.body,
|
||||
});
|
||||
|
||||
if (!data) {
|
||||
throw new Error("Pull request creation failed");
|
||||
}
|
||||
|
||||
if (backport.labels.length > 0) {
|
||||
try {
|
||||
await this.octokit.issues.addLabels({
|
||||
owner: backport.owner,
|
||||
repo: backport.repo,
|
||||
issue_number: (data as PullRequest).number,
|
||||
labels: backport.labels,
|
||||
});
|
||||
} catch (error) {
|
||||
this.logger.error(`Error setting labels: ${error}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (backport.reviewers.length > 0) {
|
||||
try {
|
||||
await this.octokit.pulls.requestReviewers({
|
||||
|
|
|
@ -26,6 +26,7 @@ export default class GitHubMapper implements GitResponseMapper<PullRequest, "ope
|
|||
mergedBy: pr.merged_by?.login,
|
||||
reviewers: pr.requested_reviewers.filter(r => "login" in r).map((r => (r as User)?.login)),
|
||||
assignees: pr.assignees.filter(r => "login" in r).map(r => r.login),
|
||||
labels: pr.labels.map(l => l.name),
|
||||
sourceRepo: await this.mapSourceRepo(pr),
|
||||
targetRepo: await this.mapTargetRepo(pr),
|
||||
nCommits: pr.commits,
|
||||
|
|
|
@ -72,6 +72,18 @@ export default class GitLabClient implements GitClient {
|
|||
|
||||
const mr = data as MergeRequestSchema;
|
||||
|
||||
// labels
|
||||
if (backport.labels.length > 0) {
|
||||
try {
|
||||
this.logger.info("Setting labels: " + backport.labels);
|
||||
await this.client.put(`/projects/${projectId}/merge_requests/${mr.iid}`, {
|
||||
labels: backport.labels.join(","),
|
||||
});
|
||||
} catch(error) {
|
||||
this.logger.warn("Failure trying to update labels. " + error);
|
||||
}
|
||||
}
|
||||
|
||||
// reviewers
|
||||
const reviewerIds: number[] = [];
|
||||
for(const r of backport.reviewers) {
|
||||
|
|
|
@ -25,7 +25,6 @@ export default class GitLabMapper implements GitResponseMapper<MergeRequestSchem
|
|||
}
|
||||
|
||||
async mapPullRequest(mr: MergeRequestSchema): Promise<GitPullRequest> {
|
||||
// throw new Error("Method not implemented.");
|
||||
return {
|
||||
number: mr.iid,
|
||||
author: mr.author.username,
|
||||
|
@ -38,6 +37,7 @@ export default class GitLabMapper implements GitResponseMapper<MergeRequestSchem
|
|||
mergedBy: mr.merged_by?.username,
|
||||
reviewers: mr.reviewers?.map((r => r.username)) ?? [],
|
||||
assignees: mr.assignees?.map((r => r.username)) ?? [],
|
||||
labels: mr.labels ?? [],
|
||||
sourceRepo: await this.mapSourceRepo(mr),
|
||||
targetRepo: await this.mapTargetRepo(mr),
|
||||
nCommits: 1, // info not present on mr
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue