Git repositories in IAG

A repository in IAG is a reference to a Git repository that contains your scripts, automations, or other files. IAG pulls the repository when you run a service to ensure your scripts are always up to date.

Public and private repositories

IAG supports both public and private Git repositories:

  • Public repositories: No authentication required. IAG can clone these repositories without credentials.
  • Private repositories: Require authentication using either SSH keys or HTTP basic authentication (username and password/token).

For information about setting up authentication, see:

Create a repository

Use the iagctl create repository command to create a repository reference.

For more information, see the create repository command reference.

Create a public repository

Syntax:

$iagctl create repository <repository-name> \
> --url <git-url>

Example:

$iagctl create repository my-public-repo \
> --url https://github.com/example/public-automations.git

Create a private repository with SSH authentication

Syntax:

$iagctl create repository <repository-name> \
> --url <ssh-git-url> \
> --private-key-name <secret-name>

Parameters:

  • <repository-name>: A unique name for the repository reference
  • --url: The SSH Git URL (starts with git@)
  • --private-key-name: The name of the secret that contains your SSH private key

Example:

$iagctl create repository my-private-repo \
> --url git@github.com:example/private-automations.git \
> --private-key-name git-key

For detailed setup instructions, see Use SSH keys to clone Git repositories.

Create a private repository with HTTP basic authentication

Syntax:

$iagctl create repository <repository-name> \
> --url <https-git-url> \
> --username <git-username> \
> --password-name <secret-name>

Parameters:

  • <repository-name>: A unique name for the repository reference
  • --url: The HTTPS Git URL
  • --username: Your Git username
  • --password-name: The name of the secret that contains your password or token

Example:

$iagctl create repository my-private-repo \
> --url https://github.com/example/private-automations.git \
> --username myusername \
> --password-name github-token

For detailed setup instructions, see Configure access to private repositories.

Reference a specific branch or commit

By default, IAG clones the default branch of your repository. You can specify a different branch, tag, or commit using the --reference parameter.

Syntax:

$iagctl create repository <repository-name> \
> --url <git-url> \
> --reference <branch-tag-or-commit>

Examples:

Create a repository that references the develop branch:

$iagctl create repository my-dev-repo \
> --url https://github.com/example/automations.git \
> --reference develop

Create a repository that references a specific tag:

$iagctl create repository my-stable-repo \
> --url https://github.com/example/automations.git \
> --reference v1.2.0

Add tags and descriptions to repositories

You can add tags and descriptions to help organize and identify repositories.

Example:

$iagctl create repository automation-repo \
> --url https://github.com/example/automations.git \
> --description "Production automation scripts" \
> --tags "production,automation,networking"

Repository structure best practices

When you organize scripts in a Git repository for use with IAG, consider these practices:

  • Use clear directory structures: Organize scripts by type, function, or environment (for example, scripts/backup/, scripts/deployment/)
  • Keep related files together: Place scripts and their dependencies in the same directory
  • Use consistent naming: Name directories and files descriptively
  • Document your structure: Include a README file that explains the repository organization

Example repository structure:

automation-repo/
├── README.md
├── backup/
│ ├── daily-backup.sh
│ └── weekly-backup.sh
├── deployment/
│ ├── deploy-app.py
│ └── rollback.py
└── monitoring/
├── check-status.sh
└── alert.py

When you create a service, you specify the --working-dir parameter to tell IAG which directory contains your script.

Manage repositories

List all repositories:

$iagctl get repositories

View details of a specific repository:

$iagctl describe repository <repository-name>

Delete a repository:

$iagctl delete repository <repository-name>

Before you delete a repository, verify that no services reference it. If services use the repository, they will fail when you delete it.