diff options
8 files changed, 266 insertions, 3 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ALM.java b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ALM.java index e99482e3ed8..e653dd33827 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ALM.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/setting/ALM.java @@ -24,7 +24,8 @@ import java.util.Locale; public enum ALM { GITHUB, BITBUCKET, - AZURE_DEVOPS; + AZURE_DEVOPS, + GITLAB; public static ALM fromId(String almId) { return ALM.valueOf(almId.toUpperCase(Locale.ENGLISH)); diff --git a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/almsettings/AlmSettingsDbTester.java b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/almsettings/AlmSettingsDbTester.java index aedee5b7d89..7f536f63f62 100644 --- a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/almsettings/AlmSettingsDbTester.java +++ b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/almsettings/AlmSettingsDbTester.java @@ -32,6 +32,8 @@ import static org.sonar.db.almsettings.AlmSettingsTesting.newBitbucketAlmSetting import static org.sonar.db.almsettings.AlmSettingsTesting.newBitbucketProjectAlmSettingDto; import static org.sonar.db.almsettings.AlmSettingsTesting.newGithubAlmSettingDto; import static org.sonar.db.almsettings.AlmSettingsTesting.newGithubProjectAlmSettingDto; +import static org.sonar.db.almsettings.AlmSettingsTesting.newGitlabAlmSettingDto; +import static org.sonar.db.almsettings.AlmSettingsTesting.newGitlabProjectAlmSettingDto; public class AlmSettingsDbTester { @@ -52,6 +54,11 @@ public class AlmSettingsDbTester { } @SafeVarargs + public final AlmSettingDto insertGitlabAlmSetting(Consumer<AlmSettingDto>... populators) { + return insert(newGitlabAlmSettingDto(), populators); + } + + @SafeVarargs public final AlmSettingDto insertBitbucketAlmSetting(Consumer<AlmSettingDto>... populators) { return insert(newBitbucketAlmSettingDto(), populators); } @@ -65,6 +72,10 @@ public class AlmSettingsDbTester { return insertProjectAlmSetting(newAzureProjectAlmSettingDto(azureAlmSetting, project)); } + public ProjectAlmSettingDto insertGitlabProjectAlmSetting(AlmSettingDto gitlabAlmSetting, ComponentDto project) { + return insertProjectAlmSetting(newGitlabProjectAlmSettingDto(gitlabAlmSetting, project)); + } + @SafeVarargs public final ProjectAlmSettingDto insertBitbucketProjectAlmSetting(AlmSettingDto bitbucketAlmSetting, ComponentDto project, Consumer<ProjectAlmSettingDto>... populators) { return insertProjectAlmSetting(newBitbucketProjectAlmSettingDto(bitbucketAlmSetting, project), populators); diff --git a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/almsettings/AlmSettingsTesting.java b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/almsettings/AlmSettingsTesting.java index 13513e49bb8..f9defd29ab4 100644 --- a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/almsettings/AlmSettingsTesting.java +++ b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/almsettings/AlmSettingsTesting.java @@ -44,6 +44,13 @@ public class AlmSettingsTesting { .setAlm(ALM.AZURE_DEVOPS); } + public static AlmSettingDto newGitlabAlmSettingDto() { + return new AlmSettingDto() + .setKey(randomAlphanumeric(200)) + .setPersonalAccessToken(randomAlphanumeric(2000)) + .setAlm(ALM.GITLAB); + } + public static AlmSettingDto newBitbucketAlmSettingDto() { return new AlmSettingDto() .setKey(randomAlphanumeric(200)) @@ -59,9 +66,15 @@ public class AlmSettingsTesting { .setAlmRepo(randomAlphanumeric(256)); } - static ProjectAlmSettingDto newAzureProjectAlmSettingDto(AlmSettingDto githubAlmSetting, ComponentDto project) { + static ProjectAlmSettingDto newAzureProjectAlmSettingDto(AlmSettingDto azureAlmSetting, ComponentDto project) { return new ProjectAlmSettingDto() - .setAlmSettingUuid(githubAlmSetting.getUuid()) + .setAlmSettingUuid(azureAlmSetting.getUuid()) + .setProjectUuid(project.uuid()); + } + + static ProjectAlmSettingDto newGitlabProjectAlmSettingDto(AlmSettingDto gitlabAlmSetting, ComponentDto project) { + return new ProjectAlmSettingDto() + .setAlmSettingUuid(gitlabAlmSetting.getUuid()) .setProjectUuid(project.uuid()); } diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/AlmSettingsService.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/AlmSettingsService.java index 7cd7ca89474..d9f9a20137e 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/AlmSettingsService.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/AlmSettingsService.java @@ -67,6 +67,20 @@ public class AlmSettingsService extends BaseService { /** * * This is a POST request. + * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/alm_settings/create_gitlab">Further information about this action online (including a response example)</a> + * @since 8.1 + */ + public void createGitlab(CreateGitlabRequest request) { + call( + new PostRequest(path("create_gitlab")) + .setParam("key", request.getKey()) + .setParam("personalAccessToken", request.getPersonalAccessToken()) + .setMediaType(MediaTypes.JSON)).content(); + } + + /** + * + * This is a POST request. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/alm_settings/create_bitbucket">Further information about this action online (including a response example)</a> * @since 8.1 */ @@ -172,6 +186,19 @@ public class AlmSettingsService extends BaseService { /** * This is a POST request. + * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/alm_settings/set_gitlab_binding">Further information about this action online (including a response example)</a> + * @since 8.1 + */ + public void setGitlabBinding(SetGitlabBindingRequest request) { + call( + new PostRequest(path("set_gitlab_binding")) + .setParam("almSetting", request.getAlmSetting()) + .setParam("project", request.getProject()) + .setMediaType(MediaTypes.JSON)).content(); + } + + /** + * This is a POST request. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/alm_settings/set_bitbucket_binding">Further information about this action online (including a response example)</a> * @since 8.1 */ @@ -217,6 +244,21 @@ public class AlmSettingsService extends BaseService { /** * * This is a POST request. + * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/alm_settings/update_gitlab">Further information about this action online (including a response example)</a> + * @since 8.1 + */ + public void updateGitlab(UpdateGitlabRequest request) { + call( + new PostRequest(path("update_gitlab")) + .setParam("key", request.getKey()) + .setParam("newKey", request.getNewKey()) + .setParam("personalAccessToken", request.getPersonalAccessToken()) + .setMediaType(MediaTypes.JSON)).content(); + } + + /** + * + * This is a POST request. * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/alm_settings/update_bitbucket">Further information about this action online (including a response example)</a> * @since 8.1 */ diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/CreateGitlabRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/CreateGitlabRequest.java new file mode 100644 index 00000000000..0196e627225 --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/CreateGitlabRequest.java @@ -0,0 +1,59 @@ +/* + * SonarQube + * Copyright (C) 2009-2019 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonarqube.ws.client.almsettings; + +import javax.annotation.Generated; + +/** + * This is a POST request. + * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/alm_settings/create_gitlab">Further information about this action online (including a response example)</a> + * @since 8.1 + */ +@Generated("sonar-ws-generator") +public class CreateGitlabRequest { + + private String key; + private String personalAccessToken; + + /** + * This is a mandatory parameter. + */ + public CreateGitlabRequest setKey(String key) { + this.key = key; + return this; + } + + public String getKey() { + return key; + } + + /** + * This is a mandatory parameter. + */ + public CreateGitlabRequest setPersonalAccessToken(String personalAccessToken) { + this.personalAccessToken = personalAccessToken; + return this; + } + + public String getPersonalAccessToken() { + return personalAccessToken; + } + +} diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/SetGitlabBindingRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/SetGitlabBindingRequest.java new file mode 100644 index 00000000000..3bcd1b1afa4 --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/SetGitlabBindingRequest.java @@ -0,0 +1,59 @@ +/* + * SonarQube + * Copyright (C) 2009-2019 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonarqube.ws.client.almsettings; + +import javax.annotation.Generated; + +/** + * This is a POST request. + * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/alm_settings/set_gitlab_binding">Further information about this action online (including a response example)</a> + * @since 8.1 + */ +@Generated("sonar-ws-generator") +public class SetGitlabBindingRequest { + + private String almSetting; + private String project; + + /** + * This is a mandatory parameter. + */ + public SetGitlabBindingRequest setAlmSetting(String almSetting) { + this.almSetting = almSetting; + return this; + } + + public String getAlmSetting() { + return almSetting; + } + + /** + * This is a mandatory parameter. + */ + public SetGitlabBindingRequest setProject(String project) { + this.project = project; + return this; + } + + public String getProject() { + return project; + } + +} diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/UpdateGitlabRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/UpdateGitlabRequest.java new file mode 100644 index 00000000000..e282158901b --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/almsettings/UpdateGitlabRequest.java @@ -0,0 +1,71 @@ +/* + * SonarQube + * Copyright (C) 2009-2019 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonarqube.ws.client.almsettings; + +import javax.annotation.Generated; + +/** + * This is a POST request. + * @see <a href="https://next.sonarqube.com/sonarqube/web_api/api/alm_settings/update_gitlab">Further information about this action online (including a response example)</a> + * @since 8.1 + */ +@Generated("sonar-ws-generator") +public class UpdateGitlabRequest { + + private String key; + private String newKey; + private String personalAccessToken; + + public String getKey() { + return key; + } + + /** + * This is a mandatory parameter. + */ + public UpdateGitlabRequest setKey(String key) { + this.key = key; + return this; + } + + public String getNewKey() { + return newKey; + } + + /** + */ + public UpdateGitlabRequest setNewKey(String newKey) { + this.newKey = newKey; + return this; + } + + public String getPersonalAccessToken() { + return personalAccessToken; + } + + /** + * This is a mandatory parameter. + */ + public UpdateGitlabRequest setPersonalAccessToken(String personalAccessToken) { + this.personalAccessToken = personalAccessToken; + return this; + } + +} diff --git a/sonar-ws/src/main/protobuf/ws-alm_settings.proto b/sonar-ws/src/main/protobuf/ws-alm_settings.proto index abbae3a99b8..13c5403a335 100644 --- a/sonar-ws/src/main/protobuf/ws-alm_settings.proto +++ b/sonar-ws/src/main/protobuf/ws-alm_settings.proto @@ -29,6 +29,7 @@ message ListDefinitionsWsResponse { repeated AlmSettingGithub github = 1; repeated AlmSettingAzure azure = 2; repeated AlmSettingBitbucket bitbucket = 3; + repeated AlmSettingGitlab gitlab = 4; } message AlmSettingGithub { @@ -49,6 +50,11 @@ message AlmSettingBitbucket { optional string personalAccessToken = 3; } +message AlmSettingGitlab { + optional string key = 1; + optional string personalAccessToken = 2; +} + // WS api/alm_settings/get_binding message GetBindingWsResponse { optional string key = 1; @@ -62,6 +68,7 @@ enum Alm { github = 0; azure = 1; bitbucket = 2; + gitlab = 3; } // WS api/alm_settings/list |