A template repo for quickly starting Go projects.
- Commit linting through NPM
- gorilla/mux
- ent
- golangci-lint
- godotenv
- Sentry
- Logrus
- Go to the Create a new repository page on GitHub
- Select this repo as the template in the Repository template field
- Check the Include all branches box
- Select theartofeducation as the Owner of the repository
- Add the repository name
- Add a short description for the repository
- Select Public or Private as appropriate for the repository
- Click the Create repository button
- Update files and repository information as needed
- Rebase
develop
onmain
to ensure that when you create a PR in the future, GitHub will allow it fromdevelop
git rebase origin/main
git push -f
- Follow these steps to set up branch protection rules for
develop
andmain
in the new repository (manual setup)- Go to the repo page in GitHub
- Go to the Settings page
- Go to the Branches section
- Under Branch protection rules click the Add rule button
- Type the name of the branch in Branch name pattern
- Select Require pull request reviews before merging
- Set Required approving reviews to 2
- Select Dismiss stale pull request approvals when new commits are pushed
- Select Require review from Code Owners
- Select Require status checks to pass before merging
- Select Require branches to be up to date before merging
- Check any CI pipelines needed
- Select Require signed commits
- Select Include administrators
- Click the Save changes button
- Create a new feature branch to work off
- Set up commit linting
- Run
yarn install
- Run
- Setup golangci-lint
- Run
brew install golangci/tap/golangci-lint
- Run
- Updated the module path in
go.mod
- Update the
README.md
- Commit and merge changes
Two Docker containers are setup. The first builds the application while the second will run the executable.
docker-compose up --build
Tests should be written with the application being a "black box" with no direct access. Test files go under the ./tests directory which should follow the directory structure of the application.