Skip to content

Commit 0a30888

Browse files
committed
fix(gitlab-integration): fix GitLab integration
1 parent ea9478f commit 0a30888

File tree

4 files changed

+33
-24
lines changed

4 files changed

+33
-24
lines changed

src/api/commit-status.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ export function sendSuccessStatus(build: any, buildId: number): Promise<void> {
3131
return setBitbucketStatusSuccess(gitUrl, abstruseUrl,
3232
build.repository.access_token);
3333
} else if (build.repository.gitlab_id) {
34-
let id = build.data.project_id ?
35-
build.data.project_id : build.data.object_attributes.target_project_id;
36-
let sha = build.data.checkout_sha || build.data.object_attributes.last_commit.id;
34+
let id = build.repositories_id ?
35+
build.repositories_id : build.data.object_attributes.target_repositories_id;
36+
let sha = build.data.commit && build.data.commit.id || build.data.object_attributes.last_commit.id;
3737
let gitUrl = null;
3838
if (build.repository.api_url && build.repository.api_url !== '') {
3939
gitUrl = `${build.repository.api_url}/projects/${id}/statuses/${sha}`;
@@ -86,9 +86,9 @@ export function sendPendingStatus(buildData: any, buildId: number): Promise<void
8686

8787
return setBitbucketStatusPending(gitUrl, abstruseUrl, buildData.repository.access_token);
8888
} else if (buildData.repository.gitlab_id) {
89-
let id = buildData.data.project_id ?
90-
buildData.data.project_id : buildData.data.object_attributes.target_project_id;
91-
let sha = buildData.data.checkout_sha || buildData.data.object_attributes.last_commit.id;
89+
let id = buildData.repositories_id ?
90+
buildData.repositories_id : buildData.data.object_attributes.target_repositories_id;
91+
let sha = buildData.data.commit && buildData.data.commit.id || buildData.data.object_attributes.last_commit.id;
9292
let gitUrl = null;
9393
if (buildData.repository.api_url && buildData.repository.api_url !== '') {
9494
gitUrl = `${buildData.repository.api_url}/projects/${id}/statuses/${sha}`;
@@ -140,9 +140,9 @@ export function sendFailureStatus(buildData: any, buildId: number): Promise<void
140140

141141
return setBitbucketStatusFailure(gitUrl, abstruseUrl, buildData.repository.access_token);
142142
} else if (buildData.repository.gitlab_id) {
143-
let id = buildData.data.project_id ?
144-
buildData.data.project_id : buildData.data.object_attributes.target_project_id;
145-
let sha = buildData.data.checkout_sha || buildData.data.object_attributes.last_commit.id;
143+
let id = buildData.repositories_id ?
144+
buildData.repositories_id : buildData.data.object_attributes.target_repositories_id;
145+
let sha = buildData.data.commit && buildData.data.commit.id || buildData.data.object_attributes.last_commit.id;
146146
let gitUrl = null;
147147
if (buildData.repository.api_url && buildData.repository.api_url !== '') {
148148
gitUrl = `${buildData.repository.api_url}/projects/${id}/statuses/${sha}`;
@@ -398,7 +398,7 @@ function sendRequest(url: string, data: any, headers: any): Promise<any> {
398398
};
399399
logger.next(msg);
400400

401-
reject(err);
401+
resolve(err);
402402
} else {
403403
if (response.statusCode < 300 && response.statusCode >= 200) {
404404
let msg: LogMessageType = {
@@ -417,7 +417,7 @@ function sendRequest(url: string, data: any, headers: any): Promise<any> {
417417
};
418418
logger.next(msg);
419419

420-
reject({
420+
resolve({
421421
statusCode: response.statusCode,
422422
response: body
423423
});

src/api/db/repository.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ export function getRepositoryOnly(id: number): Promise<any> {
100100
resolve(repo);
101101
})
102102
.catch(err => reject(err));
103+
} else if (token_data.type === 'gitlab') {
104+
repo.access_token = repo.access_token && repo.access_token.token ?
105+
`${repo.access_token.gitlab_username}:${repo.access_token.token}` : null;
106+
resolve(repo);
103107
} else {
104108
repo.access_token = repo.access_token && repo.access_token.token ? repo.access_token.token : null;
105109
resolve(repo);

src/api/server-routes.ts

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,9 @@ export function repositoryRoutes(): express.Router {
347347
return Promise.resolve(accessToken);
348348
})
349349
.catch(err => Promise.reject(err));
350+
} else if (token_data.type === 'gitlab') {
351+
repo.access_token = repo.access_token && repo.access_token.token ?
352+
`${repo.access_token.gitlab_username}:${repo.access_token.token}` : null;
350353
} else {
351354
accessToken = repo.access_token && repo.access_token.token ? repo.access_token.token : null;
352355
return Promise.resolve(accessToken);
@@ -415,15 +418,12 @@ export function repositoryRoutes(): express.Router {
415418
repository.gitlab_id + '/repository/branches/master';
416419

417420
let accessToken = null;
421+
let headers = {};
418422
if (repository.access_token) {
419-
accessToken = repository.access_token.token || null;
420-
}
421-
422-
if (accessToken) {
423-
url = url.replace('//', `//${accessToken}@`);
423+
headers = { 'PRIVATE-TOKEN': repository.access_token.token };
424424
}
425425

426-
return getHttpJsonResponse(url);
426+
return getHttpJsonResponse(url, headers);
427427
} else if (repository.repository_provider === 'bitbucket') {
428428
let url = repository.api_url + '/' + repository.user_login + '/' + repository.name +
429429
'/commits/master';
@@ -495,6 +495,15 @@ export function repositoryRoutes(): express.Router {
495495
return getConfigRawFile(repository);
496496
})
497497
.catch(err => Promise.reject(err));
498+
} else if (token_data.type === 'gitlab') {
499+
accessToken = repo.access_token && repo.access_token.token ?
500+
`${repo.access_token.gitlab_username}:${repo.access_token.token}` : null;
501+
repository = {
502+
clone_url: repo.clone_url,
503+
branch: repo.default_branch,
504+
access_token: accessToken
505+
};
506+
return getConfigRawFile(repository);
498507
} else {
499508
accessToken = repo.access_token && repo.access_token.token ? repo.access_token.token : null;
500509
repository = {

src/api/utils.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,10 @@ export function generateRandomId(): string {
4747
return Math.random().toString(36).substring(7);
4848
}
4949

50-
export function getHttpJsonResponse(url: string): Promise<any> {
50+
export function getHttpJsonResponse(url: string, optHeaders: any = {}): Promise<any> {
5151
return new Promise((resolve, reject) => {
52-
let options = {
53-
url: url,
54-
headers: {
55-
'User-Agent': 'request'
56-
}
57-
};
52+
let headers = Object.assign({}, { 'User-Agent': 'abstruse' }, optHeaders);
53+
let options = { url, headers };
5854

5955
request(options, (err, resp, body) => {
6056
if (err) {

0 commit comments

Comments
 (0)