Travis-CI 및 Codecov와 Elixir Phoenix의 지속적인 통합
최근에 내가 더 광범위하게 하고 있는 것은 단위 테스트입니다. 반드시 TDD를 수행하는 것이 아니라 단위 테스트 그 자체입니다. 당신이 그것을 즐기기 시작하면 그것은 도전처럼 되고 또한 중독이 됩니다. 당신의 프로젝트에서 커버리지 보고 도구가 100% 커버리지 배지를 보여주는 것은 큰 기쁨입니다. 단위 테스트는 또한 더 나은 코드를 생성하고 더 안전하다고 느끼므로 개발 프로세스에 추가하는 것이 긍정적입니다.
손에
먼저 travis-ci.org 및 codecov.io에 등록해야 하며 둘 다 공용 리포지토리에 대한 무료 계획이 있습니다. (github를 사용하여 가입)
위와 같이 두 서비스 모두에 통합하려는 리포지토리를 선택합니다.
보고 도구의 경우 패키지
ExCoveralls
를 사용하고 Phoenix 프로젝트의 mix.exs
파일에 다음을 추가합니다.defmodule Yourapp.MixProject do
use Mix.Project
def project do
[
app: :yourapp,
version: "0.1.0",
elixir: "~> 1.5",
elixirc_paths: elixirc_paths(Mix.env()),
compilers: [:phoenix, :gettext] ++ Mix.compilers(),
start_permanent: Mix.env() == :prod,
aliases: aliases(),
deps: deps(),
test_coverage: [tool: ExCoveralls] # ADD THIS LINE
]
end
...
defp deps do
[
{:phoenix, "~> 1.4.9"},
{:phoenix_pubsub, "~> 1.1"},
{:phoenix_ecto, "~> 4.0"},
{:ecto_sql, "~> 3.1"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.11"},
{:excoveralls, "~> 0.11.1"}, # ADD THIS LINE
{:phoenix_live_reload, "~> 1.2", only: :dev},
{:gettext, "~> 0.11"},
{:jason, "~> 1.0"},
{:plug_cowboy, "~> 2.0"}
]
end
...
end
또한 다음과 같이 프로젝트의 루트 폴더에
.travis.yml
파일을 만듭니다.language: elixir
elixir:
- '1.9.1'
otp_release:
- '22.0.7'
env:
- MIX_ENV=test
addons:
postgresql: '9.6'
services:
- postgresql
before_script:
- cp config/travis.exs config/test.exs
- mix do ecto.create, ecto.migrate
script:
- mix do compile --warnings-as-errors, coveralls.json
after_success:
- bash <(curl -s https://codecov.io/bash)
cache:
directories:
- _build
- deps
before_script는
test.exs
에 대한 travis.exs
파일을 대체하므로 travis가 제대로 작동하도록 특정 환경을 실행합니다.따라서
travis.exs
폴더 아래에 이 config
를 생성해야 합니다.use Mix.Config
# Configure your database
config :yourapp, yourapp.Repo,
username: "postgres",
password: "",
database: "yourapp_test",
hostname: "localhost",
pool: Ecto.Adapters.SQL.Sandbox
# We don't run a server during test. If one is required,
# you can enable the server option below.
config :yourapp, yourappWeb.Endpoint,
http: [port: 4002],
server: false
# Print only warnings and errors during test
config :logger, level: :warn
또한 테스트하지 않거나 적용 범위 메트릭을 고려하지 않을 일부 파일을 제외하도록 적용 범위 보고 도구를 구성할 수 있습니다.
프로젝트의 루트 폴더에
coveralls.json
파일 생성{
"coverage_options": {
"minimum_coverage": 100
},
"skip_files": [
"test/",
"lib/yourapp_web.ex",
"lib/yourapp.ex",
"lib/yourapp/application.ex",
"lib/yourapp/repo.ex",
"lib/yourapp_web/endpoint.ex",
"lib/yourapp_web/gettext.ex",
"lib/yourapp_web/views/error_helpers.ex"
]
}
이 minimum_coverage 구성은 실제 프로젝트에서 달성하기 어렵지만 불가능하지는 않은 100% 적용 범위가 없는 빌드를 실패로 표시합니다.
다음과 같이 빌드 통과 및 적용 범위 비율의 배지를 표시합니다.
이것을 추가하여 yourgithub를 github 사용자 이름으로 바꾸고 yourrepo를 리포지토리 이름으로 바꿉니다.
[![codecov](https://codecov.io/gh/yourgithub/yourrepo/branch/master/graph/badge.svg)](https://codecov.io/gh/yourgithub/yourrepo)
[![Build Status](https://travis-ci.org/yourgithub/yourrepo.svg?branch=master)](https://travis-ci.org/yourgithub/yourrepo)
이 모든 구성을 사용하면 풀 요청을 생성할 때마다 다음과 같은 내용이 표시됩니다.
PR 목록은 확인 상태에 따라 확인 또는 십자가를 표시합니다.
Reference
이 문제에 관하여(Travis-CI 및 Codecov와 Elixir Phoenix의 지속적인 통합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/silva96/continuous-integration-in-elixir-phoenix-with-travis-ci-and-codecov-32pi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)