This is the core service focused on implementing a subset of the NXRM2 API that
is used by various publishing plugins and tools. The service is currently
implemented as an axum
server, but in the future the intent is to pull out the
core functionality into an AWS Lambda Function.
This is the API related to publishing via the new Central Publisher Portal.
This is a collection of projects that demonstrate real-world usages of the plugins we intend to support with the translation API.
For local development, we recommend using Nix + Direnv. This will provide a development environment with all required dependencies.
Using the Nix setup provides convenience wrappers for Maven have been provided
(mvnLocalProxy
, mvnStagingProxy
, & mvnProductionProxy
). They expect valid
settings files with a server central.testing
and a name
settings-<environment>.xml
(local
, staging
, & production
). There is a
settings-example.xml
included for convenience.
This was clickops-ed.
Lambda role requires s3 access, added JSON here for posterity sake, the dual resources are necessary for ListObjectsV2 to run. S3 actions can be severely trimmed down.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAccessToS3BucketForLambda",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::jeffry-test-bucket-cdv-2856/*",
"arn:aws:s3:::jeffry-test-bucket-cdv-2856"
]
}
]
}
We need a public key in the container (and later in AWS Secrets Manager) for verifying the JWT, so how do I create the key (assuming you have a .pem file that is the certificates):
openssl x509 -pubkey -noout -in user-service-public-key.pem | pbcopy
- Start an
aws-vault
session viaaws-vault exec sonatype-central --duration 12h
- Login to ECR via
just aws-ecr-login
- Build the docker image via
just docker-image-build
- If local testing passes, tag and upload it to ECR via
just docker-image-push
- From there, run
just aws-lambda-update
to have the function roll over to production
nix flake check
just run-local
Note: This reduces some of the noise around HTTPS requests to the Portal
You'll need the following installed:
- Rust (
cargo
) - Java (
java
,mvn
) - GPG (
gpg
)
This code is licensed under the dual-license approach of MIT OR Apache-2.0.