# Hex-პაკეტის ინსტალაცია {#install-the-hex-package}

Tuist გთავაზობთ [Hex](https://hex.pm/packages/tuist_ex)-პაკეტს, `tuist_ex`, რომელიც ინტეგრირდება თქვენს Elixir-პროექტთან ისეთი ფუნქციების ჩასართავად, როგორიცაა <.localized_link href="/guides/features/build-insights/elixir">ბილდის ანალიტიკა</.localized_link> და <.localized_link href="/guides/features/test-insights/elixir">ტესტების ანალიტიკა</.localized_link>. ეს სახელმძღვანელო გაგივლით მის ინსტალაციასა და კონფიგურაციას.

პაკეტი მოითხოვს Elixir 1.18 ან უფრო ახალ ვერსიას. მას არ სჭირდება Tuist-ის ბრძანებათა ხაზის ინტერფეისი.

## 1. პროექტის შექმნა {#create-the-project}

შექმენით პროექტი Tuist-ის დაფაზე და აირჩიეთ **Mix (Elixir)** როგორც მისი ბილდის სისტემა. მისი იდენტიფიკატორი, `account/project`, აკავშირებს თქვენს Mix-პროექტს მასთან.

## 2. პაკეტის დამატება {#add-the-package}

დაამატეთ `tuist_ex` დამოკიდებულებებში თქვენს `mix.exs`-ში:

```elixir
defp deps do
  [
    {:tuist_ex, "~> 0.10", runtime: false}
  ]
end
```


შემდეგ მიიღეთ ის:

```bash
mix deps.get
```

`runtime: false` ტოვებს Tuist-ს თქვენი მოქმედი აპლიკაციის გარეთ. გააგრძელეთ <.localized_link href="/guides/get-started/elixir-project#set-up-tuist">Elixir-ით დაწყება</.localized_link> კეშირების, ბილდის ანალიტიკისა და ტესტების ანალიტიკის ერთად კონფიგურაციისთვის. ქვემოთ მოცემული სექციები მოიცავს ავთენტიკაციისა და კონფიგურაციის დეტალებს.

## 3. თქვენი გუნდისა და უწყვეტი ინტეგრაციის ავთენტიკაცია {#authenticate}

ყველა გუნდის წევრი ასრულებს შემდეგს, რათა მიიღოს წვდომა Tuist-ის ფუნქციებზე თავის მანქანაზე:

```bash
mix tuist.login
```

ის ბეჭდავს მოკლე შესვლის კოდს, ხსნის ბრაუზერს, სადაც თქვენ შეჰყავთ ის, და ელოდება თქვენს ავტორიზაციას. ბრაუზერის გარეშე შესასვლელად, გადაეცით თქვენი სარწმუნოებები:

```bash
mix tuist.login --email person@example.com --password secret
```

როდესაც იყენებთ თვითმასპინძელ ან ლოკალურ Tuist-სერვერს, დააყენეთ მისი საბაზისო URL `mix.exs`-ში, ან გადაეცით ის `--url`-ით:

```bash
mix tuist.login --url http://localhost:8080
```

შეინარჩუნეთ ჰოსტის სახელის მართლწერის თანმიმდევრულობა. მაგალითად, `localhost`-ისთვის შენახული შესვლა განცალკევებულია `127.0.0.1`-ისთვის შენახულისგან.

GitHub Actions-ზე, CircleCI-ზე და Bitrise-ზე, უწყვეტ ინტეგრაციას არ სჭირდება შესვლის ნაბიჯი. პირველად, როდესაც ამოცანა აგზავნის ანგარიშს, ის ცვლის პროვაიდერის OpenID Connect ტოკენს Tuist-ის ტოკენზე. <.localized_link href="/guides/integrations/gitforge/github">შეაერთეთ თქვენი GitHub-რეპოზიტორია</.localized_link> თქვენს Tuist-პროექტთან და GitHub Actions-ზე მიანიჭეთ სამუშაოს `id-token: write` ნებართვა:

```yaml
jobs:
  test:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@v4
      - uses: erlef/setup-beam@v1
        with:
          elixir-version: '1.18'
          otp-version: '27'
      - run: mix deps.get
      - run: mix test
```

ნებისმიერი სხვა OpenID Connect იდენტობის პროვაიდერით, როგორიცაა Fly.io Machines, დააკონფიგურირეთ სამუშაო იდენტობის ნდობის პოლიტიკა თქვენი ანგარიშის **პარამეტრები → ავთენტიკაცია** გვერდის **სამუშაო იდენტობები** სექციაში, რაც CI-ს ანიჭებს წვდომას იმ ანგარიშის ყველა მიმდინარე და მომავალ პროექტზე. დააყენეთ `TUIST_OIDC_ACCOUNT` Tuist-ის ანგარიშზე, რომელსაც ეკუთვნის პროექტი, და მიეწოდეთ ახლად გამოშვებული იდენტობის ტოკენი პოლიტიკის აუდიტორიით `TUIST_OIDC_TOKEN`-ის მეშვეობით. ინტეგრაცია მას ავტომატურად ცვლის, როდესაც არ არის ხელმისაწვდომი ანგარიშის ტოკენი ან მოქმედი შენახული შესვლა; `mix tuist.login` ასევე იღებს მას CI-ს გარეთ. ავტომატური გაცვლები იყენებენ ვადაუწურავ სესიას მხოლოდ იმავე სერვერის, ანგარიშისა და მიწოდებული იდენტობის ტოკენისთვის. ამ იდენტობის შეცვლა იწვევს ახალ გაცვლას, ხოლო ცარიელი მიწოდებული იდენტობა ვერდება ადრეული სესიის ხელახლა გამოყენების ნაცვლად. Tuist-ის სესიები გრძელდება ერთი საათი განახლების ტოკენების გარეშე, ამიტომ უფრო ხანგრძლივი სამუშაოებისთვის, გამოუშვით ახალი იდენტობის ტოკენი და გაუშვით `mix tuist.login` ხელახლა სესიის ამოწურვამდე. მიჰყევით <.localized_link href="/guides/server/authentication#workload-identity-trust-policies">სამუშაო იდენტობის დაყენებას</.localized_link> და <.localized_link href="/guides/server/authentication#flyio-machines">Fly.io-ს მაგალითს</.localized_link>.

ფორკებიდან მოსული Pull Request-ები არ იღებენ OpenID Connect ტოკენს, ამიტომ მათი გაშვებები არ იგზავნება ანგარიშში და ჩვეულებრივად გადიან ან ვერდებიან. სხვა პროვაიდერებზე, დააყენეთ `TUIST_TOKEN` გარემოს ცვლადი ანგარიშის ტოკენზე. მიჰყევით <.localized_link href="/guides/server/authentication#continuous-integration">უწყვეტი ინტეგრაციის ავთენტიკაციის სახელმძღვანელოს</.localized_link> ერთის შესაქმნელად.

## 4. განაგრძეთ `mix test`-ისა და `mix compile`-ის გამოყენება {#aliases}

<.localized_link href="/guides/get-started/elixir-project#set-up-tuist">საერთო დაყენება</.localized_link> აინსტალირებს კომპილაციისა და ტესტების ალიასებს თქვენთვის. `mix test test/my_app_test.exs:12 --trace` აგზავნის გაშვების ანგარიშს იმავე გამომავალი მონაცემებითა და გასვლის კოდით, ხოლო კომპილაციის ინტეგრაცია მოიცავს ბილდებს, რომლებიც გამოწვეულია `mix test`-ით ან `mix phx.server`-ით. კომპილაცია, რომელიც ვერ პოულობს გასაკეთებელს, არ იგზავნება ანგარიშში.

ამოცანები ასევე მუშაობენ, როდესაც მათ საკუთარი სახელით იძახებთ. Mix-ი იწყებს ამოცანას, რომელიც ასეა დატყპილი `dev` გარემოში, ამიტომ ამოცანას უნდა დაიწყოს თავიდან მეორე პროცესში ტესტების გარემოსთვის. დაამატეთ ამოცანები სასურველ გარემოებში ამის გამოსატოვებლად:

```elixir
def cli do
  [preferred_envs: ["tuist.test": :test, "tuist.test.build": :test]]
end
```

## კონფიგურაციის ცნობარი {#configuration-reference}

შემდეგი პარამეტრები ხელმისაწვდომია `tuist`-ის ქვეშ `mix.exs`-ის პროექტის პარამეტრებში:

| პარამეტრი | ტიპი | ნაგულისხმევი | აღწერა |
| --- | --- | --- | --- |
| `project` | `String` | არ არის (სავალდებულო) | პროექტის იდენტიფიკატორი `account/project` ფორმატში. |
| `url` | `String` | `"https://tuist.dev"` | Tuist-სერვერის საბაზისო URL. |
| `cache` | `boolean` ან საკვანძო სიტყვების სია | გამორთული | დაყენება ააქტიურებს დამოკიდებულებების კეშირებას. იხილეთ <.localized_link href="/guides/features/cache/elixir">Elixir-ის კეში</.localized_link> გამონაკლისებისა და დამატებითი შეყვანებისთვის. |
| `test_retries` | `integer` | `0` | რამდენჯერ უნდა განმეორდეს ვერშეცდომილი ტესტები; იხილეთ <.localized_link href="/guides/features/test-insights/flaky-tests/elixir#test-retries">ტესტების განმეორება</.localized_link>. |
| `tags` | სია `String`-ის | `[]` | ტეგები, რომლებიც მიებას ყოველ ბილდს; იხილეთ <.localized_link href="/guides/features/build-insights/elixir#custom-metadata">მორგებული მეტამონაცემები</.localized_link>. |
| `values` | რუკა | `%{}` | საკვანძო-მნიშვნელობის მონაცემები, რომლებიც მიებას ყოველ ბილდს. |

გარემოს ცვლადებს აქვთ უპირატესობა `mix.exs`-ზე:

| ცვლადი | აღწერა |
| --- | --- |
| `TUIST_PROJECT` | პროექტის იდენტიფიკატორი `account/project` ფორმატში. |
| `TUIST_URL` | Tuist-სერვერის საბაზისო URL. |
| `TUIST_TOKEN` | აუთენტიფიკაციის ტოკენი, შენახული შესვლის ნაცვლად. |
| `TUIST_OIDC_TOKEN` | ახლად გამოსხივებული OpenID Connect იდენტობის ტოკენი, რომელიც იცვლება Tuist-ის ტოკენზე. მისი აუდიენსია უნდა იყოს `tuist` GitHub Actions-ისა და Bitrise-ისთვის, ან ემთხვეოდეს ანგარიშის სამუშაო იდენტობას სხვა პროვაიდერებისთვის. გამოიყენება `mix tuist.login`-ის მიერ, ან როგორც სათადარიგო ვარიანტი, როდესაც არ არის ხელმისაწვდომი ანგარიშის ტოკენი ან მოქმედი შენახული შესვლა. |
| `TUIST_OIDC_ACCOUNT` | Tuist-ის ანგარიშის სახელი, რომელიც ფლობს პროექტს. აუცილებელია ტოკენის გაცვლისას ანგარიშის სამუშაო იდენტობის მეშვეობით. ის ირჩევს არსებულ სამუშაო იდენტობებს შორის და თავისთავად არ ანიჭებს წვდომას. |
| `TUIST_TEST_RETRIES` | რამდენჯერ უნდა განმეორდეს ვერშეცდომილი ტესტები. |
| `TUIST_TAGS` | მძიმით გამოყოფილი ტეგები, რომლებიც მიებას ბილდს. |
| `TUIST_VALUES` | მძიმით გამოყოფილი `key=value` წყვილები, რომლებიც მიებას ბილდს. |
| `TUIST_DEBUG` | დააყენეთ `1`-ზე, რათა დაიბეჭდოს მიზეზი, თუ რატომ ვერ გაიგზავნა ანგარიში. |

ანგარიშის გაგზავნა არასდროს ცვლის `mix test`-ის ან `mix compile`-ის გამოსვლის კოდს. თუ ანგარიშის გაგზავნა შეუძლებელია, ამოცანა არაფერს ამბობს, თუ არ არის დაყენებული `TUIST_DEBUG=1`.

## შემდეგი ნაბიჯები {#next-steps}

პაკეტის დაყენებისა და კონფიგურაციის შემდეგ, შეგიძლიათ გამოიყენოთ:

- <.localized_link href="/guides/features/cache/elixir">დამოკიდებულებების კეშირება</.localized_link> კომპილირებული დამოკიდებულებების ხელახლა გამოსაყენებლად ლოკალურად და CI ბილდებში.
- <.localized_link href="/guides/features/build-insights/elixir">ბილდის ინსაიტები</.localized_link> კომპილაციის დროის, გაფრთხილებებისა და ბილდების შემაფერხებელი ფაქტორების თვალყურის დევნებისთვის.
- <.localized_link href="/guides/features/test-insights/elixir">ტესტების ინსაიტები</.localized_link> ტესტების შესრულების თვალყურის დევნებისთვის თითოეულ ტესტამდე.
- <.localized_link href="/guides/features/test-insights/flaky-tests/elixir">არასტაბილური ტესტები</.localized_link> პერიოდულად მწყვარე ტესტების აღმოჩენისა და თვალყურის დევნებისთვის.
- <.localized_link href="/guides/features/test-sharding/elixir">ტესტების დაყოფა</.localized_link> ტესტების გადანაწილებისთვის continuous integration რანერებზე.
