Bug reports and pull requests are welcome on GitLab at https://gitlab.com/oauth-xx/oauth2. This project should be a safe, welcoming space for collaboration, so contributors agree to adhere to the code of conduct.
To submit a patch, please fork the project, create a patch with tests, and send a pull request.
Remember to if you make changes.
Take a look at the reek list which is the file called REEK and find something to improve.
Follow these instructions:
- Fork the repository
- Create a feature branch (
git checkout -b my-new-feature) - Make some fixes.
- Commit changes (
git commit -am 'Added some feature') - Push to the branch (
git push origin my-new-feature) - Make sure to add tests for it. This is important, so it doesn't break in a future release.
- Create new Pull Request.
From time to time the appraisal gemfiles in gemfiles/ will need to be updated.
NOTE: We run on a fork of Appraisal.
Please upvote the PR for eval_gemfile support
Create or update them with the commands:
BUNDLE_GEMFILE=Appraisal.root.gemfile bundle
BUNDLE_GEMFILE=Appraisal.root.gemfile bundle exec appraisal update
bundle exec rake rubocop_gradual:autocorrectWhen adding an appraisal to CI, check the runner tool cache to see which runner to use.
Take a look at the reek list which is the file called REEK and find something to improve.
To refresh the reek list:
bundle exec reek > REEKTo run all tests
bundle exec rake testRun all the default tasks, which includes running the gradually autocorrecting linter, rubocop-gradual.
bundle exec rakeOr just run the linter.
bundle exec rake rubocop_gradual:autocorrectMade with contributors-img.
Also see GitLab Contributors: https://gitlab.com/oauth-xx/oauth2/-/graphs/main
IMPORTANT: To sign a build,
a public key for signing gems will need to be picked up by the line in the
gemspec defining the spec.cert_chain (check the relevant ENV variables there).
All releases to RubyGems.org are signed releases.
See: RubyGems Security Guide
NOTE: To build without signing the gem set SKIP_GEM_SIGNING to any value in the environment.
- Run
bin/setup && bin/rakeas a "test, coverage, & linting" sanity check - Update the version number in
version.rb, and ensureCHANGELOG.mdreflects changes - Run
bin/setup && bin/rakeagain as a secondary check, and to updateGemfile.lock - Run
git commit -am "🔖 Prepare release v<VERSION>"to commit the changes - Run
git pushto trigger the final CI pipeline before release, and merge PRs- NOTE: Remember to check the build.
- Run
export GIT_TRUNK_BRANCH_NAME="$(git remote show origin | grep 'HEAD branch' | cut -d ' ' -f5)" && echo $GIT_TRUNK_BRANCH_NAME - Run
git checkout $GIT_TRUNK_BRANCH_NAME - Run
git pull origin $GIT_TRUNK_BRANCH_NAMEto ensure latest trunk code - Set
SOURCE_DATE_EPOCHsorake buildandrake releaseuse same timestamp, and generate same checksums- Run
export SOURCE_DATE_EPOCH=$EPOCHSECONDS && echo $SOURCE_DATE_EPOCH - If the echo above has no output, then it didn't work.
- Note:
zsh/datetimemodule is needed, if runningzsh. - In older versions of
bashyou can usedate +%sinstead, i.e.export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH
- Run
- Run
bundle exec rake build - Run
bin/gem_checksums(more context 1, 2) to create SHA-256 and SHA-512 checksums. This functionality is provided by thestone_checksumsgem.- The script automatically commits but does not push the checksums
- Run
bundle exec rake releasewhich will create a git tag for the version, push git commits and tags, and push the.gemfile to rubygems.org