diff --git a/build.gradle b/build.gradle index af2393e..cddf6fc 100644 --- a/build.gradle +++ b/build.gradle @@ -2,9 +2,10 @@ plugins { id 'io.spring.dependency-management' version '1.1.7' id 'java' id 'jacoco' - id "com.github.node-gradle.node" version "2.2.1" + id "com.github.node-gradle.node" version "7.1.0" id "org.openapi.generator" version "7.16.0" - id "org.springframework.boot" version "3.4.2" apply false + id "org.springframework.boot" version "${springBootVersion}" apply false + id 'com.gradleup.shadow' version '9.3.1' } import org.openapitools.generator.gradle.plugin.tasks.GenerateTask @@ -19,11 +20,9 @@ apply from: scriptsUrl + '/release-fat.gradle' apply from: scriptsUrl + '/signing.gradle' repositories { - mavenCentral { url "https://repo1.maven.org/maven2" } - maven { url "https://packages.atlassian.com/maven/repository/public" } - + mavenCentral { url = "https://repo1.maven.org/maven2" } if (!releaseMode) { - maven { url 'https://jitpack.io' } + maven { url = 'https://jitpack.io' } } } @@ -59,15 +58,16 @@ dependencies { testAnnotationProcessor "org.projectlombok:lombok:${lombokVersion}" testImplementation('org.junit.jupiter:junit-jupiter:5.11.4') - testImplementation "org.mockito:mockito-junit-jupiter:5.14.2" + testImplementation "org.mockito:mockito-junit-jupiter:5.21.0" + testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } sourceSets { main { java { - srcDirs "$buildDir/generated/src/main/java" - exclude("$buildDir/generated/src/main/java/com/epam/reportportal/api/jira/MyselfApi.java") + srcDirs layout.buildDirectory.dir("generated/src/main/java").get().asFile.path + exclude("${layout.buildDirectory.dir("generated/src/main/java").get().asFile.path}/com/epam/reportportal/api/jira/MyselfApi.java") } } } @@ -76,7 +76,7 @@ sourceSets { tasks.register('generateJiraApi', GenerateTask) { generatorName.set("java") inputSpec.set("$rootDir/src/main/resources/openapi/swagger-v3.v3.json") - outputDir.set("$buildDir/generated") + outputDir.set(layout.buildDirectory.dir("generated").get().asFile.path) configFile.set("$rootDir/src/main/resources/openapi/config.json") ignoreFileOverride = "${projectDir.path}/.openapi-generator-ignore" skipOverwrite.set(true) @@ -93,9 +93,7 @@ test { build.dependsOn jacocoTestReport -artifacts { - archives shadowJar -} +assemble.dependsOn shadowJar sourceSets { main { @@ -135,7 +133,7 @@ shadowJar { into("/resources") } configurations = [project.configurations.compileClasspath] - zip64 true + zip64 = true dependencies { include(dependency("jakarta.ws.rs:jakarta.ws.rs-api:.*")) include(dependency("org.apache.tomcat:tomcat-annotations-api:.*")) diff --git a/gradle.properties b/gradle.properties index 5f9bfef..3d23946 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ -version=5.13.7 +version=5.13.8 description=EPAM Report Portal. Cloud Jira plugin pluginId = JIRA Cloud -springBootVersion=3.4.2 +springBootVersion=3.4.12 lombokVersion=1.18.36 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9..61285a6 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index df97d72..37f78a6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/project-properties.gradle b/project-properties.gradle index 7d7763d..88d4a0d 100755 --- a/project-properties.gradle +++ b/project-properties.gradle @@ -7,5 +7,5 @@ project.ext { publishRepo = "https://maven.pkg.github.com/reportportal/plugin-bts-jira-cloud" dependencyRepos = ["plugin-api", "commons-bom"] releaseMode = project.hasProperty("releaseMode") - pluginsDir = "$buildDir/plugins" + pluginsDir = layout.buildDirectory.dir("plugins").get().asFile.path } diff --git a/src/main/java/com/epam/reportportal/extension/jira/command/utils/JIRATicketUtils.java b/src/main/java/com/epam/reportportal/extension/jira/command/utils/JIRATicketUtils.java index 71f0970..ff67805 100755 --- a/src/main/java/com/epam/reportportal/extension/jira/command/utils/JIRATicketUtils.java +++ b/src/main/java/com/epam/reportportal/extension/jira/command/utils/JIRATicketUtils.java @@ -99,7 +99,8 @@ public static IssueUpdateDetails toIssueInput(JiraRestClient client, Project jir ProjectIssueCreateMetadata project = issueCreateMetadata.getProjects().get(0); BusinessRule.expect(project, Predicates.notNull()) - .verify(ErrorType.UNABLE_INTERACT_WITH_INTEGRATION, String.format("Project %s not found", jiraProject.getKey())); + .verify(ErrorType.UNABLE_INTERACT_WITH_INTEGRATION, + String.format("Project %s not found", jiraProject.getKey())); List cimIssueType = project.getIssuetypes(); @@ -117,7 +118,8 @@ public static IssueUpdateDetails toIssueInput(JiraRestClient client, Project jir // Skip issuetype and project fields cause got them in // issueInputBuilder already - if (one.getId().equalsIgnoreCase(IssueField.ISSUE_TYPE_FIELD.value) || one.getId().equalsIgnoreCase(IssueField.PROJECT_FIELD.value)) { + if (one.getId().equalsIgnoreCase(IssueField.ISSUE_TYPE_FIELD.value) + || one.getId().equalsIgnoreCase(IssueField.PROJECT_FIELD.value)) { continue; } @@ -182,9 +184,7 @@ public static IssueUpdateDetails toIssueInput(JiraRestClient client, Project jir } } else { if (one.getFieldType().equalsIgnoreCase(IssueFieldType.ARRAY.getName())) { - List arrayOfValues = new ArrayList<>(); - one.getValue().forEach(value -> arrayOfValues.add(Map.entry("value", value))); - issueUpdateDetails.putFieldsItem(one.getId(), arrayOfValues); + issueUpdateDetails.putFieldsItem(one.getId(), one.getValue()); } else if (one.getFieldType().equalsIgnoreCase(IssueFieldType.NUMBER.getName())) { issueUpdateDetails.putFieldsItem(one.getId(), Long.valueOf(one.getValue().get(0))); } else if (one.getFieldType().equalsIgnoreCase(IssueFieldType.USER.getName())) { diff --git a/src/test/java/com/epam/reportportal/extension/jira/command/GetIssueFieldsCommandTest.java b/src/test/java/com/epam/reportportal/extension/jira/command/GetIssueFieldsCommandTest.java index d8b0f5f..f964e12 100644 --- a/src/test/java/com/epam/reportportal/extension/jira/command/GetIssueFieldsCommandTest.java +++ b/src/test/java/com/epam/reportportal/extension/jira/command/GetIssueFieldsCommandTest.java @@ -21,20 +21,23 @@ import static com.epam.reportportal.extension.jira.command.utils.CloudJiraProperties.URL; import static org.junit.jupiter.api.Assertions.assertFalse; +import com.epam.reportportal.extension.jira.utils.SampleData.WorkType; import com.epam.reportportal.model.externalsystem.PostFormField; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import java.util.HashMap; import java.util.List; import java.util.Map; +import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.EnumSource; +@Slf4j class GetIssueFieldsCommandTest extends BaseCommandTest { @ParameterizedTest - @CsvSource(value = { - "Epic" - }) - void getIssueFields(String issueType) { + @EnumSource(value = WorkType.class) + void getIssueFields(WorkType workType) throws JsonProcessingException { if (disabled()) { return; } @@ -42,11 +45,12 @@ void getIssueFields(String issueType) { Map params = new HashMap<>(JIRA_COMMAND_PARAMS); params.put(PROJECT.getName(), PROJECT.getParam(INTEGRATION.getParams())); params.put(URL.getName(), URL.getParam(INTEGRATION.getParams())); - params.put(ISSUE_TYPE, issueType); + params.put(ISSUE_TYPE, workType.name()); var command = new GetIssueFieldsCommand(projectRepository, cloudJiraClientProvider); List response = command.invokeCommand(INTEGRATION, params); + log.info(new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response)); assertFalse(response.isEmpty()); } } diff --git a/src/test/java/com/epam/reportportal/extension/jira/command/PostTicketCommandTest.java b/src/test/java/com/epam/reportportal/extension/jira/command/PostTicketCommandTest.java index 18b701f..da8736c 100644 --- a/src/test/java/com/epam/reportportal/extension/jira/command/PostTicketCommandTest.java +++ b/src/test/java/com/epam/reportportal/extension/jira/command/PostTicketCommandTest.java @@ -19,7 +19,7 @@ import static com.epam.reportportal.extension.jira.command.GetIssueFieldsCommand.ISSUE_TYPE; import static com.epam.reportportal.extension.jira.command.utils.CloudJiraProperties.PROJECT; import static com.epam.reportportal.extension.jira.command.utils.CloudJiraProperties.URL; -import static com.epam.reportportal.extension.jira.utils.SampleData.BUG; +import static com.epam.reportportal.extension.jira.utils.SampleData.getSample; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; @@ -29,6 +29,7 @@ import static org.mockito.Mockito.when; import com.epam.reportportal.extension.jira.command.utils.JIRATicketDescriptionService; +import com.epam.reportportal.extension.jira.utils.SampleData.WorkType; import com.epam.reportportal.extension.util.RequestEntityConverter; import com.epam.reportportal.model.externalsystem.PostTicketRQ; import com.epam.reportportal.model.externalsystem.Ticket; @@ -43,7 +44,7 @@ import java.util.Optional; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.EnumSource; import org.mockito.Mock; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.web.client.RestTemplate; @@ -62,23 +63,21 @@ class PostTicketCommandTest extends BaseCommandTest { LogRepository logRepository; @ParameterizedTest - @CsvSource(value = { - "Story" - }) - void postTicketCommand(String issueType) throws JsonProcessingException { + @EnumSource(WorkType.class) + void postTicketCommand(WorkType issueType) throws JsonProcessingException { if (disabled()) { return; } TestItem testItem = new TestItem(); when(itemRepository.findById(anyLong())).thenReturn(Optional.of(testItem)); - PostTicketRQ entity = objectMapper.readValue(BUG, PostTicketRQ.class); + PostTicketRQ postTicketRQ = objectMapper.readValue(getSample(issueType), PostTicketRQ.class); Map params = new HashMap<>(JIRA_COMMAND_PARAMS); params.put(PROJECT.getName(), PROJECT.getParam(INTEGRATION.getParams())); params.put(URL.getName(), URL.getParam(INTEGRATION.getParams())); params.put(ISSUE_TYPE, issueType); - params.put("entity", entity); + params.put("entity", postTicketRQ); lenient().when(dataStoreService.load(anyString())) .thenReturn(Optional.of(getClass().getClassLoader().getResourceAsStream("attachment.txt"))); diff --git a/src/test/java/com/epam/reportportal/extension/jira/utils/SampleData.java b/src/test/java/com/epam/reportportal/extension/jira/utils/SampleData.java index 9fba813..300d60d 100644 --- a/src/test/java/com/epam/reportportal/extension/jira/utils/SampleData.java +++ b/src/test/java/com/epam/reportportal/extension/jira/utils/SampleData.java @@ -16,271 +16,34 @@ package com.epam.reportportal.extension.jira.utils; -import com.epam.ta.reportportal.entity.attachment.Attachment; -import com.epam.ta.reportportal.entity.item.TestItem; -import com.epam.ta.reportportal.entity.item.TestItemResults; -import com.epam.ta.reportportal.entity.log.Log; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import lombok.Getter; public class SampleData { - public static TestItem getTestItem() { - var testItem = new TestItem(); - TestItemResults testItemResults = new TestItemResults(); + @Getter + public enum WorkType { + //CUSTOM("work_types/custom.json"), + BUG("work_types/bug.json"); - testItem.setItemResults(testItemResults); - return testItem; - } + private final String path; - public static Log getLogsItem() { - var log = new Log(); - TestItemResults testItemResults = new TestItemResults(); - var attachemt = new Attachment(); - attachemt.setFileName(""); - return log; + WorkType(String path) { + this.path = path; + } } - public static String BUG = """ - { - "includeComments": true, - "includeData": true, - "includeLogs": true, - "logQuantity": 50, - "item": 344491, - "fields": [ - { - "id": "summary", - "required": true, - "fieldName": "Summary", - "fieldType": "string", - "definedValues": [], - "value": [ - "New summary" - ] - }, - { - "id": "issuetype", - "value": [ - "Bug" - ], - "required": true, - "fieldName": "Issue Type", - "fieldType": "issuetype", - "definedValues": [], - "disabled": true - }, - { - "id": "parent", - "required": false, - "fieldName": "Parent", - "fieldType": "issuelink", - "definedValues": [], - "value": [ - "EPMRPP-419" - ] - }, - { - "id": "description", - "required": false, - "fieldName": "Description", - "fieldType": "string", - "definedValues": [], - "value": [ - "New description" - ] - }, - { - "id": "customfield_10031", - "required": false, - "fieldName": "Custom field", - "fieldType": "string", - "definedValues": [], - "value": [ - "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - ] - }, - { - "id": "customfield_10032", - "required": false, - "fieldName": "New field", - "fieldType": "string", - "definedValues": [], - "value": [ - "Lorem ipsum dolor sit amet, consectetur adipiscing elit" - ] - }, - { - "id": "customfield_10021", - "required": false, - "fieldName": "Flagged", - "fieldType": "array", - "definedValues": [ - { - "valueId": "10019", - "valueName": "Impediment" - } - ], - "value": [] - }, - { - "id": "customfield_10043", - "required": false, - "fieldName": "Design", - "fieldType": "array", - "definedValues": [], - "value": [ - "new design" - ] - }, - { - "id": "customfield_10000", - "required": false, - "fieldName": "Development", - "fieldType": "any", - "definedValues": [], - "value": [ - "hello development team" - ] - }, - { - "id": "customfield_10044", - "required": false, - "fieldName": "Vulnerability", - "fieldType": "any", - "definedValues": [], - "value": [ - "Critical vulnerability " - ] - }, - { - "id": "customfield_10045", - "value": [ - "Critical" - ], - "required": false, - "fieldName": "Severity", - "fieldType": "option", - "definedValues": [ - { - "valueId": "None", - "valueName": "None" - }, - { - "valueId": "10021", - "valueName": "Critical" - }, - { - "valueId": "10022", - "valueName": "Major" - }, - { - "valueId": "10023", - "valueName": "Minor" - }, - { - "valueId": "10024", - "valueName": "Trivial" - }, - { - "valueId": "10028", - "valueName": "New option" - }, - { - "valueId": "10033", - "valueName": "New option 2" - }, - { - "valueId": "10035", - "valueName": "New option 3" - } - ] - }, - { - "id": "customfield_10046", - "value": [ - "Option 2" - ], - "required": false, - "fieldName": "Priority", - "fieldType": "option", - "definedValues": [ - { - "valueId": "None", - "valueName": "None" - }, - { - "valueId": "10026", - "valueName": "Option 1" - }, - { - "valueId": "10027", - "valueName": "Option 2" - } - ] - }, - { - "id": "customfield_10047", - "required": false, - "fieldName": "Affected version from Helen", - "fieldType": "array", - "definedValues": [], - "value": [ - "25.1 25.2" - ] - }, - { - "id": "labels", - "required": false, - "fieldName": "Labels", - "fieldType": "array", - "definedValues": [], - "value": [ - "new label" - ] - }, - { - "id": "customfield_10016", - "required": false, - "fieldName": "Story point estimate", - "fieldType": "number", - "definedValues": [], - "value": [ - "8" - ] - }, - { - "id": "customfield_10019", - "required": false, - "fieldName": "Rank", - "fieldType": "any", - "definedValues": [], - "value": [] - }, - { - "id": "issuelinks", - "required": false, - "fieldName": "Linked Issues", - "fieldType": "array", - "definedValues": [], - "value": [ - "EPMRPP-500 EPMRPP-510 EPMRPP-511" - ] - }, - { - "id": "assignee", - "required": false, - "fieldName": "Assignee", - "fieldType": "user", - "commandName": "searchUsers", - "definedValues": [], - "value": [ - "5e4430904d2a000c9113b8c3" - ] - } - ], - "backLinks": { - "344491": "http://dev.epmrpp.reportportal.io/ui/#helen/launches/all/89493/344489/344490/344491/log?item0Params=filter.eq.hasStats%3Dtrue%26filter.eq.hasChildren%3Dfalse%26filter.in.type%3DSTEP%26filter.in.status%3DFAILED%252CINTERRUPTED" - } + public static String getSample(WorkType file) { + try (InputStream is = SampleData.class.getClassLoader().getResourceAsStream(file.getPath())) { + if (is != null) { + return new String(is.readAllBytes(), StandardCharsets.UTF_8); } - """; + } catch (IOException e) { + throw new RuntimeException(e); + } + return null; + } } diff --git a/src/test/resources/work_types/bug.json b/src/test/resources/work_types/bug.json new file mode 100644 index 0000000..06e7ffe --- /dev/null +++ b/src/test/resources/work_types/bug.json @@ -0,0 +1,54 @@ +{ + "includeComments": true, + "includeData": true, + "includeLogs": true, + "logQuantity": 50, + "item": 385750, + "fields": [ + { + "id": "summary", + "required": true, + "fieldName": "Summary", + "fieldType": "string", + "definedValues": [], + "value": [ + "Something went wrong" + ] + }, + { + "id": "issuetype", + "value": [ + "Bug" + ], + "required": true, + "fieldName": "Issue Type", + "fieldType": "issuetype", + "definedValues": [], + "disabled": true + }, + { + "id": "customfield_10047", + "required": true, + "fieldName": "Affected version from Helen", + "fieldType": "array", + "definedValues": [], + "value": [ + "34" + ] + }, + { + "fieldName" : "MB Found In Version", + "id" : "customfield_10118", + "fieldType" : "array", + "required" : true, + "definedValues" : [ ], + "value": [ + "EV_v20.2.00" + ] + } + ], + "backLinks": { + "385750": "http://dev.epmrpp.reportportal.io/ui/#helen/launches/all/114873/385748/385749/385750/log" + } +} + diff --git a/src/test/resources/work_types/custom.json b/src/test/resources/work_types/custom.json new file mode 100644 index 0000000..5e0d159 --- /dev/null +++ b/src/test/resources/work_types/custom.json @@ -0,0 +1,596 @@ +{ + "includeComments": true, + "includeData": true, + "includeLogs": true, + "logQuantity": 50, + "item": 385750, + "fields": [ + { + "fieldName": "Issue Type", + "id": "issuetype", + "fieldType": "issuetype", + "required": true, + "value": [ + "MB Issue Type" + ], + "definedValues": [] + }, + { + "fieldName": "Parent", + "id": "parent", + "fieldType": "issuelink", + "required": false, + "definedValues": [] + }, + { + "fieldName": "Found In Version", + "id": "customfield_10151", + "fieldType": "array", + "required": false, + "definedValues": [] + }, + { + "fieldName": "Severity", + "id": "customfield_10030", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "TT Short text", + "id": "customfield_10152", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Custom field", + "id": "customfield_10031", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "TT Paragraph", + "id": "customfield_10153", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "New field", + "id": "customfield_10032", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Fix versions", + "id": "fixVersions", + "fieldType": "array", + "required": false, + "definedValues": [ + { + "valueId": "10000", + "valueName": "EV_v20.2.00" + }, + { + "valueId": "10033", + "valueName": "EV_v20.2.01" + } + ] + }, + { + "fieldName": "TT Date", + "id": "customfield_10154", + "fieldType": "date", + "required": false, + "definedValues": [] + }, + { + "fieldName": "TT Number", + "id": "customfield_10155", + "fieldType": "number", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Custom field from Helen", + "id": "customfield_10034", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "TT Time Stamp", + "id": "customfield_10156", + "fieldType": "datetime", + "required": true, + "definedValues": [] + }, + { + "fieldName": "TT Labels", + "id": "customfield_10157", + "fieldType": "array", + "required": true, + "definedValues": [] + }, + { + "fieldName": "TT Dropdown", + "id": "customfield_10158", + "fieldType": "option", + "required": true, + "definedValues": [ + { + "valueId": "10101", + "valueName": "Option 1" + }, + { + "valueId": "10102", + "valueName": "Option 2" + }, + { + "valueId": "10103", + "valueName": "Option 3" + } + ] + }, + { + "fieldName": "RP field", + "id": "customfield_10029", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Flagged", + "id": "customfield_10021", + "fieldType": "array", + "required": false, + "definedValues": [ + { + "valueId": "10019", + "valueName": "Impediment" + } + ] + }, + { + "fieldName": "Target start", + "id": "customfield_10022", + "fieldType": "date", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Priority", + "id": "priority", + "fieldType": "priority", + "required": true, + "definedValues": [ + { + "valueId": "1", + "valueName": "Highest" + }, + { + "valueId": "2", + "valueName": "High" + }, + { + "valueId": "3", + "valueName": "Medium" + }, + { + "valueId": "4", + "valueName": "CustomName" + }, + { + "valueId": "5", + "valueName": "Lowest" + } + ] + }, + { + "fieldName": "Target end", + "id": "customfield_10023", + "fieldType": "date", + "required": true, + "definedValues": [] + }, + { + "fieldName": "[CHART] Date of First Response", + "id": "customfield_10024", + "fieldType": "datetime", + "required": true, + "definedValues": [] + }, + { + "fieldName": "[CHART] Time in Status", + "id": "customfield_10025", + "fieldType": "any", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Labels", + "id": "labels", + "fieldType": "array", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Story point estimate", + "id": "customfield_10016", + "fieldType": "number", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Rank", + "id": "customfield_10019", + "fieldType": "any", + "required": false, + "definedValues": [] + }, + { + "fieldName": "Linked Issues", + "id": "issuelinks", + "fieldType": "array", + "required": false, + "definedValues": [] + }, + { + "fieldName": "Assignee", + "id": "assignee", + "fieldType": "user", + "required": false, + "commandName": "searchUsers", + "definedValues": [] + }, + { + "fieldName": "Goals", + "id": "customfield_10050", + "fieldType": "array", + "required": false, + "definedValues": [] + }, + { + "fieldName": "Nina Test", + "id": "customfield_10051", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Description", + "id": "description", + "fieldType": "string", + "required": false, + "definedValues": [] + }, + { + "fieldName": "Request Type", + "id": "customfield_10010", + "fieldType": "sd-customerrequesttype", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Start date", + "id": "customfield_10015", + "fieldType": "date", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Change type", + "id": "customfield_10005", + "fieldType": "option", + "required": true, + "definedValues": [ + { + "valueId": "10004", + "valueName": "Standard" + }, + { + "valueId": "10005", + "valueName": "Normal" + }, + { + "valueId": "10006", + "valueName": "Emergency" + } + ] + }, + { + "fieldName": "Change risk", + "id": "customfield_10006", + "fieldType": "option", + "required": true, + "definedValues": [ + { + "valueId": "10007", + "valueName": "Critical" + }, + { + "valueId": "10008", + "valueName": "High" + }, + { + "valueId": "10009", + "valueName": "Medium" + }, + { + "valueId": "10010", + "valueName": "Low" + } + ] + }, + { + "fieldName": "Change reason", + "id": "customfield_10007", + "fieldType": "option", + "required": true, + "definedValues": [ + { + "valueId": "10011", + "valueName": "Repair" + }, + { + "valueId": "10012", + "valueName": "Upgrade" + }, + { + "valueId": "10013", + "valueName": "Maintenance" + }, + { + "valueId": "10014", + "valueName": "New functionality" + }, + { + "valueId": "10015", + "valueName": "Other" + } + ] + }, + { + "fieldName": "Actual start", + "id": "customfield_10008", + "fieldType": "datetime", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Actual end", + "id": "customfield_10009", + "fieldType": "datetime", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Summary", + "id": "summary", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "TT People", + "id": "customfield_10160", + "fieldType": "array", + "required": true, + "definedValues": [] + }, + { + "fieldName": "TT Dependent dropdown", + "id": "customfield_10161", + "fieldType": "option-with-child", + "required": true, + "definedValues": [ + { + "valueId": "10107", + "valueName": "Option 1" + }, + { + "valueId": "10108", + "valueName": "Option 2" + }, + { + "valueId": "10109", + "valueName": "Option 3" + } + ] + }, + { + "fieldName": "Approvals", + "id": "customfield_10085", + "fieldType": "sd-approvals", + "required": false, + "definedValues": [] + }, + { + "fieldName": "TT URL", + "id": "customfield_10162", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Project overview key", + "id": "customfield_10041", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Project overview status", + "id": "customfield_10042", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Design", + "id": "customfield_10043", + "fieldType": "array", + "required": false, + "definedValues": [] + }, + { + "fieldName": "Vulnerability", + "id": "customfield_10044", + "fieldType": "any", + "required": false, + "definedValues": [] + }, + { + "fieldName": "Development", + "id": "customfield_10000", + "fieldType": "any", + "required": false, + "definedValues": [] + }, + { + "fieldName": "Team", + "id": "customfield_10001", + "fieldType": "team", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Severity", + "id": "customfield_10045", + "fieldType": "option", + "required": true, + "definedValues": [ + { + "valueId": "10021", + "valueName": "Critical" + }, + { + "valueId": "10022", + "valueName": "Major" + }, + { + "valueId": "10023", + "valueName": "Minor" + }, + { + "valueId": "10024", + "valueName": "Trivial" + }, + { + "valueId": "10028", + "valueName": "New option" + }, + { + "valueId": "10033", + "valueName": "New option 2" + }, + { + "valueId": "10035", + "valueName": "New option 3" + } + ] + }, + { + "fieldName": "Priority Custom", + "id": "customfield_10046", + "fieldType": "option", + "required": true, + "definedValues": [ + { + "valueId": "10026", + "valueName": "Option 1" + }, + { + "valueId": "10027", + "valueName": "Option 2" + }, + { + "valueId": "10068", + "valueName": "Very critical" + } + ] + }, + { + "fieldName": "Affected version from Helen", + "id": "customfield_10047", + "fieldType": "array", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Approvers", + "id": "customfield_10003", + "fieldType": "array", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Impact", + "id": "customfield_10004", + "fieldType": "option", + "required": true, + "definedValues": [ + { + "valueId": "10000", + "valueName": "Extensive / Widespread" + }, + { + "valueId": "10001", + "valueName": "Significant / Large" + }, + { + "valueId": "10002", + "valueName": "Moderate / Limited" + }, + { + "valueId": "10003", + "valueName": "Minor / Localized" + } + ] + }, + { + "fieldName": "Affected version", + "id": "customfield_10048", + "fieldType": "string", + "required": true, + "definedValues": [] + }, + { + "fieldName": "TT Checkbox", + "id": "customfield_10159", + "fieldType": "array", + "required": true, + "definedValues": [ + { + "valueId": "10104", + "valueName": "Option 1" + }, + { + "valueId": "10105", + "valueName": "Option 2" + }, + { + "valueId": "10106", + "valueName": "Option 3" + } + ] + }, + { + "fieldName": "MB Found In Version", + "id": "customfield_10118", + "fieldType": "array", + "required": true, + "definedValues": [] + }, + { + "fieldName": "Due date", + "id": "duedate", + "fieldType": "date", + "required": true, + "definedValues": [] + } + ] +} diff --git a/ui.gradle b/ui.gradle index b15889c..f31ab51 100644 --- a/ui.gradle +++ b/ui.gradle @@ -2,8 +2,9 @@ node { version = '20.11.0' npmVersion = '10.2.4' download = true - workDir = file("${project.buildDir}/ui") - nodeModulesDir = file("${project.rootDir}/ui") + workDir = layout.buildDirectory.dir('ui').get().asFile + npmWorkDir = layout.buildDirectory.dir('npm').get().asFile + nodeProjectDir = file("${project.rootDir}/ui") } npm_run_build { @@ -11,4 +12,4 @@ npm_run_build { inputs.file 'ui/package.json' inputs.file 'ui/package-lock.json' outputs.dir 'ui/build' -} \ No newline at end of file +}