უწყვეტი ინტეგრაცია (CI)
იმისათვის, რომ Tuist-ის ბრძანებები შეასრულოთ თქვენს უწყვეტი ინტეგრაციის სამუშაო ნაკადებში, საჭიროა მისი დაყენება თქვენს CI გარემოში.
ავტორიზაცია არის სავალდებულო მხოლოდ იმ შემთხვევაში, თუ გსურთ გამოიყენოთ სერვერის მხარეს განთავსებული ფუნქციები, როგორიცაა cache.
შემდეგი სექციები წარმოადგენს მაგალითებს, თუ როგორ უნდა გააკეთოთ ეს სხვადასხვა CI პლატფორმაზე.
მაგალითები#
GitHub Actions#
GitHub Actions-ზე შეგიძლიათ გამოიყენოთ OIDC ავტორიზაცია უსაფრთხო, საიდუმლოების გარეშე შესასვლელად:
name: Build Application
on:
pull_request:
branches:
- main
push:
branches:
- main
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
- run: tuist auth login
- run: tuist setup cache
name: Build Application
on:
pull_request:
branches:
- main
push:
branches:
- main
permissions:
id-token: write
contents: read
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- run: tuist auth login
- run: tuist setup cache
name: Build Application
on:
pull_request:
branches:
- main
push:
branches:
- main
env:
TUIST_TOKEN: ${{ secrets.TUIST_TOKEN }}
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
- run: tuist setup cache
name: Build Application
on:
pull_request:
branches:
- main
push:
branches:
- main
env:
TUIST_TOKEN: ${{ secrets.TUIST_TOKEN }}
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- run: tuist setup cache
OIDC ავტორიზაციის გამოყენებამდე, თქვენ უნდა მიუერთოთ თქვენი GitHub რეპოზიტორია თქვენს Tuist პროექტს. permissions: id-token: write აუცილებელია OIDC-ის მუშაობისთვის. ალტერნატიულად, შეგიძლიათ გამოიყენოთ account token TUIST_TOKEN საიდუმლოსთან ერთად.
ჩვენ გირჩევთ გამოიყენოთ mise use --pin თქვენს Tuist პროექტებში, რათა დააფიქსიროთ Tuist-ის ვერსია ყველა გარემოში. ეს ბრძანება შექმნის .tool-versions ფაილს, რომელიც შეიცავს Tuist-ის ვერსიას.
Xcode Cloud#
Xcode Cloud-ში, რომელიც იყენებს Xcode პროექტებს როგორც ჭეშმარიტების წყაროს, თქვენ უნდა დაამატოთ post-clone სკრიპტი Tuist-ის დასაყენებლად და საჭირო ბრძანებების შესასრულებლად, მაგალითად tuist generate:
#!/bin/sh
# Mise installation taken from https://mise.jdx.dev/continuous-integration.html#xcode-cloud
curl https://mise.run | sh # Install Mise
export PATH="$HOME/.local/bin:$PATH"
mise install # Installs the version from .mise.toml
# Runs the version of Tuist indicated in the .mise.toml file
mise exec -- tuist install --path ../ # `--path` needed as this is run from within the `ci_scripts` directory
mise exec -- tuist generate -p ../ --no-open # `-p` needed as this is run from within the `ci_scripts` directory
გამოიყენეთ account token, TUIST_TOKEN გარემოს ცვლადის დაყენებით თქვენს Xcode Cloud სამუშაო ნაკადის პარამეტრებში.
CircleCI#
CircleCI-ზე შეგიძლიათ გამოიყენოთ OIDC ავტორიზაცია უსაფრთხო, საიდუმლოების გარეშე შესასვლელად:
version: 2.1
jobs:
build:
macos:
xcode: "15.0.1"
steps:
- checkout
- run:
name: Install Mise
command: |
curl https://mise.jdx.dev/install.sh | sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> $BASH_ENV
- run:
name: Install Tuist
command: mise install
- run:
name: Authenticate
command: mise exec -- tuist auth login
- run:
name: Build
command: mise exec -- tuist setup cache
version: 2.1
jobs:
build:
macos:
xcode: "15.0.1"
environment:
TUIST_TOKEN: $TUIST_TOKEN
steps:
- checkout
- run:
name: Install Mise
command: |
curl https://mise.jdx.dev/install.sh | sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> $BASH_ENV
- run:
name: Install Tuist
command: mise install
- run:
name: Build
command: mise exec -- tuist setup cache
OIDC ავტორიზაციის გამოყენებამდე, თქვენ უნდა მიუერთოთ თქვენი GitHub რეპოზიტორია თქვენს Tuist პროექტს. CircleCI OIDC ტოკენები მოიცავს თქვენს მიერთებულ GitHub რეპოზიტორიას, რომელსაც Tuist იყენებს თქვენს პროექტებზე წვდომის ავტორიზაციისთვის. ალტერნატიულად, შეგიძლიათ გამოიყენოთ account token TUIST_TOKEN გარემოს ცვლადთან ერთად.
Bitrise#
Bitrise-ზე შეგიძლიათ გამოიყენოთ OIDC ავტორიზაცია უსაფრთხო, საიდუმლოების გარეშე შესასვლელად:
workflows:
build:
steps:
- git-clone@8: {}
- script@1:
title: Install Mise
inputs:
- content: |
curl https://mise.jdx.dev/install.sh | sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
- script@1:
title: Install Tuist
inputs:
- content: mise install
- get-identity-token@0:
inputs:
- audience: tuist
- script@1:
title: Authenticate
inputs:
- content: mise exec -- tuist auth login
- script@1:
title: Build
inputs:
- content: mise exec -- tuist setup cache
workflows:
build:
steps:
- git-clone@8: {}
- script@1:
title: Install Mise
inputs:
- content: |
curl https://mise.jdx.dev/install.sh | sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
- script@1:
title: Install Tuist
inputs:
- content: mise install
- script@1:
title: Build
inputs:
- content: mise exec -- tuist setup cache
OIDC ავტორიზაციის გამოყენებამდე, თქვენ უნდა მიუერთოთ თქვენი GitHub რეპოზიტორია თქვენს Tuist პროექტს. Bitrise OIDC ტოკენები მოიცავს თქვენს მიერთებულ GitHub რეპოზიტორიას, რომელსაც Tuist იყენებს თქვენს პროექტებზე წვდომის ავტორიზაციისთვის. ალტერნატიულად, შეგიძლიათ გამოიყენოთ account token TUIST_TOKEN გარემოს ცვლადთან ერთად.
Codemagic#
Codemagic-ში, შეგიძლიათ დაამატოთ დამატებითი ნაბიჯი თქვენს სამუშაო ნაკადში Tuist-ის დასაყენებლად:
workflows:
build:
name: Build
max_build_duration: 30
environment:
xcode: 15.0.1
vars:
TUIST_TOKEN: ${{ secrets.TUIST_TOKEN }}
scripts:
- name: Install Mise
script: |
curl https://mise.jdx.dev/install.sh | sh
mise install # Installs the version from .mise.toml
- name: Build
script: mise exec -- tuist setup cache
workflows:
build:
name: Build
max_build_duration: 30
environment:
xcode: 15.0.1
vars:
TUIST_TOKEN: ${{ secrets.TUIST_TOKEN }}
scripts:
- name: Install Tuist
script: |
- name: Build
script: tuist setup cache
შექმენით account token და დაამატეთ ის როგორც საიდუმლო გარემოს ცვლადი სახელით TUIST_TOKEN.
Appcircle#
Appcircle-ში, შეგიძლიათ გამოიყენოთ ჩაშენებული Tuist Install და Tuist Commands სამუშაო ნაკადის ნაბიჯები, ან დაამატოთ Custom Script ნაბიჯი Git Clone ნაბიჯის შემდეგ, რათა თავად დააყენოთ Tuist:
cd $AC_REPOSITORY_DIR
curl https://mise.jdx.dev/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
mise install
mise exec -- tuist setup cache
cd $AC_REPOSITORY_DIR
tuist setup cache
Tuist Install ნაბიჯი აყენებს Tuist-ს Homebrew-ით და ასრულებს tuist generate. დააყენეთ Tuist Version შეყვანა ვერსიის დასაფიქსირებლად, შემდეგ დაამატეთ Tuist Commands ნაბიჯი ისეთი ბრძანებების შესასრულებლად, როგორიცაა tuist test ან tuist build.
შექმენით account token, დაამატეთ ის როგორც ცვლადი სახელით TUIST_TOKENenvironment variable group-ში და აირჩიეთ ეს ჯგუფი თქვენს build კონფიგურაციაში. მონიშნეთ ცვლადი როგორც საიდუმლო ჩაკეტვის ხატულით.
Run report#
როდესაც Tuist ატვირთავს run-ს, მისი dashboard URL-ები იბეჭდება ლოგებში. მათ მისაღებად ლოგების სკრეპინგის გარეშე - მაგალითად, Slack-ში ტესტის ანგარიშის ბმულის გასაზიარებლად, როდესაც სამუშაო ვერ ხერხდება, ან run-ის თქვენს საკუთარ ინსტრუმენტებში გადასაცემად - გადაეცით --run-report-path (ან დააყენეთ TUIST_RUN_REPORT_PATH) tuist test-ს, tuist xcodebuild test-ს ან tuist xcodebuild build-ს. Tuist წერს JSON ანგარიშს ამ გზაზე, როგორც კი run აიტვირთება:
{
"runId": "0193f8c1-...",
"status": "success",
"runURL": "https://tuist.dev/acme/app/runs/0193f8c1-...",
"testRunURL": "https://tuist.dev/acme/app/tests/test-runs/...",
"buildRunURL": "https://tuist.dev/acme/app/builds/build-runs/...",
"testRuns": [
{
"scheme": "App",
"succeeded": true,
"totalTests": 42,
"skippedTests": 0,
"ranTests": 42,
"failedTestNames": [],
"ranTestModules": 3,
"skippedTestModules": 5
}
],
"buildRuns": [
{ "scheme": "App", "succeeded": true, "durationInSeconds": 12.3 }
]
}
| ველი | ტიპი | აღწერა |
|---|---|---|
runId | სტრიქონი | run-ის უნიკალური იდენტიფიკატორი. |
status | სტრიქონი | "success" ან "failure". |
runURL | სტრიქონი | dashboard URL run-ისთვის. ყოველთვის არსებობს. |
testRunURL | სტრიქონი? | dashboard URL ტესტის run-ისთვის, არსებობს, როდესაც ბრძანებამ გაუშვა ტესტები. |
buildRunURL | სტრიქონი? | dashboard URL build run-ისთვის, არსებობს, როდესაც ბრძანებამ შეასრულა build. |
testRuns | მასივი | ტესტის შედეგები სქემის მიხედვით: scheme, succeeded, totalTests, skippedTests, ranTests, failedTestNames, ranTestModules და skippedTestModules. ტესტების რაოდენობა ეხება სატესტო შემთხვევებს, ხოლო skippedTests ითვლის მათ, რომლებიც შედეგების კომპლექტში აღნიშნულია როგორც გამოტოვებული. skippedTestModules ითვლის სატესტო მოდულებს, რომლებიც selective testing-მა გამოტოვა და გამოტოვებულია, როდესაც selective testing არ გამოყენებულა ან run არის ტესტის ნაწილი (shard). |
buildRuns | მასივი | build-ის შედეგები სქემის მიხედვით: scheme, succeeded, durationInSeconds. |
testRunURL და buildRunURL დამოუკიდებელია: ბრძანება, რომელიც ასრულებს build-საც და ტესტსაც, წერს ორივეს, რასაც ლოგები ვერ აკეთებენ — ისინი მხოლოდ ერთ URL-ს ბეჭდავენ თითოეული run-ისთვის.
ანგარიში იწერება მხოლოდ იმ run-ებისთვის, რომლებიც აიტვირთება სერვერზე, რაც მოითხოვს ავთენტიკაციას და ავტომატურად ხდება CI-ზე. გზა იშლება ყოველი run-ის დასაწყისში, ამიტომ run, რომელიც არ ქმნის ანგარიშს, არაფერს ტოვებს, ვიდრე ძველ ანგარიშს წინა run-დან.
GitLab CI-ზე, ჩვეულებრივი გამოყენებაა URL-ის გამოჩენა მოგვიანებითი სამუშაოებისთვის dotenv report-ის მეშვეობით:
test:
script:
- tuist test --run-report-path tuist-run.json
- echo "TUIST_TEST_RUN_URL=$(jq -r '.testRunURL // empty' tuist-run.json)" >> run.env
artifacts:
reports:
dotenv: run.env