GitHub 작업 실행 중

6548 단어 testinggithubrails
추수감사절 기간에 나는 GitHub의 조작을 익히고 몇 가지 작업 흐름을 설정했다.다음은 Rails 프로젝트에서 GitHub 조작을 사용하여rspec 테스트를 실행하려면 무엇을 해야 하는지, 그리고 나의 관찰 결과를 간단하게 되돌아본다.

하지만 우선 GitHub 작업은 무엇입니까?


GitHub 작업은 워크플로우를 만들 수 있는 작고 조합된 작업입니다.이러한 워크플로우를 사용하면 팀 또는 프로젝트의 소프트웨어 개발 라이프 사이클(SDLC)을 코드 라이브러리에 직접 삽입할 수 있습니다.이러한 작업 흐름을 이용하여 구축, 테스트, 포장, 발표, 발표와 배치를 할 수 있으며, 심사자 분배, 느슨한 파일이나linting 파일에 알림을 보내거나 코드 덮어쓰기를 검사하는 등 절차의 다른 부분을 자동화할 수 있습니다.

나의 첫 번째 시도


rspec 테스트를 처음 실행한 워크플로우는 다음과 같습니다.
  • GitHub의 Actions 탭에서 Ruby 워크플로우를 제안하는 워크플로우 설정을 클릭합니다.
  • 주 지점에 대한 당김 요청을 실행하도록 구성(또는 당김 요청이 생성된 지점에 대한 모든 푸시)
  • 내 특정 버전ubuntu-18.04 및 루비 2.5.7
  • 으로 업데이트
  • 을(를) bundle exec rake로 변경
  • 이 지점의 주 요청을 제출하고 작성
  • 터치하는 동작 보기!
  • 실패했습니다.WOMP WOMP.😞

  • 첫 번째 실패는 가상 시스템에서 Ruby 2.5.7을 사용할 수 없다는 것입니다.bundle exec rspec spec약간의 발굴을 통해 나는 ##[error]Version 2.5.7 not found 가상 머신only supports Ruby 2.5.5이라는 것을 발견했다.이 프로젝트는 최신 보안 패치 버전 2.5.7에 의존합니다.GitHub 권장 기준ubuntu-18.04은 적용되지 않습니다.반대로 저는 마켓플레이스에서 루비의 특정하고 정확한 버전을 설치하기 위해 different one 을 찾았습니다.이 조작을 통해 나는 정확한 루비 버전을 사용할 수 있고 actions/setup-ruby 캐시를 사용할 수 있다.그것은 여전히 약간 작지만, 그것이 작용했다.
    다음 장애는 Gemfile에 필요한 올바른 번들 버전을 찾을 수 없다는 것입니다.actions/cache아이고.번들 설치에 Could not find 'bundler' (1.17.3) required by your Gemfile.lock 을 추가하여 문제를 해결했습니다.
    그리고 -v 1.17.3gem 설치를 시도하는 동안 실패했습니다.
    An error occurred while installing pg (1.0.0), and Bundler cannot continue.
    Make sure that `gem install pg -v '1.0.0' --source 'https://rubygems.org/'`
    succeeds before bundling.
    
    이 문제를 해결하기 위해서, 우리는 pg 블록을 사용하여postgresql가 있는 용기를 우리의 작업 흐름에 끌어들일 수 있으며, 이 블록은 데이터베이스나 캐시를 다른 container에 불러올 수 있다.
    워크플로우 파일에서는 다음과 같습니다.
    services:
          postgres:
            image: postgres:10.11
            ports: ["5432:5432"]
            options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
    
    그리고postgresql 클라이언트를 설치해야 합니다.
    - name: Install PostgreSQL 10 Client
          run: |
            sudo apt-get -yqq install libpq-dev
    
    주의: servicesgem의 최초 구축 오류를 설치할 수 없습니다. 이 pg 패키지를 사용할 수 없기 때문입니다.
    데이터베이스를 설정하려면:
    - name: Setup Database
          env:
            PGHOST: localhost
            PGUSER: postgres
            RAILS_ENV: test
          run: |
            gem install bundler -v 1.17.3
            bundle install --jobs 4 --retry 3
            bin/rails db:setup
    
    필요에 따라 필요할 수 있습니다libpq-dev.
    마지막 세 개의 모듈(bin/rails db:create db:schema:load,postgresql 클라이언트 설치와 데이터베이스 설정)을 추가하면 저희 테스트가 실행될 수 있습니다!
    변경 사항을 커밋합니다.GitHub 작업 편집기를 사용하는 경우 이 변경 사항을 사용하여 자동으로 pull 요청을 만들고 작업이 트리거됩니다.로컬에서 이러한 변경 사항을 수행하고 요청을 만들면 실제 작업이 표시됩니다.

    최종 버전


    충분한 인내심을 가지고 따라가지 못하거나 최종 버전만 보고 싶다고요?여기 있습니다!파일 위치: service
    name: Run Rspec Tests
    
    on:
      pull_request:
        branches:
        - master
    
    jobs:
      build:
    
        runs-on: ubuntu-18.04
    
        services:
          postgres:
            image: postgres:10.11
            ports: ["5432:5432"]
            options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
    
        steps:
        - uses: actions/checkout@v1
    
        - name: Cache Ruby
          uses: actions/cache@preview
          id: cache
          with:
            path: ~/local/rubies
            key: ruby-2.5.7
    
        - name: Set up Ruby 2.5.7
          uses: clupprich/ruby-build-action@master
          id: ruby
          with:
            ruby-version: 2.5.7
            cache-available: ${{ steps.cache.outputs.cache-hit == 'true' }}
    
        - name: Print ruby version
          run: ${{ steps.ruby.outputs.ruby-path }} --version
    
        - name: Install PostgreSQL 10
          run: |
            sudo apt-get -yqq install libpq-dev
    
        - name: Setup Database
          env:
            PGHOST: localhost
            PGUSER: postgres
            RAILS_ENV: test
          run: |
            gem install bundler -v 1.17.3
            bundle install --jobs 4 --retry 3
            bin/rails db:create db:schema:load
    
        - name: Build and test with rspec
          env:
            PGHOST: localhost
            PGUSER: postgres
            RAILS_ENV: test
          run: |
            gem install bundler -v 1.17.3
            bundle install --jobs 4 --retry 3
            bundle exec rspec spec
    

    일부 관찰 결과


    편집은...불안정하고 짜증나지만 내가 하고 싶은 일을 완전히 파악하기 전까지는 버틸 거예요.내가 타자를 치고 복사/붙여넣기 절차를 할 때, 그것은 줄곧 나를 방해했다.또한 모든 문서와 전체 문서here는 사이드바에 있습니다.
    GitHub 작업을 좋아합니다. 테스트와 결과를 보기 위해 다른 도구나 서비스로 이동할 필요가 없습니다.나는 작업 흐름이 바로 거기에 있고 나의 코드와 함께 버전 제어를 하는 것을 좋아한다.내 뇌와 실제 설정에 있어서 다른 도구(예를 들어 Circle CI)로 추가 점프하지 않았다면 그렇게 서투르지 않았을 것이다.
    다른 사람이 이미 작성한 조작에는 하나marketplace가 있다.하지만 검색 .github/workflows/ruby.yml 을 통해 보듯이 선택할 수 있는 동작이 많기 때문에 그걸 누가 알겠는가!시장에 들어와 검증을 받는 데는 약간의 요구가 있지만, 내가 해 본 첫 번째 부부는 하기 어렵다.
    프로젝트에서 GitHub 작업을 사용할 것인지 여부는 도구 상자의 다른 도구에 따라 달라질 수 있습니다.Heroku 파이프를 CI에 이미 사용한 경우 이 방법은 의미가 없을 수 있습니다.

    다음은 뭐예요?


    코드 라이브러리를 테스트하는 방법에 대해 충분한 자신감을 가지고 있다면, 다음은pull이 마스터에 합병을 요청할 때 응용 프로그램에 자동으로 배치될 수 있습니다.또는 구축이 시작되거나 성공하거나 실패했을 때 느슨한 알림을 보낼 수 있습니다!

    좋은 웹페이지 즐겨찾기