descartes-technical-test/tests/tests_cases/2/282180fe7e5d9cbf297f2f0ef813cffe60ce2328
2024-10-03 09:35:37 +02:00
..
README.md initial commit 2024-10-03 09:35:37 +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 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