descartes-technical-test/data_main/005a9f74f588073a321f45e7f527b0f09df6b3c7/README.md

85 lines
2.6 KiB
Markdown
Raw Permalink Normal View History

2024-10-03 09:35:53 +02:00
# 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 the `DD-MM-YYYY-test` branch of the current `descartes-underwriting/devops-technical-test-data` git repository.
## Property
The `descartes-underwriting/devops-technical-test-data` repository is not frozen and will have new commits.
Commits will be added to the `DD-MM-YYYY-test` branch multiple times every day.
The `DD-MM-YYYY-test` branch name will be adapted using standard datetime convention eg: `01-01-2022-test` for the 1st of January 2022.
## Task
Develop a backup tool to save the modified files at each commit.
### Submission
Script and data should be saved on a private `candidate/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 changes fo the branch `DD-MM-YYYY-test` of the `descartes-underwriting/devops-technical-test-data` repository.
The execution of the script should be carried out with a github-action / gitlab-pipeline or any other tool automating git workflow on your git project.
It is highly recommended to use a scheduling tool to execute the back up process.
### Data
The backup should store files in separate folders.
The backup file structure should be based on the sha1 of the `descartes-underwriting/devops-technical-test-data`.
## File structure example
For the following commits on the `descartes-underwriting/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/descartes-backup-project` 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
```