Repository
The table below describes the list of actions that can be performed on "repository" using the RCTL CLI Utility.
Resource | Create | Get | Update | Delete |
---|---|---|---|---|
Repository | YES | YES | YES | YES |
Declarative¶
A declarative approach to lifecycle management of repository is strongly recommended backed by the pipeline manifests (YAML files) that are version controlled in your Git repository.
Important
A repository can be either a Helm or Git repository type. A number of public repositories are provided by default in every project.
Create/Update Repository¶
You can create/update a repository in the project in your Organization based on a version controlled repository spec that you can store in a Git repository. This enables users to develop automation for reproducible infrastructure.
./rctl apply -f repository.yaml
An illustrative example of the repository version spec YAML file is shown below
apiVersion: integrations.k8smgmt.io/v3
kind: Repository
metadata:
name: demo-repo
project: default-project
spec:
agents:
- {}
credentials:
password: sealed://credentials.password
username: demo@rafay.co
endpoint: https://github.com/demouser1/pipeline-test.git
secret:
name: file://artifacts/demo-repo/sealed-secret.yaml
sharing: {}
type: Git
Share Repository¶
Users are allowed to share the existing repository with one or more projects
- Update the config spec with the sharing parameters and run the apply command
./rctl apply -f repository.yml
An illustrative example of a spec is given below that shares a repo with all the projects
apiVersion: integrations.k8smgmt.io/v3
kind: Repository
metadata:
name: demo-repo
project: default-project
spec:
agents:
- name: demo-agent
credentials:
password: secrets
username: demo@rafay.co
endpoint: https://github.com/demo-rafay/test-repo
sharing:
enabled: true
projects:
- name: '*'
options: {}
type: Git
- Run the apply command to share the repository with other projects
./rctl apply -f filepath.yaml --v3
Validate Repository¶
Validating a public repository ensures its integrity, checks dependencies, and verifies security, while also confirming that the configuration adheres to standards. Use the below command to validate a repository.
./rctl validate repository <repo_name>
As a repository can be linked to multiple agents, the validation process is conducted through each agent, generating one row per agent along with its respective result. In the event of a validation failure, the "Reason" column will be populated with the specific failure reason.
Example Output
./rctl validate repository demorepo
+------------+-------------------+--------------------------------+
| AGENT NAME | VALIDATION RESULT | REASON |
+------------+-------------------+--------------------------------+
| agent1 | Successful | |
+------------+-------------------+--------------------------------+
| agent2 | Failed | Unable to connect to agent |
| | | agent2: getting connections |
| | | failed for given cd agents |
| | | {"agent2":"context deadline |
| | | exceeded"} |
+------------+-------------------+--------------------------------+
To obtain more information on repository validation in JSON or YAML format, use the following command:
./rctl validate repository <repo_name> -o yaml
Example Output
./rctl validate repository demorepo -o yaml
isvalidated: false
comment: Repository validation failed
resultbyagent:
agent1:
isagentconnected: true
isrepovalidated: true
agent2:
isagentconnected: false
isrepovalidated: false
comment: 'Unable to connect to agent agent2: getting connections failed for
given cd agents {"hub-leak-2":"context deadline exceeded"}'
List Repositories¶
Use the below command to retrieve the list of repositories
./rctl get repository <repository_name> --v3
Use this command to retrieve the list of repositories in the configured Project. An illustrative example is shown below where RCTL retrieves the list of repositories in the project "qa".
./rctl get repository -p qa --v3
+----------------------+-------------------+------+-------------------------------------------------------------+
| NAME | PROJECT | TYPE | ENDPOINT |
+----------------------+-------------------+------+-------------------------------------------------------------+
| default-stable-helm | qa | Helm | https://charts.helm.sh/stable |
+----------------------+-------------------+------+-------------------------------------------------------------+
| default-bitnami | qa | Helm | https://charts.bitnami.com/bitnami |
+----------------------+-------------------+------+-------------------------------------------------------------+
| default-cert-manager | qa | Git | https://github.com/jetstack/cert-manager.git |
+----------------------+-------------------+------+-------------------------------------------------------------+
| test | qa | Git | https://github.com/gajanan-rafay/test-repo |
+----------------------+-------------------+------+-------------------------------------------------------------+
Get Specific Repository Info¶
Use this command to retrieve a specific repository's details in the configured project.
./rctl get repository <repository-name> --v3
Below is the illustrative example for the repository called "demo-repo"
./rctl get repository demo-repo --v3
+----------------------+-------------------+------+-------------------------------------------------------------+
| NAME | PROJECT | TYPE | ENDPOINT |
+----------------------+-------------------+------+---------+---------------------------------------------------+
| demo-repo | prod-test | Git | https://github.com/gajanan-rafay/test-repo |
+----------------------+-------------------+------+-------------------------------------------------------------+
Or you can use below command to get more information of the repository in json or yaml format
./rctl get repository <repository-name> -o json
./rctl get repository <repository-name> -o yaml
Delete Repository¶
You can delete a repository in the configured project.
./rctl delete repository <repository-name> --v3
Important
Refer here for the deprecated RCTL commands