Introduction
Allows to backup regularly git repositories hosted in Azure DevOps to an S3 Bucket.
In the S3 bucket the backups are placed in a "directory" structure like
|
|--- organization 1
| |
| |--- project 1
| | |
| | |--- repository 1
| | |
| | |--- repository 2
| | | ...
| |
| |--- project 2
| |
| |--- ...
|
|
|--- organization 2
| ...
Prerequisites
The connection to the Azure DevOps organization requires a personal access token. The PAT needs to have "Code read" permission and stored in a SecretsManager secret
aws secretsmanager create-secret --name repository_archiver --description "Secret for the repository archiver" --secret-string "{\"pat\":\"<your_pat>\"}"
How to use
Example
- Add the library to your dependencies, e.g to the
package.json
file
- Per
BackupConfiguration
a secret containing the Azure DevOps PAT needs to be specified. It can e.g. be imported
const secret = Secret.fromSecretAttributes(this, 'azure-devops-pat', {
secretCompleteArn:
'arn:aws:secretsmanager:eu-central-1:<aws_account_id>:secret:<secret_name>',
});
- When creating the construct the required
BackupConfiguration
s can be passed as below. The grouping is per organization and project.
const backupConfigurations: BackupConfiguration[] = [
{
organizationName: 'MyOrganization',
projectName: 'project-1',
repositoryNames: [
'repository-1-a',
'repository-1-b',
],
secretArn: secret.secretArn,
},
{
organizationName: 'MyOrganization',
projectName: 'project-2',
repositoryNames: [
'repository-2-a',
'repository-2-b',
],
secretArn: secret.secretArn,
},
]
- The archiver properties and the archiver can then be created as
const archiverProps: ArchiverProperties = {
retention: RetentionDays.ONE_WEEK,
backupConfigurations: backupConfigurations,
};
new Archiver(this, 'archiver', archiverProps);
Restoring a repository
- Download the archive from S3 to your local machine.
- Extract the archive.
- Create a new directory and run a
git clone
operation.