Skip to content

Автоматизация скриншотов и обновление README #36

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@

*.xcbkptlist
*.xcbkptlist
3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source "https://rubygems.org"

gem "fastlane"
218 changes: 218 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.5)
rexml
addressable (2.8.1)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.693.0)
aws-sdk-core (3.168.4)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.61.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.117.2)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.5.2)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
declarative (0.0.20)
digest-crc (0.6.4)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.97.1)
faraday (1.10.2)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0)
http-cookie (~> 1.0.0)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.4)
multipart-post (~> 2)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
fastimage (2.2.6)
fastlane (2.211.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0)
faraday (~> 1.0)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (~> 2.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.32.0)
google-apis-core (>= 0.9.1, < 2.a)
google-apis-core (0.9.5)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
webrick
google-apis-iamcredentials_v1 (0.16.0)
google-apis-core (>= 0.9.1, < 2.a)
google-apis-playcustomapp_v1 (0.12.0)
google-apis-core (>= 0.9.1, < 2.a)
google-apis-storage_v1 (0.19.0)
google-apis-core (>= 0.9.0, < 2.a)
google-cloud-core (1.6.0)
google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.3.0)
google-cloud-storage (1.44.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.19.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.3.0)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.5)
domain_name (~> 0.5)
httpclient (2.8.3)
jmespath (1.6.2)
json (2.6.3)
jwt (2.6.0)
memoist (0.16.2)
mini_magick (4.12.0)
mini_mime (1.1.2)
multi_json (1.15.0)
multipart-post (2.0.0)
nanaimo (0.3.0)
naturally (2.2.1)
optparse (0.1.1)
os (1.1.4)
plist (3.6.0)
public_suffix (5.0.1)
rake (13.0.6)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.5)
rouge (2.0.7)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
security (0.1.3)
signet (0.17.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.8)
CFPropertyList
naturally
terminal-notifier (2.0.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.1)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (1.8.0)
webrick (1.7.0)
word_wrap (1.0.0)
xcodeproj (1.22.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)

PLATFORMS
x86_64-darwin-22

DEPENDENCIES
fastlane

