Skip to content

Commit

Permalink
feat(3284): add scmUri param for search pipelines [1] (#3285)
Browse files Browse the repository at this point in the history
Co-authored-by: Ming-Hay <157658916+minghay@users.noreply.github.com>
  • Loading branch information
y-oksaku and minghay authored Feb 19, 2025
1 parent bac996f commit 8d4f35c
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 2 deletions.
15 changes: 13 additions & 2 deletions plugins/pipelines/list.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
const joi = require('joi');
const schema = require('screwdriver-data-schema');
const idSchema = schema.models.pipeline.base.extract('id');
const scmUriSchema = schema.models.pipeline.base.extract('scmUri');
const listSchema = joi.array().items(schema.models.pipeline.get).label('List of Pipelines');
const pipelineIdsSchema = joi.alternatives().try(joi.array().items(idSchema), idSchema).required();
const IDS_KEY = 'ids[]';
Expand All @@ -21,7 +22,7 @@ module.exports = () => ({

handler: async (request, h) => {
const { pipelineFactory } = request.server.app;
const { sort, configPipelineId, sortBy, search, page, count } = request.query;
const { sort, configPipelineId, sortBy, search, scmUri, page, count } = request.query;
const scmContexts = pipelineFactory.scm.getScmContexts();
let pipelineArray = [];

Expand Down Expand Up @@ -55,6 +56,15 @@ module.exports = () => ({
// See https://www.w3schools.com/sql/sql_like.asp for syntax
keyword: `%${search}%`
};
} else if (scmUri) {
// The format of scmUri is 'github.com:123:main:source-dir'
// Search pipelines based on the same repository (include other branch)
const [scm, id] = scmUri.split(':');

config.search = {
field: 'scmUri',
keyword: `${scm}:${id}:%`
};
} else {
// default list all to 50 max count, according to schema.api.pagination
config.paginate = {
Expand Down Expand Up @@ -118,7 +128,8 @@ module.exports = () => ({
query: schema.api.pagination.concat(
joi.object({
configPipelineId: idSchema,
'ids[]': pipelineIdsSchema.optional()
'ids[]': pipelineIdsSchema.optional(),
scmUri: scmUriSchema
})
)
}
Expand Down
33 changes: 33 additions & 0 deletions test/plugins/pipelines.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,39 @@ describe('pipeline plugin test', () => {
});
});

it('returns 200 and all pipelines with matched scmUri', () => {
options.url = '/pipelines?scmUri=github.com:123:main';
pipelineFactoryMock.list
.withArgs({
params: {
scmContext: 'github:github.com'
},
sort: 'descending',
search: {
field: 'scmUri',
keyword: 'github.com:123:%'
}
})
.resolves(getPipelineMocks(testPipelines));
pipelineFactoryMock.list
.withArgs({
params: {
scmContext: 'gitlab:mygitlab'
},
sort: 'descending',
search: {
field: 'scmUri',
keyword: 'github.com:123:%'
}
})
.resolves([]);

return server.inject(options).then(reply => {
assert.equal(reply.statusCode, 200);
assert.deepEqual(reply.result, testPipelines);
});
});

it('returns 200 and all pipelines with matched configPipelineId', () => {
options.url = '/pipelines?page=1&count=3&configPipelineId=123';
pipelineFactoryMock.list
Expand Down

0 comments on commit 8d4f35c

Please sign in to comment.