Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/masutaka/circleci-bundle-update-pr
Provide continues bundle update using CircleCI
https://github.com/masutaka/circleci-bundle-update-pr
circleci github ruby-gem
Last synced: 7 days ago
JSON representation
Provide continues bundle update using CircleCI
- Host: GitHub
- URL: https://github.com/masutaka/circleci-bundle-update-pr
- Owner: masutaka
- License: mit
- Created: 2015-02-13T06:44:42.000Z (almost 10 years ago)
- Default Branch: main
- Last Pushed: 2024-12-06T13:28:06.000Z (22 days ago)
- Last Synced: 2024-12-14T08:03:57.954Z (14 days ago)
- Topics: circleci, github, ruby-gem
- Language: Ruby
- Homepage:
- Size: 431 KB
- Stars: 118
- Watchers: 6
- Forks: 19
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Circleci::Bundle::Update::Pr
[![CircleCI Status](https://img.shields.io/circleci/build/github/masutaka/circleci-bundle-update-pr/main?style=flat-square&logo=circieci&label=CircleCI)][circleci]
[![CodeQL Status](https://img.shields.io/github/actions/workflow/status/masutaka/circleci-bundle-update-pr/github-code-scanning%2Fcodeql?branch=main&style=flat-square&logo=githubactions&label=CodeQL)][codeql]
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fmasutaka%2Fcircleci-bundle-update-pr.svg?type=shield)][fossa]
[![Gem Version](https://img.shields.io/gem/v/circleci-bundle-update-pr?style=flat-square&logo=rubygems&label=Gem)][gem][circleci]: https://app.circleci.com/pipelines/github/masutaka/circleci-bundle-update-pr?branch=main
[codeql]: https://github.com/masutaka/circleci-bundle-update-pr/actions/workflows/github-code-scanning/codeql?query=branch%3Amain
[fossa]: https://app.fossa.com/projects/git%2Bgithub.com%2Fmasutaka%2Fcircleci-bundle-update-pr?ref=badge_shield
[gem]: https://rubygems.org/gems/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`](https://circleci.com/docs/2.0/workflows/#scheduling-a-workflow).
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 personal access token to CircleCI
GitHub personal access token is required for sending pull requests to your repository.
1. Go to [your account's settings page](https://github.com/settings/tokens) and generate a personal access token with "repo" scope
2. On CircleCI dashboard, go to your application's "Project Settings" -> "Environment Variables"
3. Add an environment variable `GITHUB_ACCESS_TOKEN` with your GitHub personal access token
* If use GitHub Enterprise
* `ENTERPRISE_OCTOKIT_ACCESS_TOKEN` with your GitHub Enterprise personal access token
* `ENTERPRISE_OCTOKIT_API_ENDPOINT` with your GitHub Enterprise api endpoint (e.g. https://www.example.com/api/v3)### Configure circle.yml
Configure your `circle.yml` or `.circleci/config.yml` to run `circleci-bundle-update-pr`, for example:
```yaml
version: 2
jobs:
build:
# snip
continuous_bundle_update:
docker:
- image: ruby:3.0.1-alpine
working_directory: /work
steps:
- run:
name: Install System Dependencies
command: |
# See also https://circleci.com/docs/2.0/custom-images/#required-tools-for-primary-containers
apk add --update --no-cache git openssh-client tar gzip ca-certificates \
tzdata
gem install -N bundler
- run:
name: Set timezone to Asia/Tokyo
command: 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
- deploy:
name: Continuous bundle update
command: circleci-bundle-update-prworkflows:
version: 2
build:
jobs:
- build:
# snip
nightly:
triggers:
- schedule:
cron: "00 10 * * 5"
filters:
branches:
only: main
jobs:
- continuous_bundle_update
```NOTE: Please make sure you replace `` and `` with yours.
`circleci-bundle-update-pr` regularly updates myself. See also [.circleci/config.yml](.circleci/config.yml).
## CLI command references
General usage:
```
$ circleci-bundle-update-pr
```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 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
Configure your `.github/workflows/bundle-update-pr.yml` to run circleci-bundle-update-pr, for example:```yaml
name: bundle-update-pron:
schedule:
- cron: "00 10 * * 5" # JST 19:00 (Fri)jobs:
build:
runs-on: ubuntu-lateststeps:
- uses: actions/checkout@v1- name: Set up Ruby
uses: actions/setup-ruby@v1
with:
ruby-version: v2.6.x- 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 -xexport 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: "[email protected]"
```## Contributing
1. Fork it ( https://github.com/masutaka/circleci-bundle-update-pr/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request## Contributors
*Made with [contrib.rocks](https://contrib.rocks).*
## License
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fmasutaka%2Fcircleci-bundle-update-pr.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fmasutaka%2Fcircleci-bundle-update-pr?ref=badge_large)