descartes-technical-test/data_main/cf20a9fa58761a60a3b0dc8573be942a635ca2ea
2024-10-03 07:37:29 +00:00
..
README.md Auto-update from backup job 2024-10-03 07:37:29 +00: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

If something is not clear, you can ask questions to the recruiter.

When submitting your project, your version should not be draft but complete and following best practices.

The solution should be saved on a private descartes-devops repository on your github account.

The solution should include:

  • source code
  • test code

When the final version is ready:

  1. Send an email to the recruiter indicating that you finished the project and sharing the url of the project
  2. Grant access to:

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.

Starting from the initial commit 282180fe7e5d9cbf297f2f0ef813cffe60ce2328, all the history should be backup.

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

$ 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