Git-Protocol
Related pages:
Git-Protocol Technical Notes
Table of Contents
General information
Description
Git protocol component for the elastic.io platform
Credentials
- Passphrase (string/text box, optional): Passphrase to use to authenticate
- Public SSH Key (string/text box, required): Public SSH key to use to authenticate. Example:
-----BEGIN RSA PRIVATE KEY-----
MBJH8a7JHVHg67JKB98yNB7y8776867dsfaAUG925ZwqePrSWDL8ikHB
{...}
jnJHBGH68t76ghvdsaHJVH66657VCHHcEZD+aVRKDQwjIosXR8r88b==
-----END RSA PRIVATE KEY-----
Please note that you need to add your SSH key to the server (GiHub, GitLab, etc.) first!
- Service URL (string, required): Url of the service to test the SSH key for validity. Example:
git@github.com
- Git Project (string, required): Part of the git repo URL that is after the service URL. (e.g. If the Git Project is acme/git-protocol-component.git and the Service URL is git@github.com, then the full git URL should be git@github.com:acme/git-protocol-component.git
- Private SSH Key (string/text box, required): Private SSH key to use to authenticate Example:
ssh-rsa AAAAB3NzaC1yc2EAAAAD{.....}kf0vBMStV user@exampleHost
Technical details
The only field available on Platform UI to provide a secure input is a ‘PasswordFieldView’ view class.
The problem is that it replaces new line characters with spaces. This method modifies the key in the following way. E.g. the key is:
-----BEGIN RSA PRIVATE KEY-----
BASE64_ENCODED_DATA_LINE_1
BASE64_ENCODED_DATA_LINE_2
BASE64_ENCODED_DATA_LINE_3
-----END RSA PRIVATE KEY-----
The platform will then transform the key so:
-----BEGIN RSA PRIVATE KEY----- BASE64_ENCODED_DATA_LINE_1 BASE64_ENCODED_DATA_LINE_2 BASE64_ENCODED_DATA_LINE_3 -----END RSA PRIVATE KEY-----
The code in the component replaces all the space characters (except for in the header and footer lines) with new line character
Actions
Create Commit
This action does the equivalent to
- git clone
- git checkout
- git add …
- git rm -r … (if specified, optional)
- git commit
- git push
Config Fields
- File Source. One of the following:
- Internal object storage
- URL. Internet (must be publicly available. Authentication mechanisms are not supported)
Input Metadata
- Git Branch (string, required): Identifies an existing branch in the git repo on which to create the commit. Must exist before starting the action!
- Commit message (string, required)
- Commit Author (object, required)
- Name (string, required)
- Email (string, required)
- Date (string, optional: default to now). Time (in seconds from epoch) when the action happened
- Commit Committer (object, optional)
- Name (string, required)
- Email (string, required)
- Date (string, optional: default to now). Time (in seconds from epoch) when the action happened
- Files to add to commit (array, required)
- File Source Meta (string, required): Dynamically generated. Will be one of the following depending on File Source chosen in the configuration:
- Configuration ‘Maester Object ID or Maester URL’: - either ID of the object in Maester (e.g.
797bb70d-1590-4136-b9db-2abb01983d92
) or the full Maester object URL (e.g.http://maester-service.platform.svc.cluster.local:3002/objects/dbceb3f1-6d18-4eb4-9f08-2437b6ef685f?storage_type=maester
)) - Configuration ‘External URL’: External link to the file (e.g.
https://example.com/file.txt
). Must be publicly available. Authentication mechanisms are not supported
- Configuration ‘Maester Object ID or Maester URL’: - either ID of the object in Maester (e.g.
- Filename + path (string, required): Location within the git repo to create the file
- File Source Meta (string, required): Dynamically generated. Will be one of the following depending on File Source chosen in the configuration:
- Files to remove from the commit (array of strings, optional): List of files or file wildcards to remove as part of the commit. (equivalent to
git rm -r fileOne.txt fileTwo.txt someFolder
)
Output Metadata
- commitId - ID of the commit in the repo
Read from Branch
This action reads the files from a Git repository and saves them in Maester (Elastic’s internal object storage)
Config Fields
- Include hidden files: When selected, hidden files (starting with ‘.’) are included. Otherwise they are skipped
Input Metadata
- Git Branch (string, required): Identifies an existing branch in the git repo from which to read
- Files to transfer (array of strings, required): List of files or file wildcards to read from the commit and transfer to Maester
Output Metadata
- commitId - ID of the commit in the repo
File patterns usage
Internally this library is being used to find the wildcards/patterns match: https://www.npmjs.com/package/fast-glob
Examples:
- Match all the files including all subdirectories (also note that ‘Include hidden files’ configuration field might affect the result):
'**'
- Match all the files of js type:
'**/*.js'
- Match a single file in the root folder:
'component.json'
- Match all the files in the given ‘lib’ folder:
'lib/**'
Known limitations
- Maester object created by Sailor’s Lightweight message feature can not be read (to be precise - they will be processed but not decrypted)
- The repository must be initialized before executing the
Create Commit
action. This means that the repository must contain at least one commit (initial commit).