• Stars
    star
    117
  • Rank 301,828 (Top 6 %)
  • Language
    Ruby
  • License
    MIT License
  • Created almost 10 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Provide continues bundle update using CircleCI

Circleci::Bundle::Update::Pr

Build Status License Gem

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 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 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:

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-pr <username> <email>

workflows:
  version: 2
  build:
    jobs:
      - build:
          # snip
  nightly:
    triggers:
      - schedule:
          cron: "00 10 * * 5"
          filters:
            branches:
              only: master
    jobs:
      - continuous_bundle_update

NOTE: 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> master 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:

name: bundle-update-pr

on:
  schedule:
    - cron: "00 10 * * 5" # JST 19:00 (Fri)

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - 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 -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:      "[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

More Repositories

1

github-nippou

Print today's your GitHub activity for issues and pull requests.
Go
65
star
2

ci-build-trigger

A trigger of bundle update
Ruby
32
star
3

github-actions-all-in-one-project

Automatically add an issue or pull request to specific GitHub Project when you create them.
Shell
27
star
4

emacs-helm-ghq

ghq with helm interface
Emacs Lisp
25
star
5

emacs-helm-qiita

Qiita with helm interface
Emacs Lisp
10
star
6

emacs-helm-bundle-show

`$ bundle show` with helm interface
Emacs Lisp
9
star
7

emacs-helm-hatena-bookmark

Hatena::Bookmark with helm interface
Emacs Lisp
8
star
8

dotfiles-public

masutaka public dot files
Emacs Lisp
7
star
9

circleci-tfupdate-orb

CircleCI Orb for continuous updating terraform with tfupdate
6
star
10

gist_updater

Updates your Gist files defined in YAML
Ruby
5
star
11

chalow

CHAngeLog On the Web
Perl
5
star
12

elscreen-mew

ElScreen add-on for Mew.
Emacs Lisp
4
star
13

mackerel-plugin-delayed-job-count

delayed_job custom metrics plugin for mackerel.io agent.
Go
3
star
14

heroku-static-contents

a sample of static contents on Heroku
JavaScript
3
star
15

qiita-team-feed

[WIP] Deliver Qiita:Team feed
Go
3
star
16

masutaka-feed

Notify my feeds of github and hatebu to mastodon and pushover
JavaScript
2
star
17

google-contacts-mew

Make your Mew addrbook using your gmail addrbook
Emacs Lisp
2
star
18

homebrew-tap

A Homebrew formula for github-nippou
Ruby
2
star
19

github-organization-watcher

An easy way to manage subscriptions of multiple organizations
Ruby
2
star
20

heroku-docker-trial

This is a sample application for Heroku Meetup #23 "Heroku Dynamite!!".
Ruby
2
star
21

changelog-parser

[WIP] golang implementation of ChangeLogReader.pm
Go
1
star
22

masutaka-metrics

Post masutaka metrics to fluentd
Ruby
1
star
23

heroku-buildpack-proximo

Unofficial Heroku Buildpack to install proximo
Shell
1
star
24

sandbox-elm-esa

Elm
1
star
25

mackerel-plugin-fastly-billing

Fastly billing custom metrics plugin for mackerel.io agent.
Go
1
star
26

docker-octodown

Dockerized octodown
Shell
1
star
27

masutaka-29hours

Deploy 29hours to masutaka.net
Ruby
1
star
28

emacs-helm-esa

esa with helm interface (\( β°βŠ–β°)/)
Emacs Lisp
1
star
29

awesome-github-feed

:octocat: Deliver awesome GitHub feed
Ruby
1
star