Skip to content

Commit

Permalink
Upgrade to java17; Move to GitHub Actions CI workflow; Add permission…
Browse files Browse the repository at this point in the history
… in update org handler (#76)

* Upgrade to Java 17 and move away from CodeBuild, add equivalent Github Actions CI workflow

* Add permission to update organization handler
  • Loading branch information
cizhang-amzn authored Jul 10, 2024
1 parent e5e7d8e commit 52d44dc
Show file tree
Hide file tree
Showing 25 changed files with 123 additions and 75 deletions.
6 changes: 6 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*Issue #, if available:*

*Description of changes:*


By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
56 changes: 56 additions & 0 deletions .github/workflows/pr-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Java CI with Maven for AWS Organizations resources

on:
push:
branches: [ master ]
pull_request:
merge_group:

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
- name: Setup Python
uses: actions/[email protected]
with:
python-version: 3.7
- name: Install Python packages
run: pip install pre-commit cloudformation-cli cloudformation-cli-java-plugin
- name: Run pre-commit
run: pre-commit run --all-files
- name: Verify AWS::Organizations::Account
run: |
cd "${GITHUB_WORKSPACE}/aws-organizations-account"
mvn clean verify --no-transfer-progress
cat rpdk.log
- name: Verify AWS::Organizations::Organization
run: |
cd "${GITHUB_WORKSPACE}/aws-organizations-organization"
mvn clean verify --no-transfer-progress
cat rpdk.log
- name: Verify AWS::Organizations::OrganizationalUnit
run: |
cd "${GITHUB_WORKSPACE}/aws-organizations-organizationalunit"
mvn clean verify --no-transfer-progress
cat rpdk.log
- name: Verify AWS::Organizations::Policy
run: |
cd "${GITHUB_WORKSPACE}/aws-organizations-policy"
mvn clean verify --no-transfer-progress
cat rpdk.log
- name: Verify AWS::Organizations::ResourcePolicy
run: |
cd "${GITHUB_WORKSPACE}/aws-organizations-resourcepolicy"
mvn clean verify --no-transfer-progress
cat rpdk.log
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ information to effectively respond to your bug report or contribution.

1. Follow the CloudFormation CLI environment setup instructions [here](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html#resource-type-setup).
2. Install version `3.8.*` of Apache Maven [here](https://maven.apache.org/install.html).
3. Install Java 8 [here](https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html).
3. Install Java 17 [here](https://www.oracle.com/java/technologies/downloads/#java17).
4. Install pre-commit [here](https://pre-commit.com/#install)
5. Create a new fork of the main repository by following [these instructions](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo).
6. From the root of the resource package (e.g aws-organizations-account) run `mvn clean package` to test and build the code
Expand Down
2 changes: 1 addition & 1 deletion aws-organizations-account/.rpdk-config
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"artifact_type": "RESOURCE",
"typeName": "AWS::Organizations::Account",
"language": "java",
"runtime": "java8",
"runtime": "java17",
"entrypoint": "software.amazon.organizations.account.HandlerWrapper::handleRequest",
"testEntrypoint": "software.amazon.organizations.account.HandlerWrapper::testEntrypoint",
"settings": {
Expand Down
9 changes: 5 additions & 4 deletions aws-organizations-account/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
<packaging>jar</packaging>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
Expand Down Expand Up @@ -41,7 +42,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
Expand Down Expand Up @@ -103,7 +104,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.12.1</version>
<configuration>
<compilerArgs>
<arg>-Xlint:all,-options,-processing</arg>
Expand Down
4 changes: 2 additions & 2 deletions aws-organizations-account/template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ Resources:
Type: AWS::Serverless::Function
Properties:
Handler: software.amazon.organizations.account.HandlerWrapper::handleRequest
Runtime: java8
Runtime: java17
CodeUri: ./target/aws-organizations-account-handler-1.0-SNAPSHOT.jar

TestEntrypoint:
Type: AWS::Serverless::Function
Properties:
Handler: software.amazon.organizations.account.HandlerWrapper::testEntrypoint
Runtime: java8
Runtime: java17
CodeUri: ./target/aws-organizations-account-handler-1.0-SNAPSHOT.jar
2 changes: 1 addition & 1 deletion aws-organizations-organization/.rpdk-config
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"artifact_type": "RESOURCE",
"typeName": "AWS::Organizations::Organization",
"language": "java",
"runtime": "java8",
"runtime": "java17",
"entrypoint": "software.amazon.organizations.organization.HandlerWrapper::handleRequest",
"testEntrypoint": "software.amazon.organizations.organization.HandlerWrapper::testEntrypoint",
"settings": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@
]
},
"update": {
"permissions": []
"permissions": [
"organizations:DescribeOrganization"
]
}
},
"readOnlyProperties": [
Expand Down
10 changes: 6 additions & 4 deletions aws-organizations-organization/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
<packaging>jar</packaging>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
Expand All @@ -40,7 +41,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
Expand Down Expand Up @@ -96,12 +97,13 @@
<artifactId>organizations</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.12.1</version>
<configuration>
<compilerArgs>
<arg>-Xlint:all,-options,-processing</arg>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class AbstractTestBase {
protected static final String TEST_MANAGEMENT_ACCOUNT_ID = "000000000000";
protected static final String TEST_ROOT_ID = "r-12345";
protected static final String ORGANIZATION_JSON_SCHEMA_FILE_NAME = "aws-organizations-organization.json";
protected static final String ORGANIZATION_SCHEMA_SHA256_HEXSTRING = "7B5FCE7CF69C8BFE812BEB41F19FC8132E2C9A226AAEDA1C7C065B2C1F01CDF3";
protected static final String ORGANIZATION_SCHEMA_SHA256_HEXSTRING = "1D6786A2B2BE9829B33830959949B37CB89AD49C1D3980C4ABBA280772EC322D";
protected static final String CONSOLIDATED_BILLING = "CONSOLIDATED_BILLING";
protected static final Credentials MOCK_CREDENTIALS;
protected static final LoggerProxy loggerProxy;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

import org.junit.jupiter.api.BeforeAll;

import javax.xml.bind.DatatypeConverter;
import org.apache.commons.codec.binary.Hex;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down Expand Up @@ -48,7 +48,7 @@ public void checkIfOrganizationSchemaFileCheckSumMatches() {
logger.info("No such algorithm found. {}", e.toString());
}
// Convert the byte array to a Hex String for matching.
String actualHexString = DatatypeConverter.printHexBinary(hashedOrganizationSchema);
String actualHexString = Hex.encodeHexString(hashedOrganizationSchema, false); // false to return upper case
assertThat(actualHexString).isEqualTo(ORGANIZATION_SCHEMA_SHA256_HEXSTRING);
}
}
4 changes: 2 additions & 2 deletions aws-organizations-organization/template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ Resources:
Type: AWS::Serverless::Function
Properties:
Handler: software.amazon.organizations.organization.HandlerWrapper::handleRequest
Runtime: java8
Runtime: java17
CodeUri: ./target/aws-organizations-organization-handler-1.0-SNAPSHOT.jar

TestEntrypoint:
Type: AWS::Serverless::Function
Properties:
Handler: software.amazon.organizations.organization.HandlerWrapper::testEntrypoint
Runtime: java8
Runtime: java17
CodeUri: ./target/aws-organizations-organization-handler-1.0-SNAPSHOT.jar
2 changes: 1 addition & 1 deletion aws-organizations-organizationalunit/.rpdk-config
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"artifact_type": "RESOURCE",
"typeName": "AWS::Organizations::OrganizationalUnit",
"language": "java",
"runtime": "java8",
"runtime": "java17",
"entrypoint": "software.amazon.organizations.organizationalunit.HandlerWrapper::handleRequest",
"testEntrypoint": "software.amazon.organizations.organizationalunit.HandlerWrapper::testEntrypoint",
"settings": {
Expand Down
9 changes: 5 additions & 4 deletions aws-organizations-organizationalunit/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
<packaging>jar</packaging>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
Expand Down Expand Up @@ -41,7 +42,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
Expand Down Expand Up @@ -103,7 +104,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.12.1</version>
<configuration>
<compilerArgs>
<arg>-Xlint:all,-options,-processing</arg>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

import org.junit.jupiter.api.BeforeAll;

import javax.xml.bind.DatatypeConverter;
import org.apache.commons.codec.binary.Hex;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down Expand Up @@ -49,7 +49,7 @@ public void checkIfOrgUnitSchemaFileCheckSumMatches() {
logger.info("No such algorithm found. {}", e.toString());
}
// Convert the byte array to a Hex String for matching.
String actualHexString = DatatypeConverter.printHexBinary(hashedOuSchema);
String actualHexString = Hex.encodeHexString(hashedOuSchema, false); // false to return upper case
assertThat(actualHexString).isEqualTo(OU_SCHEMA_SHA256_HEXSTRING);
}
}
4 changes: 2 additions & 2 deletions aws-organizations-organizationalunit/template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ Resources:
Type: AWS::Serverless::Function
Properties:
Handler: software.amazon.organizations.organizationalunit.HandlerWrapper::handleRequest
Runtime: java8
Runtime: java17
CodeUri: ./target/aws-organizations-organizationalunit-handler-1.0-SNAPSHOT.jar

TestEntrypoint:
Type: AWS::Serverless::Function
Properties:
Handler: software.amazon.organizations.organizationalunit.HandlerWrapper::testEntrypoint
Runtime: java8
Runtime: java17
CodeUri: ./target/aws-organizations-organizationalunit-handler-1.0-SNAPSHOT.jar
2 changes: 1 addition & 1 deletion aws-organizations-policy/.rpdk-config
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"artifact_type": "RESOURCE",
"typeName": "AWS::Organizations::Policy",
"language": "java",
"runtime": "java8",
"runtime": "java17",
"entrypoint": "software.amazon.organizations.policy.HandlerWrapper::handleRequest",
"testEntrypoint": "software.amazon.organizations.policy.HandlerWrapper::testEntrypoint",
"settings": {
Expand Down
16 changes: 12 additions & 4 deletions aws-organizations-policy/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,20 @@
<packaging>jar</packaging>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
</repositories>

<dependencyManagement>
<dependencies>
<dependency>
Expand All @@ -41,7 +49,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
Expand Down Expand Up @@ -103,7 +111,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<version>3.12.1</version>
<configuration>
<compilerArgs>
<arg>-Xlint:all,-options,-processing</arg>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import org.junit.jupiter.api.BeforeAll;
import software.amazon.organizations.utils.OrgsLoggerWrapper;

import javax.xml.bind.DatatypeConverter;
import org.apache.commons.codec.binary.Hex;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down Expand Up @@ -50,7 +50,7 @@ public void checkIfPolicySchemaFileCheckSumMatches() {
logger.info("No such algorithm found. {}", e.toString());
}
// Convert the byte array to a Hex String for matching.
String actualHexString = DatatypeConverter.printHexBinary(hashedPolicySchema);
String actualHexString = Hex.encodeHexString(hashedPolicySchema, false); // false to return upper case
assertThat(actualHexString).isEqualTo(POLICY_SCHEMA_SHA256_HEXSTRING);
}
}
4 changes: 2 additions & 2 deletions aws-organizations-policy/template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ Resources:
Type: AWS::Serverless::Function
Properties:
Handler: software.amazon.organizations.policy.HandlerWrapper::handleRequest
Runtime: java8
Runtime: java17
CodeUri: ./target/aws-organizations-policy-handler-1.0-SNAPSHOT.jar

TestEntrypoint:
Type: AWS::Serverless::Function
Properties:
Handler: software.amazon.organizations.policy.HandlerWrapper::testEntrypoint
Runtime: java8
Runtime: java17
CodeUri: ./target/aws-organizations-policy-handler-1.0-SNAPSHOT.jar
2 changes: 1 addition & 1 deletion aws-organizations-resourcepolicy/.rpdk-config
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"artifact_type": "RESOURCE",
"typeName": "AWS::Organizations::ResourcePolicy",
"language": "java",
"runtime": "java8",
"runtime": "java17",
"entrypoint": "software.amazon.organizations.resourcepolicy.HandlerWrapper::handleRequest",
"testEntrypoint": "software.amazon.organizations.resourcepolicy.HandlerWrapper::testEntrypoint",
"settings": {
Expand Down
Loading

0 comments on commit 52d44dc

Please sign in to comment.