-
Notifications
You must be signed in to change notification settings - Fork 4
V4 #128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
V4 #128
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,92 +1,98 @@ | ||||||||||||||||||||||||||||||
| ### 👨🏿🚀 Actions v4 Workflows | ||||||||||||||||||||||||||||||
| ### 👨🏿🚀 Actions v4 Workflows | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ### What's new in v4 | ||||||||||||||||||||||||||||||
| * The v4 Actions make use of [doctool](https://github.com/Keyfactor/doctool) to take Command screenshots for Universal Orchestrator extension store-type creation. | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| * The v4 Actions make use of [doctool](https://github.com/Keyfactor/doctool) to take Command screenshots for Universal | ||||||||||||||||||||||||||||||
| Orchestrator extension store-type creation. | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ### Usage | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| #### Prerequisites | ||||||||||||||||||||||||||||||
| - Ensure an `integration-manifest.json` file is present in the root of your repository. For the schema, see the v2 [integration-manifest-schema.json](https://keyfactor.github.io/v2/integration-manifest-schema.json) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| - Ensure an `integration-manifest.json` file is present in the root of your repository. For the schema, see the | ||||||||||||||||||||||||||||||
| v2 [integration-manifest-schema.json](https://keyfactor.github.io/v2/integration-manifest-schema.json) | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| #### Example `integration-manifest.json` | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ```json | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "$schema": "https://keyfactor.github.io/v2/integration-manifest-schema.json", | ||||||||||||||||||||||||||||||
| "integration_type": "anyca-plugin", | ||||||||||||||||||||||||||||||
| "name": "Example AnyCA REST Gateway Plugin", | ||||||||||||||||||||||||||||||
| "status": "pilot", | ||||||||||||||||||||||||||||||
| "support_level": "kf-supported", | ||||||||||||||||||||||||||||||
| "link_github": true, | ||||||||||||||||||||||||||||||
| "update_catalog": true, | ||||||||||||||||||||||||||||||
| "description": "Example Plugin for the AnyCA REST Gateway framework", | ||||||||||||||||||||||||||||||
| "gateway_framework": "25.0.0", | ||||||||||||||||||||||||||||||
| "release_dir": "example-caplugin\\bin\\Release", | ||||||||||||||||||||||||||||||
| "release_project": "example-caplugin\\example_extension.csproj", | ||||||||||||||||||||||||||||||
| "about": { | ||||||||||||||||||||||||||||||
| "carest": { | ||||||||||||||||||||||||||||||
| "ca_plugin_config": [ | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "ApiKey", | ||||||||||||||||||||||||||||||
| "description": "The API Key for the The CA API" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "Username", | ||||||||||||||||||||||||||||||
| "description": "Username for the CA API service account" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "Password", | ||||||||||||||||||||||||||||||
| "description": "Password for the CA API service account" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "BaseUrl", | ||||||||||||||||||||||||||||||
| "description": "The Base URL for the CA API" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "Enabled", | ||||||||||||||||||||||||||||||
| "description": "Flag to Enable or Disable gateway functionality. Disabling is primarily used to allow creation of the CA prior to configuration information being available." | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| ], | ||||||||||||||||||||||||||||||
| "enrollment_config": [ | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "CertificateValidityInYears", | ||||||||||||||||||||||||||||||
| "description": "Number of years the certificate will be valid for" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "Email", | ||||||||||||||||||||||||||||||
| "description": "Email address of the requestor" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "OrganizationName", | ||||||||||||||||||||||||||||||
| "description": "Name of the organization to be validated against" | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| ], | ||||||||||||||||||||||||||||||
| "product_ids": [ | ||||||||||||||||||||||||||||||
| "ExampleProductSslOvBasic", | ||||||||||||||||||||||||||||||
| "ExampleProductSslEvBasic", | ||||||||||||||||||||||||||||||
| "ExampleProductSslDvGeotrust", | ||||||||||||||||||||||||||||||
| "ExampleProductSslDvThawte", | ||||||||||||||||||||||||||||||
| "ExampleProductSslOvThawteWebserver", | ||||||||||||||||||||||||||||||
| "ExampleProductSslEvThawteWebserver", | ||||||||||||||||||||||||||||||
| "ExampleProductSslOvGeotrustTruebizid", | ||||||||||||||||||||||||||||||
| "ExampleProductSslEvGeotrustTruebizid", | ||||||||||||||||||||||||||||||
| "ExampleProductSslOvSecuresite", | ||||||||||||||||||||||||||||||
| "ExampleProductSslEvSecuresite", | ||||||||||||||||||||||||||||||
| "ExampleProductSslOvSecuresitePro", | ||||||||||||||||||||||||||||||
| "ExampleProductSslEvSecuresitePro" | ||||||||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| "$schema": "https://keyfactor.github.io/v2/integration-manifest-schema.json", | ||||||||||||||||||||||||||||||
| "integration_type": "anyca-plugin", | ||||||||||||||||||||||||||||||
| "name": "Example AnyCA REST Gateway Plugin", | ||||||||||||||||||||||||||||||
| "status": "pilot", | ||||||||||||||||||||||||||||||
| "support_level": "kf-supported", | ||||||||||||||||||||||||||||||
| "link_github": true, | ||||||||||||||||||||||||||||||
| "update_catalog": true, | ||||||||||||||||||||||||||||||
| "description": "Example Plugin for the AnyCA REST Gateway framework", | ||||||||||||||||||||||||||||||
| "gateway_framework": "25.0.0", | ||||||||||||||||||||||||||||||
| "release_dir": "example-caplugin\\bin\\Release", | ||||||||||||||||||||||||||||||
| "release_project": "example-caplugin\\example_extension.csproj", | ||||||||||||||||||||||||||||||
| "about": { | ||||||||||||||||||||||||||||||
| "carest": { | ||||||||||||||||||||||||||||||
| "ca_plugin_config": [ | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "ApiKey", | ||||||||||||||||||||||||||||||
| "description": "The API Key for the The CA API" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "Username", | ||||||||||||||||||||||||||||||
| "description": "Username for the CA API service account" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "Password", | ||||||||||||||||||||||||||||||
| "description": "Password for the CA API service account" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "BaseUrl", | ||||||||||||||||||||||||||||||
| "description": "The Base URL for the CA API" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "Enabled", | ||||||||||||||||||||||||||||||
| "description": "Flag to Enable or Disable gateway functionality. Disabling is primarily used to allow creation of the CA prior to configuration information being available." | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| ], | ||||||||||||||||||||||||||||||
| "enrollment_config": [ | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "CertificateValidityInYears", | ||||||||||||||||||||||||||||||
| "description": "Number of years the certificate will be valid for" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "Email", | ||||||||||||||||||||||||||||||
| "description": "Email address of the requestor" | ||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||
| "name": "OrganizationName", | ||||||||||||||||||||||||||||||
| "description": "Name of the organization to be validated against" | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| ], | ||||||||||||||||||||||||||||||
| "product_ids": [ | ||||||||||||||||||||||||||||||
| "ExampleProductSslOvBasic", | ||||||||||||||||||||||||||||||
| "ExampleProductSslEvBasic", | ||||||||||||||||||||||||||||||
| "ExampleProductSslDvGeotrust", | ||||||||||||||||||||||||||||||
| "ExampleProductSslDvThawte", | ||||||||||||||||||||||||||||||
| "ExampleProductSslOvThawteWebserver", | ||||||||||||||||||||||||||||||
| "ExampleProductSslEvThawteWebserver", | ||||||||||||||||||||||||||||||
| "ExampleProductSslOvGeotrustTruebizid", | ||||||||||||||||||||||||||||||
| "ExampleProductSslEvGeotrustTruebizid", | ||||||||||||||||||||||||||||||
| "ExampleProductSslOvSecuresite", | ||||||||||||||||||||||||||||||
| "ExampleProductSslEvSecuresite", | ||||||||||||||||||||||||||||||
| "ExampleProductSslOvSecuresitePro", | ||||||||||||||||||||||||||||||
| "ExampleProductSslEvSecuresitePro" | ||||||||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| #### Example workflow `keyfactor-bootsrap-workflow.yml` | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ```yaml | ||||||||||||||||||||||||||||||
| name: Keyfactor Bootstrap Workflow | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| on: | ||||||||||||||||||||||||||||||
| workflow_dispatch: | ||||||||||||||||||||||||||||||
| pull_request: | ||||||||||||||||||||||||||||||
| types: [opened, closed, synchronize, edited, reopened] | ||||||||||||||||||||||||||||||
| types: [ opened, closed, synchronize, edited, reopened ] | ||||||||||||||||||||||||||||||
| push: | ||||||||||||||||||||||||||||||
| create: | ||||||||||||||||||||||||||||||
| branches: | ||||||||||||||||||||||||||||||
|
|
@@ -108,44 +114,75 @@ jobs: | |||||||||||||||||||||||||||||
| entra_password: ${{ secrets.DOCTOOL_ENTRA_PASSWD }} # Only required for doctool generated screenshots | ||||||||||||||||||||||||||||||
| command_client_id: ${{ secrets.COMMAND_CLIENT_ID }} # Only required for doctool generated screenshots | ||||||||||||||||||||||||||||||
| command_client_secret: ${{ secrets.COMMAND_CLIENT_SECRET }} # Only required for doctool generated screenshots | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| ### 🚀The Bootstrap workflow for v4 Actions perform the following steps: | ||||||||||||||||||||||||||||||
| #### Inputs | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| | Parameter | Type | Description | Required/Optional | | ||||||||||||||||||||||||||||||
| |-----------------------|--------|----------------------------------------------------------------|--------------------------------| | ||||||||||||||||||||||||||||||
| | command_token_url | Input | URL for command token, used by doctool for screenshots | Optional (doctool screenshots) | | ||||||||||||||||||||||||||||||
| | command_hostname | Input | Hostname for command, used by doctool for screenshots | Optional (doctool screenshots) | | ||||||||||||||||||||||||||||||
| | command_base_api_path | Input | Base API path for command, used by doctool for screenshots | Optional (doctool screenshots) | | ||||||||||||||||||||||||||||||
| | token | Secret | Build token for workflow execution | Required | | ||||||||||||||||||||||||||||||
| | gpg_key | Secret | GPG private key for signing golang builds | Optional (golang builds) | | ||||||||||||||||||||||||||||||
| | gpg_pass | Secret | GPG passphrase for signing golang builds | Optional (golang builds) | | ||||||||||||||||||||||||||||||
|
Comment on lines
+128
to
+129
|
||||||||||||||||||||||||||||||
| | scan_token | Secret | Token for SAST/Polaris scan | Required | | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
| | scan_token | Secret | Token for SAST/Polaris scan | Required | | |
| | scan_token | Secret | Token for SAST/Polaris scan | Optional (currently unused) | |
Copilot
AI
Nov 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: "autlink" should be "autolink".
| protection is added, autlink reference set ab# to devops [***kf-configure-repo***] | |
| protection is added, autolink reference set ab# to devops [***kf-configure-repo***] |
Copilot
AI
Nov 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The list structure contains empty bullet points (lines 158, 160, 163, 165) which are unconventional and may not render correctly in markdown. Consider restructuring this section to use proper nested lists without empty parent bullets, or use a different formatting approach such as indented bullets without the empty parent items.
| * | |
| * C#: run the [dotnet-build-and-release.yml](.github/workflows/dotnet-build-and-release.yml) workflow | |
| * | |
| * Go builds: run the go-build-and-release.yml workflow (still in progress) | |
| * All languages: | |
| * | |
| * Generate/Update `README.md` using `doctool` [generate-readme.yml](.github/workflows/generate-readme.yml) | |
| * | |
| * For C#: | |
| * Run the [dotnet-build-and-release.yml](.github/workflows/dotnet-build-and-release.yml) workflow | |
| * For Go: | |
| * Run the go-build-and-release.yml workflow (still in progress) | |
| * For all languages: | |
| * Generate/Update `README.md` using `doctool` [generate-readme.yml](.github/workflows/generate-readme.yml) |
Copilot
AI
Nov 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The documentation states "Polaris SAST/SCAN scans run when push to release-* or main occurs", but the Polaris scan workflow is currently commented out in .github/workflows/starter.yml (lines 159-165). This documentation should either be removed or updated to reflect that the Polaris scan is currently disabled.
| * Polaris SAST/SCAN scans run when push to `release-*` or main occurs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo in filename: "bootsrap" should be "bootstrap".