Skip to content

Commit

Permalink
Merge pull request #812 from github/release-updates
Browse files Browse the repository at this point in the history
Update automation
  • Loading branch information
felipesu19 authored Jan 14, 2022
2 parents 3381f31 + dc5a93a commit de2f6b4
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 2 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
.sass-cache
CNAME
test-site/
vendor/
vendor/
tmp/
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,18 @@ See [all releases](https://github.com/github/pages-gem/releases).

To release a new version of this gem, run `script/release` from the `master` branch.

This will create and tag the release.

It will also create prs in the relevant repos and assign them to you. It is your responsibility to

1. update the version of the gem in those repos
2. deploy those services as needed

The relevant repos are:
1. [github-pages](https://github.com/github/pages)
2. [jekyll-build-pages](https://github.com/actions/jekyll-build-pages/blob/main/Gemfile)
3. [pages.github.com](https://github.com/github/pages.github.com)

## License

Distributed under the [MIT License](LICENSE).
53 changes: 52 additions & 1 deletion script/release
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
#!/bin/sh

# check that gh is installed and logged in

gh auth status -h github.com

# Tag and push a release.

set -e
Expand Down Expand Up @@ -39,4 +44,50 @@ git fetch -t origin
# Tag it and bag it.

gem push github-pages-*.gem && git tag "$tag" &&
git push origin master && git push origin "$tag"
git push origin master && git push origin "$tag"

# create a new release on github
gh release create "$tag" --notes "Automated release for $tag"


# create a tmp folder
mkdir -p tmp

#for each dependent repo, create a new branch an a blank pr.
# first get the sha of main for each repo

gh_pages_sha = gh api repos/github/pages/git/refs/heads/master | jq '. | .object.sha'
jekyll_sha = gh api repos/actions/jekyll-build-pages/git/refs/heads/main | jq '. | .object.sha'

# then create the branches

gh api repos/github/pages/git/refs -F "sha"="$gh_pages_sha" -F "ref"="refs/heads/pages-gem-release-$tag"
gh api repos/github/pages/git/refs -F "sha"="$jekyll_sha" -F "ref"="refs/heads/pages-gem-release-$tag"

#then we need the tree object so we can create a commit using the api

gh_pages_tree = gh api repos/github/pages/git/commits/$gh_pages_sha | jq '. | .tree.sha'
jekyll_tree = gh api repos/github/actions/jekyll-build-pages/commits/$jekyll_sha | jq '. | .tree.sha'

# create the input file for the commit. We have to do this because the F flag doesn't support arrays

echo "{\"tree\": \"$gh_pages_tree\", \"parents\": [\"$gh_pages_sha\"], \"message\": \"automated commit for pr creation\"}" > tmp/h_pages_commit_input.json
echo "{\"tree\": \"$jekyll_tree\", \"parents\": [\"$jekyll_sha\"], \"message\": \"automated commit for pr creation\"}" > tmp/jekyll_commit_input.json

# create the commit

new_gh_pages_sha = gh api repos/github/pages/git/commits --input tmp/gh_pages_commit_input.json | jq '. | .sha'
new_jekyll_sha = gh api repos/actions/jekyll-build-pages/git/commits --input tmp/jekyll_commit_input.json | jq '. | .sha'

# associate the commit with the branch

gh api repos/github/pages/git/refs/heads/pages-gem-release-$tag -F "sha"="$new_gh_pages_sha" -F "ref"="refs/heads/pages-gem-release-$tag" -F "force"="true"
gh api repos/actions/jekyll-build-pages/git/refs/heads/pages-gem-release-$tag -F "sha"="$new_jekyll_sha" -F "ref"="refs/heads/pages-gem-release-$tag" -F "force"="true"

# create pull requests in downstream repos
gh pr create --base "master" --head "pages-gem-release-$tag" --title "Bump pages-gem version to $tag" --assignee "@me" --body "Bump pages-gem version to $tag. You must manually make those changes and commit to this branch" --repo "github/pages"
gh pr create --base "main" --head "pages-gem-release-$tag" --title "Bump pages-gem version to $tag" --assignee "@me" --body "Bump pages-gem version to $tag. You must manually make those changes and commit to this branch" --repo "actions/jekyll-build-pages"

# clean up the input file for the commit

rm tmp/*

0 comments on commit de2f6b4

Please sign in to comment.