GitHub 작업 실행 중
하지만 우선 GitHub 작업은 무엇입니까?
GitHub 작업은 워크플로우를 만들 수 있는 작고 조합된 작업입니다.이러한 워크플로우를 사용하면 팀 또는 프로젝트의 소프트웨어 개발 라이프 사이클(SDLC)을 코드 라이브러리에 직접 삽입할 수 있습니다.이러한 작업 흐름을 이용하여 구축, 테스트, 포장, 발표, 발표와 배치를 할 수 있으며, 심사자 분배, 느슨한 파일이나linting 파일에 알림을 보내거나 코드 덮어쓰기를 검사하는 등 절차의 다른 부분을 자동화할 수 있습니다.
나의 첫 번째 시도
rspec 테스트를 처음 실행한 워크플로우는 다음과 같습니다.
ubuntu-18.04
및 루비 2.5.7bundle exec rake
로 변경첫 번째 실패는 가상 시스템에서 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.3
gem 설치를 시도하는 동안 실패했습니다.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
주의: services
gem의 최초 구축 오류를 설치할 수 없습니다. 이 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이 마스터에 합병을 요청할 때 응용 프로그램에 자동으로 배치될 수 있습니다.또는 구축이 시작되거나 성공하거나 실패했을 때 느슨한 알림을 보낼 수 있습니다!
Reference
이 문제에 관하여(GitHub 작업 실행 중), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jennapederson/github-actions-in-action-2c5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)