- Notifications
You must be signed in to change notification settings - Fork88
The place where ORY's SDKs are being auto-generated
License
ory/sdk
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
All SDKs provided in this repository are generated using openapi-generator.
When developing againstOry Network, use thelatestclient
orory-client
SDK for your preferred language. It bundles theindividual SDKs (Identities, OAuth2, Permissions) and works withOry API keys.
When developing against self-hosted Ory components (Kratos, Hydra, Keto), usethe corresponding individual SDKs for your language and match the SDK version tothe version of Kratos/Hydra/Keto you have deployed.
To publish the SDK Builder Docker Image, create a new GitHub release with thedesired version.
You may also manually build and publish this image using:
docker build --platform linux/adm64 -t oryd/sdk:latest.docker tag oryd/sdk:latest oryd/sdk:v0.0.53docker push oryd/sdk:v0.0.53
If you wish to debug some generators or build steps, you can run the imagelocally:
docker build -t oryd/sdk:latest.docker run --mount type=bind,source="$(pwd)",target=/project --name sdk --user"$(id -u):$(id -g)" -it oryd/sdk:latest /bin/sh
If a test fails in CI, you may run the following code snippet to reproduce thefailure locally:
docker build -t oryd/sdk:latest.docker run --rm --mount type=bind,source="$(pwd)",target=/project --name sdk -it oryd/sdk:latest /bin/bashexport FORCE_PROJECT=client# or hydra or something elseexport FORCE_VERSION=$(cat /project/spec/$FORCE_PROJECT/latest)# or a specific version, e.g. v1.2.17cd /project./scripts/generate.sh./scripts/test.sh
Place the spec inspec/<project>/<version>.json
(e.g.spec/hydra/v0.0.0-alpha.1.json
) and create a commit that references both theproject and the versiongit commit -a -m "Add spec for <project>:<version>"
(e.g.git commit -a -m "Add spec for hydra:v0.0.0-alpha.1"
).
Do not create multiple commits adding several specs in one PR, as only thelatest commit will be checked when it lands on master.
Because this is an automated process, it is highly recommended to add, commit,and push the spec file directly to master in one go!
You can create a PR if you're making changes to the build chain.
Upgrading OpenAPI Generator versions requires careful upgrading of the Javapom.xml. The file might contain new versions for dependencies, but ifoverwritten, will not work with the release pipeline.
Therefore, the pom.xml file is being always overwritten from the contrib/pomsdirectory for each project. To update any dependencies, the changes must thus bemade there. We recommend running the openapi generator manually on the localmachine and diffing the changes with contents in contrib/poms.
Install PHP andcomposer. Then, run the install commandto initialize everything:
export PROJECT=hydracd clients/${PROJECT}/phpcomposer install
Then, push the directory to a git remote of your choosing and also publish thetag you want to release the package as. You can take a look at./scripts/publish.sh to understand how to accomplishthat.
First, install all the necessary tools and python3:
python3 -m pip install --user --upgrade setuptools wheel twine
Next, create a PyPi account andAPI Tokenand set the env vars to:
export TWINE_USERNAME=__token__export TWINE_PASSWORD=<token>
Then, publish the project (and set the project name):
export PROJECT=hydracd clients/${PROJECT}/pythonpython3 setup.py sdist bdist_wheelpython3 -m twine upload dist/*
You need to setGEM_HOST_API_KEY
For keys readhttps://blackdoor.github.io/blog/maven-cd/
Due to abug in openapi-generatorthat appears in Java11+, please disable javadoc generation:
mvn<cmd> -Dmaven.javadoc.skip=true
To test the build for Java, run:
$ ./scripts/generate.sh$ cd clients/<project>/java$ mvn test-compile
You will also need a PGP keypair that is associated with one of the owners ofthesh.ory
group and that is published on one of the public key servers. Formore details, see:https://dzone.com/articles/publish-your-artifacts-to-maven-central
or execute these steps:
gpg --full-gen-key> Select RSA and RSA> 4096> 0 (does not expire)# The key ID is the pub key ID> gpg –keyserver keys.pgp.net –send-key [KEY_ID]
On macOS, use GPG Keychain as gpg--full-gen-key
may run into issues.
- Use this value for
MVN_GPG_ASC_BASE64
:gpg --pinentry-mode loopback --export-secret-keys --armor $MVN_PGP_KEY_ID | base64 -w0 | pbcopy
- Set
MVN_PGP_KEY_ID
to the value of the key ID (on MacOS you can find it inthe info section of GPG Keychain). - Set
MVN_PGP_KEYNAME
to the value of the public key fingerprint. - Set
MVN_PGP_PASSPHRASE
to the passphrase of the private key.
Then, run the following commands:
mvn clean# THESE VALUES ARE EXAMPLES - PLEASE PICK THE APPROPRIATE `tag`, etcmvn -Dtag=client-0.0.1-alpha.1 release:update-version \ -DreleaseVersion=0.0.1-alpha.1 -DdevelopmentVersion=0.0.1-alpha.1-SNAPSHOT \ -Darguments="-Dmaven.javadoc.skip=true" -Dresume=falsemvn release:perform -Darguments="-Dmaven.javadoc.skip=true" -Dresume=false
About
The place where ORY's SDKs are being auto-generated