azure-devops-repository-archiver
Project description
Azure DevOps Git Repository Archiver
Allows to backup regularly git repositories hosted in Azure DevOps to an S3 Bucket.
Features
The S3 bucket is configured as below
-
enabled versioning of objects
-
enabled encryption using an S3 managed Key
-
disallowing publich access
-
A lifecycle configuration for the archived repositories. They transistion through different storage classes
- Infrequent Access after 30 days
- Glacier after 90 days
- Deep Archive 180 days
- Expiry after 365 days
The CodeBuild projects are configured as below
-
Logging to CloudWatch
- Configurable retention period. Default is one month.
- Encryption using customer-managed KMS key
-
Notifications to SNS about uploaded objects
Planned Features
- Tagging of created AWS resources
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 rwest_archiver_rwest_platform --description "RWEST Archiver for RWEST-Platform organization" --secret-string "{\"pat\":\"<your_pat>\"}"
Example (Typescript)
-
Add the library to your dependencies, e.g to the
package.json
file"dependencies": { [...], "azure-devops-repository-archiver": "0.0.9", },
-
Per
BackupConfiguration
a secret containing the Azure DevOps PAT needs to be specified. It can e.g. be importedconst 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);
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for azure-devops-repository-archiver-0.0.20.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 841590b5dd1b868d388ab2242cf1bda0627195bed4961ddb1e4e25ab9eb21e54 |
|
MD5 | 44563b319cd308e1180237b45b73e6b0 |
|
BLAKE2b-256 | 7b17befcc0ca22c4a1a8287e7f9cd98861aac5e2154c95d38a6fc39bdecb35ef |
Hashes for azure_devops_repository_archiver-0.0.20-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5624cffa80bec2a44d86bb810e49c3ef6a7313335fbdd2521d9163412f188480 |
|
MD5 | d6ad4004e3fac72d6a23155f2f2ed104 |
|
BLAKE2b-256 | 24a7f1543ead3eb28bfef09bdc3e8d5eb4f6120d2a9375d8eba86727d3fd6fd7 |