Welcome to the Geekhaven FOSS recruitment challenge! We're excited to see how you tackle the tasks and demonstrate your GitHub, SSH, and scripting skills. Read carefully and execute your tasks with precision.
Your goal is to:
- Manage GitHub repositories and permissions.
- Utilize Git hooks to validate commits.
- Override commit authorship.
- Test your tasks with Bash scripts.
- As a bonus, integrate GitHub Actions to automate workflow tasks.
- Create a private repository on GitHub.
- Add the following GitHub IDs as collaborators:
Shivg2901
Gamin8ing
- Perform a couple of commits by pushing any of your previous project files to this new repository under the main branch.
- Create a pre-commit hook that logs the last 5 commands you run in a file named
task_commands.sh
in the repository. - Make sure this file is not tracked by Git.
- Push this hook to the repository under the folder
hooks
and try it out. - Create a post-commit hook that logs the commit message and author details in a file named
commit_details.txt
in the repository. - Make sure this file is not tracked by Git.
- Push this hook to the repository under the folder
hooks
. - At the end of the task,remove these hooks & commit these two files created by hooks inside the
hooks
folder.
- Create a new branch and switch to it.
- Override some previous commits by changing the author name and email (use any desired nickname and alternate email).
- Push these changes back to your private repository under this new branch.
Create another Bash script that tests whether the tasks perfornmed above are successfully executed. Make sure include fun and colorful outputs using ANSI color codes:
- Use blue for informational messages.
- Use yellow for warnings.
- Use green for success messages.
- Use red for errors.
Configure a simple GitHub Actions workflow in your private repository. This workflow should use linting tools like shellcheck
to check for errors in your scripts & set conditions to only run on desired branch.
Create a JSON file containing your details. The JSON file should include:
- Your Name
- Your Roll Number
- Your Email
- The link to your private GitHub repository
Also, push an image to your repository where all the tasks have been verified by your tester bash script.
-
Name your files as follows:
- The script where commands were being logged:
task_commands.sh
- The testing script:
task_tester.sh
- The information JSON file:
info.json
- The GitHub Actions workflow file:
.github/workflows/task_workflow.yml
- The image file:
result.png
. - Public key:
deploy_key.pub
- Private key:
deploy_key
- The script where commands were being logged:
-
Create a pull request on this repository on the main branch where you must make a folder with name as your Enrollment Number. Under that, there should be your
info.json
file.
Make sure your submission is neat and follows the required file names and structure. Any deviation might cost you valuable points in this competitive task!
- Your private repository should have proper collaborator permissions for the IDs mentioned above.
- Make sure your Bash script runs seamlessly on any standard Linux/Unix environment.
- Pay attention to detail and ensure everything is automated as per the requirements.
- Do not use AI tools for completion of this task. We are looking for your skills and not the AI's. We know most of you might not have heard some of these tooling before, but that's the point of this task. To learn and implement new things. Learn concepts (here your AI might help you) and implement them on your own.
Weβre looking forward to seeing your submissions! Best of luck and have fun with this challenge. πΎ Shall you have any doubts, feel free to contact either of the organizers to resolve them. Irrelevant doubts will not be entertained/will be ignored. You should try resolving them on your own first, and only if the solution is not immediately obvious or found to you, only then contact us. (@Shivg2901 , @Gamin8ing).