Making the most out of GitHub
GitHub Actions
You can integrate GitHub Actions into your repository by adding a .github\workflows folder in the root of your repository. In this folder, you can store all your GitHub Workflows.
Your GitHub Workflows can be triggered by a variety triggers. For example, if you want to trigger a GitHub workflow upon a commit, you can specify it like this:
| |
After specifying the trigger, you can add Actions to it. GitHub has a Marketplace where you can find lots of actions, or you can write your own action, in for example, nodejs.
You can add secrets for your GitHub Actions under Repository > Settings > Secrets and variables > Actions.
Special Repositories
.GitHub
GitHub has a lot of special repositories. One of these special repositories is the .github repository. The .github repository serves as a fallback if one of your other repositories does not contain a .github folder. For example, you can add an issue template in the .github repository that will be applied to all your repositories.
Organization level
If you have a .github repository in an organization, it can also serve as a profile page. The README.md inside this repository will be served on your organization.
Profile
You can add a username/username GitHub repository where you can add a README.md file that will serve as your profile page.
GitHub.io
You can use GitHub Pages to host static files. For example, if you have documentation that you want to give to your endusers, you can use gitHub.io. This site is built with Hugo and published with a GitHub Action to GitHub.io.
GitHub Apps
Next to GitHub Actions, you can make use of GitHub Apps. You can find a list of GitHub Apps in the Marketplace. GitHub Apps can automatically deny pull requests or add extra checks for your code. For example, you can use dependabot as a GitHub app to automatically create new pull requests whenever your dependencies have new versions.
CI/CD In Action
Let’s say you have a Feature Branch Workflow like this:
gitGraph
commit id: "new Feature"
branch "Feature Branch"
commit
commit
checkout "main"
merge "Feature Branch"
commit
Commiting directly on main has been disabled (Branch Protection Rule).
When merging the Feature Branch back to Main, it’s possible to automatically create a new Release and publish it to, for example, npmjs.org
The GitHub Workflow above will be triggered when something has been pushed to main. It uses Conventional Commits to generate a CHANGELOG.md and checks what the new version number should be.
git commit -m "Chore: Added new Feature [X]"
| Prefix | Version upgrade |
|---|---|
| Feat: | Minor |
| Feat!: | Major |
| Fix: | Patch |
| [BREAKING CHANGE]: | Major |
Other prefixes like docs:, chore:, build:, ci:, test: and refactor: may be used.
See the Conventional Commits site for more info.
After the Feature branch has been merged back to main, The GitHub workflow will be triggered and it will create a new Pull Request with a generated CHANGELOG.md and an updated version number.
gitGraph
commit id: "new Feature"
branch "Feature Branch"
commit
commit
checkout "main"
merge "Feature Branch"
branch "Release Branch"
commit id: "Updated Changelog"
checkout "main"
merge "Release Branch" type: REVERSE tag: "Release"
commit