BUNDLED WITH
2.4.3
65 changes: 36 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,46 +2,53 @@
[Ссылка на приложение в AppStore](https://itunes.apple.com/us/app/jobsy/id1035159361)

## Помощь проекту
1. Для доработок создаем issue с подробным описанием
1. Для доработок создаем **issue** с описанием задачи
2. Доработки делаем в отдельных ветках
3. Для каждого PR необходимо оставить описание на русском языке по аналогии со старыми PR
4. Вопросы по iOS-приложению решаем с [email protected] (telegram: @Oleg991)
5. Вопросы по бэкенду/сайту - с [email protected]

## Гайд для менеджера
3. Для каждого **PR** необходимо оставить описание на русском языке по аналогии со старыми **PR**
4. Вопросы по iOS-приложению решаем с Oleg991 в [почте](mailto:[email protected]?subject=[GitHub]-SwiftUI-WorkoutApp) или в [телеграм](http://t.me/oleg991)
5. Вопросы по бэкенду/сайту - c Антоном в [почте](mailto:[email protected]?subject=[GitHub]-SwiftUI-WorkoutApp)

## Шпаргалка
### Настройка базовых параметров приложения
Xcode -> SwiftUI-WorkoutApp -> Target: SwiftUI-WorkoutApp -> General
- Display Name - название приложения на экране смартфона
- Version - версия приложения для магазина
- Build - версия сборки для TestFlight
`Xcode -> SwiftUI-WorkoutApp -> Target: SwiftUI-WorkoutApp -> General`
- `Display Name` - название приложения на экране смартфона
- `Version` - версия приложения для магазина
- `Build` - версия сборки для `TestFlight`

### Публикация приложения
#### TestFlight
1. Скачать актуальную версию репозитория
2. Открыть Xcode и дождаться загрузки зависимостей; при возникновении ошибок можно:
- почистить Derived Data и память билда (command + shift + k)
- обновить зависимости (File -> Packages -> Reset/Resolve/Update)
3. В верхней панели Xcode сменить девайс на Any iOS Device
4. Product -> Archive
5. Дождаться архивации, в открывшемся окне со сборками выбрать нужную и нажать Distribute App
2. Открыть `Xcode` и дождаться загрузки зависимостей; при возникновении ошибок можно:
- почистить `Derived Data` и память билда (`command + shift + k`)
- обновить зависимости (`File -> Packages -> Reset/Resolve/Update`)
3. В верхней панели Xcode сменить девайс на `Any iOS Device `
4. `Product` -> `Archive`
5. Дождаться архивации, в открывшемся окне со сборками выбрать нужную и нажать **Distribute App**
6. Пройти по всем шагам и снять галку с автоматического изменения версии сборки на одном из финальных шагов

#### AppStore
1. Открыть страницу с приложением в AppstoreConnect
2. В левом меню рядом с версией в статусе "Готово к продаже" нажать плюс и добавить новую версию
3. Заполнить поле "Что нового в этой версии"
4. Ниже в разделе "Сборка" выбрать нужную сборку TestFlight
1. Открыть страницу с приложением в **AppstoreConnect**
2. В левом меню рядом с версией в статусе **Готово к продаже** нажать `+` и добавить новую версию
3. Заполнить поле **Что нового в этой версии**
4. Ниже в разделе **Сборка** выбрать нужную сборку из `TestFlight`
5. Ниже на странице проверить галки
- "Выпустить эту версию автоматически"
- "Выпустить обновление сразу для всех пользователей"
- "Сохранить текущую оценку"
6. Нажать сверху справа кнопку "Сохранить"
- *Выпустить эту версию автоматически*
- *Выпустить обновление сразу для всех пользователей*
- *Сохранить текущую оценку*
6. Нажать сверху справа кнопку **Сохранить**
7. Отправить приложение на проверку

### Скриншоты
Необходимо сменить язык симулятора на русский перед созданием скриншотов
- 6.5 дюйма: iPhone 13 pro max
- 5.8 дюйма: iPhone 13 pro
- 5.5 дюйма: iPhone 8 plus
- 4.7 дюйма: iPhone 8
1. Генерируем скриншоты при помощи `Fastlane` ([документация](https://docs.fastlane.tools/getting-started/ios/setup/))
2. Настройки для генерации скриншотов находятся в файле [Snapfile](Snapfile) ([документация](https://docs.fastlane.tools/actions/snapshot/))
3. Готовые скриншоты сохраняются в папке [screenshots/ru](./screenshots/ru)

| Профиль | Площадка | Прошедшие мероприятия | Мероприятие |
| --- | --- | --- | --- |
| <img src="./screenshots/ru/iPhone 13 Pro Max-1-profile.png"> | <img src="./screenshots/ru/iPhone 13 Pro Max-2-sportsGroundDetails.png"> | <img src="./screenshots/ru/iPhone 13 Pro Max-3-pastEvents.png"> | <img src="./screenshots/ru/iPhone 13 Pro Max-4-eventDetails.png"> |

#### Модели девайсов, используемые для скриншотов
- 6.5 дюйма: iPhone 13 Pro Max
- 5.8 дюйма: iPhone 13 Pro
- 5.5 дюйма: iPhone 8 Plus
- 4.7 дюйма: iPhone SE (3rd generation)
43 changes: 43 additions & 0 deletions Snapfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# A list of devices you want to take the screenshots from
devices([
"iPhone SE (3rd generation)",
"iPhone 8 Plus",
"iPhone 13 Pro",
"iPhone 13 Pro Max",
])

# A list of languages which should be used. See https://docs.fastlane.tools/actions/snapshot/#available-language-codes
languages(["ru"])

# By default, the latest version should be used automatically. If you want to change it, do it here.
# ios_version("15")

# Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
dark_mode(true)

# Enabling this option will configure the Simulator's system language
localize_simulator(true)

# Should snapshot stop immediately after the tests completely failed on one device?
stop_after_first_error(true)

# Prevents packages from automatically being resolved to versions other than those recorded in the Package.resolved file
disable_package_automatic_updates(true)

# The name of the scheme which contains the UI Tests
scheme("WorkoutAppUITests")

# Where should the resulting screenshots be stored?
output_directory("./screenshots")

# remove the '#' to clear all previously generated screenshots before creating new ones
clear_previous_screenshots(true)

# Enabling this option will automatically override the status bar to show 9:41 AM, full battery, and full reception
override_status_bar(true)

# Arguments to pass to the app on launch. See https://docs.fastlane.tools/actions/snapshot/#launch-arguments
launch_arguments(["UITest"])

# For more information about all available options run
# fastlane action snapshot
Loading