2.2 KiB
Descartes Underwriting
Context
We wish to create a backup tool that will save only the last modified files of a storage unit.
In our example, the storage unit is not a bucket.
The storage unit is a git repository called devops-technical-test-data
.
The repository devops-technical-test-data
is not frozen and will have new commits.
Commits will be added to the datestamp-test
branch on the devops-technical-test-data
repository.
Task
Develop a backup tool to save the modified files at each commit.
Submission
Script and data should be saved on a private descartes-backup-project
repository on your github account.
Access should be granted to all members of the descartes-underwriting
group:
https://github.com/orgs/descartes-underwriting/people
Script
Create a script to automate the backup process using open source software.
The script should track the branch datestamp-test
of the repository.
The execution of the script should be carried with a github-action / gitlab-pipeline or any other git automated workflow.
Data
The backup should store files in separate folders.
The backup file structure should be based on the sha1 of the devops-technical-test-data
.
File structure example
For the following commits on the devops-technical-test-data
:
SHA | OPERATION |
---|---|
Commit_N | create readme.md |
Commit_N+1 | create doc.txt |
Commit_N+2 | create data/test/test.txt |
Commit_N+3 | append text to ./doc.txt |
Commit_N+4 | create test/project/project1.txt |
The candidate_backup_repository
should have
$ tree .
.
├── .gitworkflow
│ └── workflows
│ └── my-lovely-workflow.yml
├── data
│ ├── N
│ │ └── readme.md
│ ├── N+1
│ │ └── doc.txt
│ ├── N+2
│ │ └── data
│ │ └── test
│ │ └── test.txt
│ ├── N+3
│ │ └── doc.txt
│ └── N+4
│ └── test
│ └── project
│ └── project1.txt
└── script
└── my-beautiful-script.best-language