Skip to content

Commit

Permalink
Merge branch '4-stable' into suppress_various_warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
nickfloyd committed Jun 17, 2022
2 parents c8ea846 + 912b003 commit 37ef67a
Show file tree
Hide file tree
Showing 6 changed files with 127 additions and 20 deletions.
21 changes: 12 additions & 9 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,19 @@

1. Create a list of all the changes since the prior release
1. Compare the latest release to master using https://github.com/octokit/octokit.rb/compare/`${latest}`...master
1. Open the linked pull requests from all the `Merge pull request #...` commits
1. For all non-documentation PRs, copy title (including pull request number) into markdown list items
1. (optional, but nice) Sort into logical buckets, like "support for additional endpoints", "enhancements", "bugfixes"
1. Reorganize to put the pull request number at the start of the line
1. Ensure there are no breaking changes _(if there are breaking changes you'll need to create a release branch without those changes or bump the major version)_
1. Update the version
2. Open the linked pull requests from all the `Merge pull request #...` commits
3. For all non-documentation PRs, copy title (including pull request number) into markdown list items
4. (optional, but nice) Sort into logical buckets, like "support for additional endpoints", "enhancements", "bugfixes"
5. Reorganize to put the pull request number at the start of the line
2. Ensure there are no breaking changes _(if there are breaking changes you'll need to create a release branch without those changes or bump the major version)_
3. Update the version
1. Update the constant in `lib/octokit/version.rb`
1. Commit and push directly to master
1. Run the `script/release` script to cut a release
1. Draft a new release at https://github.com/octokit/octokit.rb/releases/new containing the curated changelog
2. Commit the version change and push directly to master
4. (Optional) Run `script/release` with no parameters to execute a dry run of a release
5. Run the `script/release -r` script to cut a release (this will run `script/validate` to perform the permission check)
6. Draft a new release at https://github.com/octokit/octokit.rb/releases/new containing the curated changelog

----

## Prerequisites

Expand Down
12 changes: 12 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Security Policy

Thanks for helping make GitHub Open Source Software safe for everyone.

GitHub takes the security of our software products and services seriously, including all of the open source code repositories managed through our GitHub organizations, such as [Octokit](https://github.com/octokit).

Even though [open source repositories are outside of the scope of our bug bounty program](https://bounty.github.com/index.html#scope) and therefore not eligible for bounty rewards, we want to make sure that your finding gets passed along to the maintainers of this project for remediation.


## Reporting a Vulnerability

Since this source is part of [Octokit](https://github.com/octokit) (a GitHub organization) we ask that you follow the guidelines [here](https://github.com/github/.github/blob/master/SECURITY.md#reporting-security-issues) to report anything that you might've found.
2 changes: 1 addition & 1 deletion lib/octokit/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ module Octokit

# Current minor release.
# @return [Integer]
MINOR = 24
MINOR = 25

# Current patch level.
# @return [Integer]
Expand Down
13 changes: 12 additions & 1 deletion script/package
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,15 @@

mkdir -p pkg
gem build *.gemspec
mv *.gem pkg

./script/validate || rm *.gem

echo "*** Packing and moving the octokit gem ***"
if [ -f *.gem ]; then
mv *.gem pkg
echo -e '☑ success'
else
echo -e '☒ failure'
exit 1
fi

55 changes: 46 additions & 9 deletions script/release
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,49 @@

set -e

version="$(script/package | grep Version: | awk '{print $2}')"
[ -n "$version" ] || exit 1

echo $version
git commit --allow-empty -a -m "Release $version"
git tag "v$version"
git push origin
git push origin "v$version"
gem push pkg/*-${version}.gem
usage() {
echo "Usage: $0 [-r] Tags and releases/publishes octokit" 1>&2; exit 1;
}

while [ $# -gt 0 ]
do
case $1 in
'-r')
r=true
;;
'-h')
usage
;;
*)
echo "No valid parameter passed in, performing a dry run...";
;;
esac
shift
done

if [ -z "${r}" ]; then
./script/package
echo "*** Dry run: octokit was not tagged or released ***"
echo -e '☑ success'
else

# We execite the script separately to get logging and proper exit conditions
./script/package

# We need to pull the version from the actual file that is about to be published
file=$(ls pkg/*.gem| head -1)
version=$(echo $file | sed -e 's/.*octokit-\(.*\).gem.*/\1/')

[ -n "$version" ] || exit 1

echo "*** Tagging and publishing $version of octokit ***"

git commit --allow-empty -a -m "Release $version"
git tag "v$version"
git push origin
git push origin "v$version"
gem push pkg/*-${version}.gem
echo -e '☑ success'
fi


44 changes: 44 additions & 0 deletions script/validate
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/usr/bin/env bash
# Usage: script/gem
# Validates the packed gem to determine if file permissions are correct.

<<'###SCRIPT_COMMENT'
Purpose:
(Given octokit.rb is currently shipped "manually")
Because different environments behave differently, it is recommended that the integrity and file permissions of the files packed in the gem are verified.
This is to help prevent things like releasing world writeable files in the gem. The simple check below looks at each file contained in the packed gem and
verifies that the files are only owner writeable.
Requirements:
This script expects that script/package, script/release or 'gem build *.gemspec' have been run
###SCRIPT_COMMENT


FILE=$(ls *.gem| head -1)

echo "*** Validating file permissions in the octokit gem ***"

if [ ! -f "$FILE" ]; then
echo "$FILE does not exist. Please run script/package, script/release or 'gem build *.gemspec' to generate the gem to be validated"
echo -e '☒ failure'
exit 1
fi

tar -xf "${FILE}"

# naive check to quickly see if any files in the gem are set to the wrong permissions
for f in $(tar --numeric-owner -tvf data.tar.gz )
do
if [ $f == "-rw-rw-rw-" ]; then
echo "World writeable files (-rw-rw-rw- | 666) detected in the gem. Please repack and make sure that all files in the gem are owner read write ( -rw-r--r-- | 644 )"
echo -e '☒ failure'
rm -f checksums.yaml.gz data.tar.gz metadata.gz
exit 1
fi
done

# Check clean up
echo -e '☑ success'
rm -f checksums.yaml.gz data.tar.gz metadata.gz

0 comments on commit 37ef67a

Please sign in to comment.