Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>4.80</version>
<version>5.7</version>
<relativePath />
</parent>
<groupId>de.taimos</groupId>
Expand All @@ -23,7 +23,7 @@
<dependency>
<groupId>io.jenkins.tools.bom</groupId>
<artifactId>bom-${jenkins.baseline}.x</artifactId>
<version>2928.ved44ea_84e034</version>
<version>4051.v78dce3ce8b_d6</version>
<scope>import</scope>
<type>pom</type>
</dependency>
Expand All @@ -32,8 +32,9 @@
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution></license>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<url>https://github.com/jenkinsci/${project.artifactId}-plugin</url>
<organization>
Expand Down Expand Up @@ -79,23 +80,22 @@
<revision>1.46</revision>
<changelist>-SNAPSHOT</changelist>
<!-- https://www.jenkins.io/doc/developer/plugin-development/choosing-jenkins-baseline/ -->
<jenkins.baseline>2.414</jenkins.baseline>
<jenkins.version>${jenkins.baseline}.3</jenkins.version>
<jenkins.baseline>2.479</jenkins.baseline>
<jenkins.version>${jenkins.baseline}.1</jenkins.version>
<gitHubRepo>jenkinsci/${project.artifactId}-plugin</gitHubRepo>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.0.0</version>
<version>3.6.0</version>
<executions>
<execution>
<id>validate</id>
<phase>validate</phase>
<configuration>
<configLocation>checkstyle.xml</configLocation>
<encoding>UTF-8</encoding>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
</configuration>
Expand Down Expand Up @@ -246,11 +246,9 @@
<version>3.25.3</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy -->
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>1.14.12</version>
<groupId>io.jenkins.plugins</groupId>
<artifactId>byte-buddy-api</artifactId>
<scope>test</scope>
</dependency>

Expand Down
8 changes: 5 additions & 3 deletions src/main/java/de/taimos/pipeline/aws/AWSClientFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import org.kohsuke.accmod.restrictions.NoExternalUse;

import java.io.IOException;
import java.io.Serial;
import java.io.Serializable;


Expand Down Expand Up @@ -106,11 +107,11 @@
ClientConfiguration clientConfiguration = new ClientConfiguration();

// The default SDK max retry is 3, increasing this to be more resilient to upstream errors
Integer retries = Integer.valueOf(vars.get(AWS_SDK_RETRIES, "10"));
int retries = Integer.parseInt(vars.get(AWS_SDK_RETRIES, "10"));
clientConfiguration.setRetryPolicy(new RetryPolicy(null, null, retries, false));

// The default SDK socket timeout is 50000, use as deafult and allow to override via environment variable
Integer socketTimeout = Integer.valueOf(vars.get(AWS_SDK_SOCKET_TIMEOUT, "50000"));
int socketTimeout = Integer.parseInt(vars.get(AWS_SDK_SOCKET_TIMEOUT, "50000"));
clientConfiguration.setSocketTimeout(socketTimeout);

ProxyConfiguration.configure(vars, clientConfiguration);
Expand All @@ -129,7 +130,7 @@
}

