Configure an agent with GitHub
In order to view recipe results and commit changes from a recipe back to GitHub, you'll need to create a GitHub OAuth app and configure the Moderne agent with the appropriate variables.
To assist with that, this guide will:
- You will need administrator access to your organization's GitHub account
- 1.Navigate to the settings page for your organization:
https://github.com/organizations/<YOUR_ORG>/settings/applications
- 2.Expand
Developer settings
on the bottom left of the page:-
- 3.Click the
New OAuth App
button in the upper right of your screen. - 4.
-
- 5.On your newly created application click the
Generate a new client secret
button:-
- 6.Copy the
Client ID
andClient secret
from this page; they will be used as arguments for the Moderne Agent.
Field | Example |
---|---|
Application Name | Moderne SaaS |
Homepage URL | https://myorg.moderne.io |
Authorization callback URL | https://myorg.moderne.io |
The following table contains all of the variables/arguments you need to add to your Moderne agent run command in order for it to work with your GitHub instance. Please note that these variables/arguments must be combined with ones found in other steps in the Configuring the Moderne agent guide.
You can configure multiple GitHub OAuth apps by including multiple entries, each with a different
{index}
.OCI Container
Executable JAR
Variables:
MODERNE_AGENT_GITHUB_{index}_OAUTH_CLIENTID
– The client id configured in GitHub.MODERNE_AGENT_GITHUB_{index}_OAUTH_CLIENTSECRET
– The client secret configured in GitHub.MODERNE_AGENT_GITHUB_{index}_URL
– The fully-qualified hostname of the running GitHub instance.MODERNE_AGENT_GITHUB_{index}_SKIPSSL
– (Optional) Specifies whether or not to skip SSL validation for HTTP connections to this GitHub instance. This must be set to true if you use a self-signed SSL/TLS certificate. Defaults to false.MODERNE_AGENT_GITHUB_{index}_ALLOWABLE_ORGANIZATIONS_{index}
– (Optional) Specifies what organizations you can fork recipe results to. By default, there are no restrictions on which organizations can be committed to. If you want multiple organizations, increase the last index and add one per line.MODERNE_AGENT_GITHUB_{index}_OAUTH_INCLUDEPRIVATEREPOS
– (Optional) By default, the OAuth app will only have access to public repositories within your organization(s). To provide the OAuth app access to private repositories, you can set this totrue
.
Example:
docker run \
# ... Existing variables
-e MODERNE_AGENT_GITHUB_0_OAUTH_CLIENTID=yourClientId \
-e MODERNE_AGENT_GITHUB_0_OAUTH_CLIENTSECRET=yourClientSecret \
-e MODERNE_AGENT_GITHUB_0_URL=https://myorg.github.com \
-e MODERNE_AGENT_GITHUB_0_ALLOWABLE_ORGANIZATIONS_0=moderne \
-e MODERNE_AGENT_GITHUB_0_ALLOWABLE_ORGANIZATIONS_1=openrewrite \
-e MODERNE_AGENT_GITHUB_0_OAUTH_INCLUDEPRIVATEREPOS=true \
# ... Additional variables
Arguments:
--moderne.agent.github[{index}].oauth.clientId
– The client id configured in GitHub.--moderne.agent.github[{index}].oauth.clientSecret
– The client secret configured in GitHub.--moderne.agent.github[{index}].url
– The fully-qualified hostname of the running GitHub instance.--moderne.agent.github[{index}].skipSsl
– (Optional) Specifies whether or not to skip SSL validation for HTTP connections to this GitHub instance. This must be set to true if you use a self-signed SSL/TLS certificate. Defaults to false.--moderne.agent.github[{index}].allowableOrganizations[{index}]
– (Optional) Specifies what organizations you can fork recipe results to. By default, there are no restrictions on which organizations can be committed to. If you want multiple organizations, increase the last index and add one per line.--moderne_agent_github[{index}].oauth.includePrivateRepos
– (Optional) By default, the OAuth app will only have access to public repositories within your organization(s). To provide the OAuth app access to private repositories, you can set this totrue
.
Example:
java -jar moderne-agent-{version}.jar \
# ... Existing arguments
--moderne.agent.github[0].oauth.clientId=yourClientId \
--moderne.agent.github[0].oauth.clientSecret=yourClientSecret \
--moderne.agent.github[0].url=https://myorg.github.com \
--moderne.agent.github[0].allowableOrganizations[0]=moderne \
--moderne.agent.github[0].allowableOrganizations[1]=openrewrite \
--moderne.agent.github[0].oauth.includePrivateRepos=true \
# ... Additional arguments