79 lines
2.2 KiB
Markdown
79 lines
2.2 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
$ 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
|
|
```
|