[RUBY] Integrieren Sie circleCI in die CircleCI Rails-App

Was du machen willst

  1. Führen Sie nach dem Drücken den Test aus und benachrichtigen Sie den Erfolg oder Misserfolg.
  2. Führen Sie im Master nach dem Ausführen von 1 beim Zusammenführen den Bereitstellungsjob aus und benachrichtigen Sie über den Erfolg oder Misserfolg

Was du brauchst

  1. Registrieren Sie sich bei circleCI
  2. Legen Sie das Repository fest, das Sie unter circleCI-Überwachung platzieren möchten
  3. Beim Verwalten von Umgebungsvariablen mit credentials.yml Erstellen Sie Umgebungsvariablen für master.key in circleCI
  4. Registrieren Sie den privaten Schlüssel in circleCI, um den automatischen Bereitstellungsfluss von capistrano zu realisieren

Registrierung von master.key see -> https://qiita.com/murata0705/items/9c99fc715d8b987a5b6e SSH-Schlüsselregistrierung see -> https://circleci.com/docs/ja/2.0/add-ssh-key/#%E6%89%8B%E9%A0%86

Referenz

yaml:.circleci/config.yml


version: 2.1
orbs:
  ruby: circleci/[email protected] 
  slack: circleci/[email protected]
jobs:
  build:
    docker:
      - image: circleci/ruby:2.5.1-node-browsers
        environment:
          RAILS_ENV: test
          BUNDLER_VERSION: 2.1.4
      - image: circleci/mysql:5.6.47-ram
    working_directory: ~/app
    steps:
      - checkout
      - run:  
          name: Install bundler 
          command: gem install bundler -v 2.1.4 
      - run:
          name: Which bundler?
          command: bundle -v
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "Gemfile.lock" }}
            # fallback to using the latest cache if no exact match is found
            - v1-dependencies-
      - run:  
          name: Bundle Install  
          command: bundle install --jobs=4 --retry=3 --path vendor/bundle
      - save_cache:
          paths:
            - ./vendor/bundle
          key: v1-dependencies-{{ checksum "Gemfile.lock" }}
      - run:
          name: Wait for DB
          command: dockerize -wait tcp://127.0.0.1:3306 -timeout 120s

      # Database setup
      - run: bundle exec rake db:create
      - run: bundle exec rake db:schema:load

      # run tests!
      - run:
          name: run tests
          command: |
            mkdir /tmp/test-results
            TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"

            bundle exec rspec --format progress \
                            --format RspecJunitFormatter \
                            --out /tmp/test-results/rspec.xml \
                            --format progress \
                            $TEST_FILES
      # collect reports
      - store_test_results:
          path: /tmp/test-results
      - store_artifacts:
          path: /tmp/test-results
          destination: test-results
      # run rubocop
      - run:
          name: run rubocop
          command: bundle exec rubocop
      - slack/status:
          success_message: ':successcircleci:$CIRCLE_BRANCH Build Success\n:github: User:$CIRCLE_USERNAME'
          failure_message: ':failcircleci2:$CIRCLE_BRANCH Build Fail\n:github: User:$CIRCLE_USERNAME'
          webhook: '${SLACK_WEBHOOK}'
  deploy:
    docker:
      - image: circleci/ruby:2.5.1-node-browsers
        environment:
          BUNDLER_VERSION: 2.1.4
    working_directory: ~/app
    steps:
      - checkout
      - run:  
          name: Install bundler  
          command: gem update bundler 
      - run:
          name: Which bundler?
          command: bundle -v
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "Gemfile.lock" }}
            # fallback to using the latest cache if no exact match is found
            - v1-dependencies-
      - run:  
          name: Bundle Install  
          command: bundle install --jobs=4 --retry=3 --path vendor/bundle
      - save_cache:
          paths:
            - ./vendor/bundle
          key: v1-dependencies-{{ checksum "Gemfile.lock" }}
      - add_ssh_keys:
          fingerprints:
            - 0f:2a:6c:6a:85:f7:b4:5a:18:95:9f:71:f3:14:d0:a8
      - run:
          name: caistrano deploy
          command: bundle exec cap production deploy
      - slack/status:
          success_message: ':successcircleci:$CIRCLE_BRANCH Deploy Success\n:github: User:$CIRCLE_USERNAME'
          failure_message: ':failcircleci2:$CIRCLE_BRANCH Deploy Fail\n:github: User:$CIRCLE_USERNAME'
          webhook: '${SLACK_WEBHOOK}'
workflows:
  version: 2.1
  build-deploy:
    jobs:
      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: master

Ergänzung

Es ist seltsam, weil ich es geschrieben habe, während ich ohne Kenntnis von CI / CD gegoogelt habe. Es war aus einer plötzlichen Motivation heraus, es zu versuchen, also ...

Referenzlink

https://qiita.com/AK4747471/items/882b70f663f4a80ae770

Recommended Posts

Integrieren Sie circleCI in die CircleCI Rails-App
Integrieren Sie Docker in Ihr Ruby on Rails-Portfolio!
[Core ML] Integrieren Sie ein automatisch generiertes ML-Modell in die App
Rails Buchbesprechung App RSpec Einführung
Erstellen Sie eine neue App mit Rails
Strg-Z funktioniert, es gibt also eine Möglichkeit zu unterbrechen und zu töten: Dies ist mühsam und kann den falschen töten. Sie können dies in ein Python-Skript schreiben. Verfolgen Sie Rails-App-Fehler mit Python, C-Erweiterung Sentry