if (context != null) {
if (PluginImpl.getInstance().isEnableCredentialsFromNode() || Boolean.valueOf(vars.get(AWS_PIPELINE_STEPS_FROM_NODE))) {
if (PluginImpl.getInstance().isEnableCredentialsFromNode() || Boolean.TRUE.equals(Boolean.valueOf(vars.get(AWS_PIPELINE_STEPS_FROM_NODE)))) {

Check warning on line 133 in src/main/java/de/taimos/pipeline/aws/AWSClientFactory.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Partially covered line

Line 133 is only partially covered, 2 branches are missing
try {
return AWSClientFactory.getCredentialsFromNode(context, vars);
} catch (Exception e) {
Expand Down Expand Up @@ -189,6 +190,7 @@
return Region.getRegion(Regions.DEFAULT_REGION);
}

@Serial
private static final long serialVersionUID = 1L;

@Restricted(NoExternalUse.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@

import java.io.File;
import java.io.IOException;
import java.io.Serial;

/*
* Use the FilePath abstraction to execute code on the remote node
Expand All @@ -51,6 +52,7 @@ public SerializableAWSCredentialsProvider invoke(File f, VirtualChannel vc) thro
return new SerializableAWSCredentialsProvider(provider);
}

@Serial
private static final long serialVersionUID = 1L;

}
4 changes: 3 additions & 1 deletion src/main/java/de/taimos/pipeline/aws/AWSIdentityStep.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,12 @@

package de.taimos.pipeline.aws;

import java.io.Serial;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import javax.annotation.Nonnull;
import jakarta.annotation.Nonnull;

import org.jenkinsci.plugins.workflow.steps.Step;
import org.jenkinsci.plugins.workflow.steps.StepContext;
Expand Down Expand Up @@ -94,6 +95,7 @@ protected Map<String, String> run() throws Exception {
return info;
}

@Serial
private static final long serialVersionUID = 1L;

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public static Map<String, Object> convertToMap(Object o) throws IOException {
//convert to json so the method calls do not have to be
ObjectMapper objectMapper = new ObjectMapper();
String jsonResult = objectMapper.writer().writeValueAsString(o);
return objectMapper.readValue(jsonResult, new TypeReference<Map<String, Object>>() {
return objectMapper.readValue(jsonResult, new TypeReference<>() {
});
}
}
5 changes: 3 additions & 2 deletions src/main/java/de/taimos/pipeline/aws/CFInvalidateStep.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

package de.taimos.pipeline.aws;

import java.io.Serial;
import java.util.Arrays;
import java.util.Set;

Expand All @@ -38,7 +39,6 @@
import com.amazonaws.services.cloudfront.model.GetInvalidationRequest;
import com.amazonaws.services.cloudfront.model.InvalidationBatch;
import com.amazonaws.services.cloudfront.model.Paths;
import com.amazonaws.services.cloudfront.waiters.AmazonCloudFrontWaiters;
import com.amazonaws.waiters.WaiterParameters;

import de.taimos.pipeline.aws.utils.StepUtils;
Expand Down Expand Up @@ -127,13 +127,14 @@

if (waitForCompletion) {
listener.getLogger().format("Waiting for invalidation %s to be completed...%n", invalidationId);
client.waiters().invalidationCompleted().run(new WaiterParameters<GetInvalidationRequest>(new GetInvalidationRequest(distribution, invalidationId)));
client.waiters().invalidationCompleted().run(new WaiterParameters<>(new GetInvalidationRequest(distribution, invalidationId)));

Check warning on line 130 in src/main/java/de/taimos/pipeline/aws/CFInvalidateStep.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered line

Line 130 is not covered by tests
listener.getLogger().format("Invalidation %s completed%n", invalidationId);
}

return null;
}

@Serial
private static final long serialVersionUID = 1L;

}
Expand Down
5 changes: 1 addition & 4 deletions src/main/java/de/taimos/pipeline/aws/DateTimeUtils.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
package de.taimos.pipeline.aws;

import java.time.ZonedDateTime;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME;
import java.time.format.DateTimeParseException;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.ResolverStyle;
import java.time.chrono.IsoChronology;
import java.time.temporal.ChronoField;

public final class DateTimeUtils {
private static final DateTimeFormatter DATE_TIME_NANOSECONDS_OFFSET_FORMATTER =
private static final DateTimeFormatter DATE_TIME_NANOSECONDS_OFFSET_FORMATTER =
new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.append(ISO_LOCAL_DATE_TIME)
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/de/taimos/pipeline/aws/DeployAPIStep.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

package de.taimos.pipeline.aws;

import java.io.Serial;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -139,6 +140,7 @@ protected Void run() throws Exception {
return null;
}

@Serial
private static final long serialVersionUID = 1L;

private Map<String, String> parseVariables(String[] variables) {
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/de/taimos/pipeline/aws/EC2ShareAmiStep.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

package de.taimos.pipeline.aws;

import java.io.Serial;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -122,6 +123,7 @@ protected String run() throws Exception {
return null;
}

@Serial
private static final long serialVersionUID = 1L;

}
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/de/taimos/pipeline/aws/ECRLoginStep.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@

package de.taimos.pipeline.aws;

import java.io.Serial;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Set;

import org.apache.commons.codec.Charsets;
import org.jenkinsci.plugins.workflow.steps.Step;
import org.jenkinsci.plugins.workflow.steps.StepContext;
import org.jenkinsci.plugins.workflow.steps.StepDescriptor;
Expand Down Expand Up @@ -120,7 +121,7 @@

AuthorizationData authorizationData = token.getAuthorizationData().get(0);
byte[] bytes = org.apache.commons.codec.binary.Base64.decodeBase64(authorizationData.getAuthorizationToken());
String data = new String(bytes, Charsets.UTF_8);
String data = new String(bytes, StandardCharsets.UTF_8);

Check warning on line 124 in src/main/java/de/taimos/pipeline/aws/ECRLoginStep.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered line

Line 124 is not covered by tests
String[] parts = data.split(":");
if (parts.length != 2) {
throw new RuntimeException("Got invalid authorizationData from AWS");
Expand All @@ -130,6 +131,7 @@
return String.format("docker login -u %s -p %s %s %s", parts[0], parts[1], emailString, authorizationData.getProxyEndpoint());
}

@Serial
private static final long serialVersionUID = 1L;

}
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/de/taimos/pipeline/aws/FileWrapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,10 @@
*/

import java.io.IOException;
import java.io.Serial;
import java.io.Serializable;

import javax.annotation.Nonnull;
import jakarta.annotation.Nonnull;

import org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.Whitelisted;

Expand All @@ -64,6 +65,7 @@
* @author Robert Sandell &lt;[email protected]&gt;.
*/
public class FileWrapper implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private static final String PATH_SUFFIX = "/";

Expand Down Expand Up @@ -140,12 +142,10 @@
if (this == o) {
return true;
}
if (!(o instanceof FileWrapper)) {
if (!(o instanceof FileWrapper that)) {

Check warning on line 145 in src/main/java/de/taimos/pipeline/aws/FileWrapper.java

View check run for this annotation

ci.jenkins.io / Code Coverage

Not covered line

Line 145 is not covered by tests
return false;
}

FileWrapper that = (FileWrapper) o;

return this.getPath().equals(that.getPath());

}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/de/taimos/pipeline/aws/InvokeLambdaStep.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

package de.taimos.pipeline.aws;

import java.io.Serial;
import java.nio.charset.StandardCharsets;
import java.util.Set;

Expand Down Expand Up @@ -117,6 +118,7 @@ public String getDisplayName() {

public static class Execution extends SynchronousNonBlockingStepExecution<Object> {

@Serial
private static final long serialVersionUID = 1L;

private final transient InvokeLambdaStep step;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

package de.taimos.pipeline.aws;

import java.io.Serial;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
Expand All @@ -29,6 +30,7 @@
import com.amazonaws.services.cloudformation.model.ListStackResourcesRequest;
import com.amazonaws.services.cloudformation.model.ListStackResourcesResult;
import com.amazonaws.services.cloudformation.model.StackResourceSummary;
import com.amazonaws.services.lambda.model.AliasConfiguration;
import org.jenkinsci.plugins.workflow.steps.Step;
import org.jenkinsci.plugins.workflow.steps.StepContext;
import org.jenkinsci.plugins.workflow.steps.StepDescriptor;
Expand Down Expand Up @@ -103,7 +105,8 @@ public String getDisplayName() {

public static class Execution extends SynchronousNonBlockingStepExecution<String> {

protected static final long serialVersionUID = 1L;
@Serial
private static final long serialVersionUID = 1L;

protected final transient LambdaVersionCleanupStep step;

Expand All @@ -130,7 +133,7 @@ private void deleteAllVersions(AWSLambda client, String functionName) throws Exc
listener.getLogger().format("Looking for old versions functionName=%s%n", functionName);
List<String> aliasedVersions = client.listAliases(new ListAliasesRequest()
.withFunctionName(functionName)).getAliases().stream()
.map( (alias) -> alias.getFunctionVersion())
.map(AliasConfiguration::getFunctionVersion)
.collect(Collectors.toList());
listener.getLogger().format("Found alises functionName=%s alias=%s%n", functionName, aliasedVersions);
List<FunctionConfiguration> allVersions = findAllVersions(client, functionName);
Expand All @@ -142,7 +145,7 @@ private void deleteAllVersions(AWSLambda client, String functionName) throws Exc
})
.filter( (function) -> !"$LATEST".equals(function.getVersion()))
.filter( (function) -> !aliasedVersions.contains(function.getVersion()))
.collect(Collectors.toList());
.toList();
for (FunctionConfiguration functionConfiguration : filteredVersions) {
listener.getLogger().format("Deleting old version functionName=%s version=%s lastModified=%s%n", functionName, functionConfiguration.getVersion(), functionConfiguration.getLastModified());
client.deleteFunction(new DeleteFunctionRequest()
Expand Down Expand Up @@ -174,7 +177,7 @@ private void deleteAllStackFunctionVersions(AWSLambda client, String stackName)
listener.getLogger().format("Found %d resources in stackName=%s%n", stackResources.size(), stackName);
List<StackResourceSummary> lambdaFunctions = stackResources.stream()
.filter(resource -> "AWS::Lambda::Function".equals(resource.getResourceType()))
.collect(Collectors.toList());
.toList();
listener.getLogger().format("Found %d lambda resources in stackName=%s%n", lambdaFunctions.size(), stackName);
for (StackResourceSummary stackResource : lambdaFunctions) {
deleteAllVersions(client, stackResource.getPhysicalResourceId());
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/de/taimos/pipeline/aws/ListAWSAccountsStep.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

package de.taimos.pipeline.aws;

import java.io.Serial;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -130,6 +131,7 @@ private List<Account> getAccounts(AWSOrganizations client, String parent, String
return accounts;
}

@Serial
private static final long serialVersionUID = 1L;

}
Expand Down
Loading