Circleci::Bundle::Update::Pr
circleci-bundle-update-pr is an automation script for continuous bundle update and for sending a pull request using Scheduling a Workflow of CircleCI.
By requesting a nightly build to CircleCI with an environment variable configured in circle.yml or .circleci/config.yml to execute this script, bundle update is invoked, then commit changes and send a pull request to GitHub repository if there some changes exist.
Installation
$ gem install circleci-bundle-update-pr
Prerequisites
The application on which you want to run continuous bundle update must be configured to be built on CircleCI.
Usage
Setting GitHub fine-grained personal access token to CircleCI
GitHub fine-grained personal access token is required for sending pull requests to your repository.
- Go to your account's settings page and generate a fine-grained personal access token
- Repository access: Select your repository
- Repository permissions:
- Contents: Read and write
- Pull requests: Read and write
- On CircleCI dashboard, go to your application's "Project Settings" -> "Environment Variables"
- Add an environment variable
GITHUB_ACCESS_TOKENwith your GitHub fine-grained personal access token- If use GitHub Enterprise
-
ENTERPRISE_OCTOKIT_ACCESS_TOKENwith your GitHub Enterprise fine-grained personal access token -
ENTERPRISE_OCTOKIT_API_ENDPOINTwith your GitHub Enterprise api endpoint (e.g. https://www.example.com/api/v3)
-
- If use GitHub Enterprise
Configure circle.yml
Configure your circle.yml or .circleci/config.yml to run circleci-bundle-update-pr, for example:
version: 2
jobs:
build:
# snip
continuous_bundle_update:
docker:
- image: cimg/ruby:4.0
working_directory: ~/repo
steps:
- run:
name: Set timezone to Asia/Tokyo
command: sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
- checkout
- restore_cache:
name: Restore bundler cache
keys:
- gems-{{ .Environment.COMMON_CACHE_KEY }}-{{ checksum "Gemfile.lock" }}
- gems-{{ .Environment.COMMON_CACHE_KEY }}-
- run:
name: Setup requirements for continuous bundle update
command: gem install -N circleci-bundle-update-pr
- run:
name: Continuous bundle update
command: circleci-bundle-update-pr <username> <email>
workflows:
version: 2
build:
jobs:
- build:
# snip
nightly:
triggers:
- schedule:
cron: "00 10 * * 5"
filters:
branches:
only: main
jobs:
- continuous_bundle_updateNOTE: Please make sure you replace <username> and <email> with yours.
circleci-bundle-update-pr regularly updates myself. See also .circleci/config.yml.
CLI command references
General usage:
$ circleci-bundle-update-pr <git username> <git email address>
By default, it works only on master or main branches, but you can also explicitly specify any branches rather than only these branches by adding them to the arguments.
$ circleci-bundle-update-pr <git username> <git email address> main develop topic
You can also add the following options:
$ circleci-bundle-update-pr -h
Usage: circleci-bundle-update-pr [options]
-a, --assignees alice,bob,carol Assign the PR to them
-r, --reviewers alice,bob,carol Request PR review to them
-l, --labels "In Review, Update" Add labels to the PR
-d, --duplicate Make PR even if it has already existed
Tips
Customize PR description
If .circleci/BUNDLE_UPDATE_NOTE.md exists, the content will be appended to PR description.
e.g. .circleci/BUNDLE_UPDATE_NOTE.md is the below.
## Notice
* example1
* example2
PR description will be created as the below.
**Updated RubyGems:**
* [ ] [octokit](https://github.com/octokit/octokit.rb): [`4.9.0...4.10.0`](https://github.com/octokit/octokit.rb/compare/v4.9.0...v4.10.0)
* [ ] [public_suffix](https://github.com/weppos/publicsuffix-ruby): [`3.0.2...3.0.3`](https://github.com/weppos/publicsuffix-ruby/compare/v3.0.2...v3.0.3)
Powered by [circleci-bundle-update-pr](https://rubygems.org/gems/circleci-bundle-update-pr)
---
## Notice
* example1
* example2
.circleci/BUNDLE_UPDATE_NOTE.md or CIRCLECI_BUNDLE_UPDATE_NOTE.md, either one is OK. It gives priority .circleci/BUNDLE_UPDATE_NOTE.md over CIRCLECI_BUNDLE_UPDATE_NOTE.md.
Run on GitHub Actions
Warning
GitHub Actions are NOT officially supported. This is just a tip.
Configure your .github/workflows/bundle-update-pr.yml to run circleci-bundle-update-pr, for example:
name: bundle-update-pr
on:
schedule:
- cron: "00 10 * * 5" # JST 19:00 (Fri)
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v7
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '4.0'
- name: Install dependencies
run: |
set -x
gem install -N bundler circleci-bundle-update-pr
- name: Set timezone to Asia/Tokyo
run: |
set -x
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
- name: run circleci-bundle-update-pr
run: |
set -x
export CIRCLE_BRANCH=$(echo $GITHUB_REF | sed -e 's!refs/heads/!!g')
export CIRCLE_PROJECT_USERNAME=$(echo $GITHUB_REPOSITORY | cut -d "/" -f 1)
export CIRCLE_PROJECT_REPONAME=$(echo $GITHUB_REPOSITORY | cut -d "/" -f 2)
git checkout -b $CIRCLE_BRANCH
circleci-bundle-update-pr "${GIT_USER_NAME}" "${GIT_USER_EMAIL}"
env:
GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GIT_USER_NAME: "your name"
GIT_USER_EMAIL: "ci@example.com"Contributing
- Fork it ( https://github.com/masutaka/circleci-bundle-update-pr/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Contributors
Made with contrib.rocks.