Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GitHub actions #43

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions Teaching/Github-Actions/Github-Actions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Github Actions

## Story

In software development, it's essential to maintain a structured workflow to manage changes efficiently and ensure code quality. Git workflows like GitFlow and GitHub Flow provide guidelines for managing branching strategies and integrating changes smoothly.
SdSadat marked this conversation as resolved.
Show resolved Hide resolved

## Materials

* https://www.atlassian.com/git/tutorials/comparing-workflows,
* https://www.redhat.com/sysadmin/git-hooks,
* https://docs.github.com/en/actions/using-workflows/about-workflows
* https://codefresh.io/learn/github-actions/github-actions-tutorial-and-examples/

## What you need to do

* Choose a Git workflow model (e.g., GitFlow, GitHub Flow, or your custom workflow).
* Set up a new project repository following the chosen workflow model.
* Create a new project repository on GitHub.
* Define the repository structure, including main, feature, and release branches.
SdSadat marked this conversation as resolved.
Show resolved Hide resolved
* Establish guidelines for branch naming conventions and versioning schemes.
* Implement a feature by creating a new feature branch, making changes, and merging the branch back into the main branch.
* Create feature branches for new developments and bug fixes.
* Demonstrate the process of making changes, staging commits, and merging branches.
* Highlight best practices for resolving merge conflicts and ensuring branch consistency.
* Configure a continuous integration (CI) system (e.g., GitHub Actions) to automate testing and code quality checks.
* Integrate CI tools such as GitHub Actions into the project workflow.
* Define CI pipelines to automate testing, code analysis, and deployment processes.
SdSadat marked this conversation as resolved.
Show resolved Hide resolved
* Customize CI configurations to suit project requirements and ensure seamless integration with Git branches.

* Document your workflow process, including branching strategies, pull request guidelines, and CI configuration.

* Bonus Task 1: Implement automatic deployment of the project to a staging environment after successful CI checks.
* Bonus Task 2: Experiment with Git hooks to enforce coding standards and prevent committing code that doesn't meet quality criteria.
SdSadat marked this conversation as resolved.
Show resolved Hide resolved
* Dive deeper into Git hooks by experimenting with post-receive hooks for server-side actions.
* Explore advanced hook scripts to enforce stricter code quality criteria and prevent committing substandard code.

**Please remember to keep the presentation short and concise. Long presentation bores the audience and you will also get tired while presenting. It has also been observed that images, quotes, interactive programming sessions tend to keep the audience interested in the content. (Recommended: Keep the presentation within 20 slides). Interview should be also prepared for questions regarding the topics being presented by him/her.**
SdSadat marked this conversation as resolved.
Show resolved Hide resolved

## Tech Stack

Git, CI/CD tools (e.g., GitHub Actions).

## Learning from the task

Understand Git workflows and their applications in real-world projects.
Learn about integrating Git with CI/CD pipelines to automate testing and deployment processes.
Gain experience in setting up and managing complex development workflows.