diff --git a/.github/workflows/ios-store-build.yml b/.github/workflows/ios-store-build.yml
new file mode 100644
index 00000000..2abd2848
--- /dev/null
+++ b/.github/workflows/ios-store-build.yml
@@ -0,0 +1,68 @@
+name: iOS Store Build
+
+on:
+ push:
+
+jobs:
+ build:
+ runs-on: macos-latest
+ strategy:
+ matrix:
+ xcode-version: [11.5]
+ build-configuration: [Release]
+ provisioning-profile-filepath: [githubactionsexamplesstorebuild20200531.mobileprovision]
+ build-scheme: [github-actions-examples]
+ xcodeproject-path: [github-actions-examples.xcodeproj]
+ keychain-name: [github-actions-examples-chain]
+ certificate-path: [ios_distribution.p12]
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-ruby@v1
+ with:
+ ruby-version: '2.6'
+ - name: Install Bundler
+ working-directory: ./iOS
+ run: gem update bundler
+ - name: Bundle Install
+ working-directory: ./iOS
+ run: bundle install
+ - name: Select Xcode version
+ working-directory: ./iOS
+ run: sudo xcode-select -s '/Applications/Xcode_${{ matrix.xcode-version }}.app'
+ - name: Show Xcode version
+ working-directory: ./iOS
+ run: xcodebuild -version
+ - name: Decode base64 p12 iOS Build key
+ working-directory: ./iOS
+ env:
+ IOS_DISTRIBUTION_CERTIFICATE_P12_FILE_BASE64: ${{ secrets.IOS_DISTRIBUTION_CERTIFICATE_P12_FILE_BASE64 }}
+ run: |
+ echo ${IOS_DISTRIBUTION_CERTIFICATE_P12_FILE_BASE64} | base64 -d > ${{ matrix.certificate-path }}
+ - name: Decode base64 certificates
+ working-directory: ./iOS
+ env:
+ IOS_STORE_CERTIFICATES_FILE_BASE64: ${{ secrets.IOS_STORE_CERTIFICATES_FILE_BASE64 }}
+ run: |
+ echo ${IOS_STORE_CERTIFICATES_FILE_BASE64} | base64 -d > ios_distribution.cer
+ - name: Decode base64 provisioning profile
+ working-directory: ./iOS
+ env:
+ IOS_STORE_MOBILEPROVISION_FILE_BASE64: ${{ secrets.IOS_STORE_MOBILEPROVISION_FILE_BASE64 }}
+ run: |
+ echo ${IOS_STORE_MOBILEPROVISION_FILE_BASE64} | base64 -d > ${{ matrix.provisioning-profile-filepath }}
+ - name: Setup Fastlane Build .env
+ working-directory: ./iOS
+ env:
+ KEYCHAIN_PASSWORD: ${{ secrets.IOS_DISTRIBUTION_KEYCHAIN_PASSWORD }}
+ CERT_PASSWORD: ${{ secrets.IOS_DISTRIBUTION_CERT_PASSWORD }}
+ run: |
+ echo "KEYCHAIN_PASSWORD=${KEYCHAIN_PASSWORD}" >> ./fastlane/.env
+ echo "CERT_PASSWORD=${CERT_PASSWORD}" >> ./fastlane/.env
+ - name: execute fastlane ios build
+ working-directory: ./iOS
+ run: bundle exec fastlane ios store_build scheme:${{ matrix.build-scheme }} xcode_version:${{ matrix.xcode-version }} configuration:${{ matrix.build-configuration }} provisioning_profile:${{ matrix.provisioning-profile-filepath }} xcodeproject_path:${{ matrix.xcodeproject-path }} team_id:${{ secrets.IOS_TEAM_ID }} keychain_name:${{ matrix.keychain-name }} certificate_path:${{ matrix.certificate-path }} create_new_keychain:true --verbose
+ - uses: actions/upload-artifact@master
+ with:
+ name: result
+ path: iOS/${{ matrix.build-scheme }}-store-${{ matrix.build-configuration }}.ipa
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 4653f2c5..b6590f0c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -242,7 +242,6 @@ proguard/
.idea/libraries/
.gradle/
app/build/
-build/
captures/
.externalNativeBuild
@@ -273,9 +272,130 @@ firebase-debug.log*
# .firebaserc
**/dist/*.js
-webapi.js
.cxx
-.esbuild/
-
-google-services.json
\ No newline at end of file
+# Created by https://www.gitignore.io/api/xcode,xcodeinjection
+# Edit at https://www.gitignore.io/?templates=xcode,xcodeinjection
+
+### Xcode ###
+# Xcode
+#
+# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
+
+## User settings
+xcuserdata/
+
+## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
+*.xcscmblueprint
+*.xccheckout
+
+## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
+DerivedData/
+*.moved-aside
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+
+## Xcode Patch
+*.xcodeproj/*
+!*.xcodeproj/project.pbxproj
+!*.xcodeproj/xcshareddata/
+!*.xcworkspace/contents.xcworkspacedata
+*.gcno
+
+### Xcode Patch ###
+**/xcshareddata/WorkspaceSettings.xcsettings
+
+### XcodeInjection ###
+# Code Injection
+# After new code Injection tools there's a generated folder /iOSInjectionProject
+# https://github.com/johnno1962/injectionforxcode
+
+iOSInjectionProject/
+
+# Xcode
+#
+# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
+
+## Build generated
+DerivedData/
+
+# IDE - VSCode
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+# plugin
+.history
+
+## Various settings
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata/
+
+## Other
+*.moved-aside
+*.xccheckout
+*.xcscmblueprint
+
+## Obj-C/Swift specific
+*.hmap
+*.ipa
+*.dSYM.zip
+*.dSYM
+
+## Playgrounds
+timeline.xctimeline
+playground.xcworkspace
+
+# Swift Package Manager
+#
+# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
+# Packages/
+# Package.pins
+.build/
+
+# CocoaPods
+#
+# We recommend against adding the Pods directory to your .gitignore. However
+# you should judge for yourself, the pros and cons are mentioned at:
+# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
+#
+Pods/
+
+# Carthage
+#
+# Add this line if you want to avoid checking in source code from Carthage dependencies.
+# Carthage/Checkouts
+
+Carthage/Build
+
+# fastlane
+#
+# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
+# screenshots whenever they are needed.
+# For more information about the recommended setup visit:
+# https://docs.fastlane.tools/best-practices/source-control/#source-control
+
+fastlane/report.xml
+fastlane/Preview.html
+fastlane/screenshots
+fastlane/test_output
+
+*.mobileprovision
+*.p12
+*.cer
+
+.DS_Store
\ No newline at end of file
diff --git a/iOS/Gemfile b/iOS/Gemfile
new file mode 100644
index 00000000..6a7e49d0
--- /dev/null
+++ b/iOS/Gemfile
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
+
+gem "cocoapods"
+gem "fastlane"
+gem "dotenv"
+gem "xcode-install"
\ No newline at end of file
diff --git a/iOS/Gemfile.lock b/iOS/Gemfile.lock
new file mode 100644
index 00000000..6e9f6495
--- /dev/null
+++ b/iOS/Gemfile.lock
@@ -0,0 +1,249 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.2)
+ activesupport (4.2.11.3)
+ i18n (~> 0.7)
+ minitest (~> 5.1)
+ thread_safe (~> 0.3, >= 0.3.4)
+ tzinfo (~> 1.1)
+ addressable (2.7.0)
+ public_suffix (>= 2.0.2, < 5.0)
+ algoliasearch (1.27.2)
+ httpclient (~> 2.8, >= 2.8.3)
+ json (>= 1.5.1)
+ atomos (0.1.3)
+ aws-eventstream (1.1.0)
+ aws-partitions (1.320.0)
+ aws-sdk-core (3.96.1)
+ aws-eventstream (~> 1, >= 1.0.2)
+ aws-partitions (~> 1, >= 1.239.0)
+ aws-sigv4 (~> 1.1)
+ jmespath (~> 1.0)
+ aws-sdk-kms (1.31.0)
+ aws-sdk-core (~> 3, >= 3.71.0)
+ aws-sigv4 (~> 1.1)
+ aws-sdk-s3 (1.66.0)
+ aws-sdk-core (~> 3, >= 3.96.1)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.1)
+ aws-sigv4 (1.1.3)
+ aws-eventstream (~> 1.0, >= 1.0.2)
+ babosa (1.0.3)
+ claide (1.0.3)
+ cocoapods (1.9.2)
+ activesupport (>= 4.0.2, < 5)
+ claide (>= 1.0.2, < 2.0)
+ cocoapods-core (= 1.9.2)
+ cocoapods-deintegrate (>= 1.0.3, < 2.0)
+ cocoapods-downloader (>= 1.2.2, < 2.0)
+ cocoapods-plugins (>= 1.0.0, < 2.0)
+ cocoapods-search (>= 1.0.0, < 2.0)
+ cocoapods-stats (>= 1.0.0, < 2.0)
+ cocoapods-trunk (>= 1.4.0, < 2.0)
+ cocoapods-try (>= 1.1.0, < 2.0)
+ colored2 (~> 3.1)
+ escape (~> 0.0.4)
+ fourflusher (>= 2.3.0, < 3.0)
+ gh_inspector (~> 1.0)
+ molinillo (~> 0.6.6)
+ nap (~> 1.0)
+ ruby-macho (~> 1.4)
+ xcodeproj (>= 1.14.0, < 2.0)
+ cocoapods-core (1.9.2)
+ activesupport (>= 4.0.2, < 6)
+ algoliasearch (~> 1.0)
+ concurrent-ruby (~> 1.1)
+ fuzzy_match (~> 2.0.4)
+ nap (~> 1.0)
+ netrc (~> 0.11)
+ typhoeus (~> 1.0)
+ cocoapods-deintegrate (1.0.4)
+ cocoapods-downloader (1.3.0)
+ cocoapods-plugins (1.0.0)
+ nap
+ cocoapods-search (1.0.0)
+ cocoapods-stats (1.1.0)
+ cocoapods-trunk (1.5.0)
+ nap (>= 0.8, < 2.0)
+ netrc (~> 0.11)
+ cocoapods-try (1.2.0)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander-fastlane (4.4.6)
+ highline (~> 1.7.2)
+ concurrent-ruby (1.1.6)
+ declarative (0.0.10)
+ declarative-option (0.1.0)
+ digest-crc (0.5.1)
+ domain_name (0.5.20190701)
+ unf (>= 0.0.5, < 1.0.0)
+ dotenv (2.7.5)
+ emoji_regex (1.0.1)
+ escape (0.0.4)
+ ethon (0.12.0)
+ ffi (>= 1.3.0)
+ excon (0.73.0)
+ faraday (1.0.1)
+ multipart-post (>= 1.2, < 3)
+ faraday-cookie_jar (0.0.6)
+ faraday (>= 0.7.4)
+ http-cookie (~> 1.0.0)
+ faraday_middleware (1.0.0)
+ faraday (~> 1.0)
+ fastimage (2.1.7)
+ fastlane (2.148.1)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.3, < 3.0.0)
+ aws-sdk-s3 (~> 1.0)
+ babosa (>= 1.0.2, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored
+ commander-fastlane (>= 4.4.6, < 5.0.0)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 2.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (>= 0.17, < 2.0)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (>= 0.13.1, < 2.0)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-api-client (>= 0.37.0, < 0.39.0)
+ google-cloud-storage (>= 1.15.0, < 2.0.0)
+ highline (>= 1.7.2, < 2.0.0)
+ json (< 3.0.0)
+ jwt (~> 2.1.0)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multi_xml (~> 0.5)
+ multipart-post (~> 2.0.0)
+ plist (>= 3.1.0, < 4.0.0)
+ public_suffix (~> 2.0.0)
+ rubyzip (>= 1.3.0, < 2.0.0)
+ security (= 0.1.3)
+ simctl (~> 1.6.3)
+ slack-notifier (>= 2.0.0, < 3.0.0)
+ 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)
+ ffi (1.12.2)
+ fourflusher (2.3.1)
+ fuzzy_match (2.0.4)
+ gh_inspector (1.1.3)
+ google-api-client (0.38.0)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (~> 0.9)
+ httpclient (>= 2.8.1, < 3.0)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.0)
+ signet (~> 0.12)
+ google-cloud-core (1.5.0)
+ google-cloud-env (~> 1.0)
+ google-cloud-errors (~> 1.0)
+ google-cloud-env (1.3.1)
+ faraday (>= 0.17.3, < 2.0)
+ google-cloud-errors (1.0.0)
+ google-cloud-storage (1.26.1)
+ addressable (~> 2.5)
+ digest-crc (~> 0.4)
+ google-api-client (~> 0.33)
+ google-cloud-core (~> 1.2)
+ googleauth (~> 0.9)
+ mini_mime (~> 1.0)
+ googleauth (0.12.0)
+ faraday (>= 0.17.3, < 2.0)
+ jwt (>= 1.4, < 3.0)
+ memoist (~> 0.16)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (~> 0.14)
+ highline (1.7.10)
+ http-cookie (1.0.3)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ i18n (0.9.5)
+ concurrent-ruby (~> 1.0)
+ jmespath (1.4.0)
+ json (2.3.0)
+ jwt (2.1.0)
+ memoist (0.16.2)
+ mini_magick (4.10.1)
+ mini_mime (1.0.2)
+ minitest (5.14.1)
+ molinillo (0.6.6)
+ multi_json (1.14.1)
+ multi_xml (0.6.0)
+ multipart-post (2.0.0)
+ nanaimo (0.2.6)
+ nap (1.1.0)
+ naturally (2.2.0)
+ netrc (0.11.0)
+ os (1.1.0)
+ plist (3.5.0)
+ public_suffix (2.0.5)
+ representable (3.0.4)
+ declarative (< 0.1.0)
+ declarative-option (< 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rouge (2.0.7)
+ ruby-macho (1.4.0)
+ rubyzip (1.3.0)
+ security (0.1.3)
+ signet (0.14.0)
+ addressable (~> 2.3)
+ faraday (>= 0.17.3, < 2.0)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.8)
+ CFPropertyList
+ naturally
+ slack-notifier (2.3.2)
+ terminal-notifier (2.0.0)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ thread_safe (0.3.6)
+ tty-cursor (0.7.1)
+ tty-screen (0.7.1)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ typhoeus (1.4.0)
+ ethon (>= 0.9.0)
+ tzinfo (1.2.7)
+ thread_safe (~> 0.1)
+ uber (0.1.0)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.7.7)
+ unicode-display_width (1.7.0)
+ word_wrap (1.0.0)
+ xcode-install (2.6.4)
+ claide (>= 0.9.1, < 1.1.0)
+ fastlane (>= 2.1.0, < 3.0.0)
+ xcodeproj (1.16.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.2.6)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.0)
+ xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ cocoapods
+ dotenv
+ fastlane
+ xcode-install
+
+BUNDLED WITH
+ 1.17.3
diff --git a/iOS/Podfile b/iOS/Podfile
new file mode 100644
index 00000000..8c369026
--- /dev/null
+++ b/iOS/Podfile
@@ -0,0 +1,19 @@
+# Uncomment the next line to define a global platform for your project
+# platform :ios, '9.0'
+
+target 'github-actions-examples' do
+ # Comment the next line if you don't want to use dynamic frameworks
+ use_frameworks!
+
+ # Pods for github-actions-examples
+
+ target 'github-actions-examplesTests' do
+ inherit! :search_paths
+ # Pods for testing
+ end
+
+ target 'github-actions-examplesUITests' do
+ # Pods for testing
+ end
+
+end
diff --git a/iOS/Podfile.lock b/iOS/Podfile.lock
new file mode 100644
index 00000000..d8d3b029
--- /dev/null
+++ b/iOS/Podfile.lock
@@ -0,0 +1,3 @@
+PODFILE CHECKSUM: 56ff68dc12cdbd254d64a37c26bb797b20cb6dfc
+
+COCOAPODS: 1.9.2
diff --git a/iOS/README.md b/iOS/README.md
new file mode 100644
index 00000000..05ede89b
--- /dev/null
+++ b/iOS/README.md
@@ -0,0 +1,44 @@
+# iOS開発におけるメモ
+
+## トラブルシューティング
+
+### パスが通っていない?
+
+fasylaneでBuildしたら以下のようなエラーが出た。
+
+```sh
+ Unable to locate Xcode. Please make sure to have Xcode installed on your machine
+```
+
+Xcode Command Line toolsがインストールされていないか、`xcodebuild` などのXcode関連のコマンドを使うためのパスが通っていないために発生している可能性がある。
+
+#### Xcode Command Line toolsがインストールされていない場合
+
+Xcodeをインストールする場合は以下のコマンドを実行してみる
+
+```sh
+xcode-select --install
+```
+
+【参考】
+ * https://qiita.com/kuriya/items/69d1e510fcaec4afd8c9
+
+#### Xcode関連のコマンドを使うためのパスが通っていない
+
+パスを通す場合は以下のコマンドを入力してみる
+
+```sh
+fastlane env
+```
+
+これで環境構築することができるはず。または以下のコマンド
+
+```sh
+sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
+```
+
+【参考】
+ * https://github.com/fastlane/fastlane/issues/12263
+ * https://github.com/fastlane/fastlane/issues/12662
+
+## Development Teamが設定されていない
diff --git a/iOS/fastlane/.env.sample b/iOS/fastlane/.env.sample
new file mode 100644
index 00000000..a5bf5036
--- /dev/null
+++ b/iOS/fastlane/.env.sample
@@ -0,0 +1,2 @@
+KEYCHAIN_PASSWORD=""
+CERT_PASSWORD=""
\ No newline at end of file
diff --git a/iOS/fastlane/Appfile b/iOS/fastlane/Appfile
new file mode 100644
index 00000000..18030630
--- /dev/null
+++ b/iOS/fastlane/Appfile
@@ -0,0 +1,6 @@
+# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
+# apple_id("[[APPLE_ID]]") # Your Apple email address
+
+
+# For more information about the Appfile, see:
+# https://docs.fastlane.tools/advanced/#appfile
diff --git a/iOS/fastlane/Fastfile b/iOS/fastlane/Fastfile
new file mode 100644
index 00000000..fcd7cc4e
--- /dev/null
+++ b/iOS/fastlane/Fastfile
@@ -0,0 +1,117 @@
+# This file contains the fastlane.tools configuration
+# You can find the documentation at https://docs.fastlane.tools
+#
+# For a list of all available actions, check out
+#
+# https://docs.fastlane.tools/actions
+#
+# For a list of all available plugins, check out
+#
+# https://docs.fastlane.tools/plugins/available-plugins
+#
+
+# Uncomment the line if you want fastlane to automatically update itself
+# update_fastlane
+
+default_platform(:ios)
+
+platform :ios do
+ before_all do
+ cocoapods
+ end
+
+ desc "Distribution of AppStore build"
+ lane :store_build do |options|
+ p "------------------------------------"
+ p options
+ setup_build_common(options)
+ configuration = 'Release'
+ if options[:configuration]
+ configuration = options[:configuration]
+ end
+ scheme_name = options[:scheme] || "github-actions-examples"
+ build_app({
+ configuration: configuration,
+ scheme: scheme_name,
+ export_method: "app-store",
+ output_name: "#{scheme_name}-store-#{configuration}.ipa",
+ include_bitcode: true,
+ clean: true,
+ workspace: "github-actions-examples.xcworkspace",
+ })
+ end
+
+ desc "Distribution of AdHoc build"
+ lane :adhoc_build do |options|
+ p "------------------------------------"
+ p options
+ setup_build_common(options)
+ configuration = 'Debug'
+ if options[:configuration]
+ configuration = options[:configuration]
+ end
+ scheme_name = options[:scheme] || "github-actions-examples"
+ build_app({
+ configuration: configuration,
+ scheme: scheme_name,
+ export_method: 'ad-hoc',
+ export_xcargs: '-allowProvisioningUpdates',
+ output_name: "#{scheme_name}-adhoc-#{configuration}.ipa",
+ include_bitcode: true,
+ clean: true,
+ workspace: "github-actions-examples.xcworkspace",
+ })
+ end
+
+ private_lane :setup_build_common do |options|
+ select_xcode(options)
+ if options[:team_id]
+ update_team(options)
+ end
+ import_certificates_and_provisioning_profile(options)
+ end
+
+ private_lane :update_team do |options|
+ xcodeproject_path = options[:xcodeproject_path] || "github-actions-examples.xcodeproj"
+ team_id = options[:team_id]
+ update_project_team(
+ path: xcodeproject_path,
+ teamid: team_id
+ )
+ end
+
+ desc "select common xcode version"
+ private_lane :select_xcode do |options|
+ use_xcode_version = options[:xcode_version] || "11.5"
+ xcversion(version: use_xcode_version)
+ end
+
+ desc "Import Certificates and Provisioning Profile"
+ private_lane :import_certificates_and_provisioning_profile do |options|
+ xcodeproject_path = options[:xcodeproject_path] || "github-actions-examples.xcodeproj"
+ scheme_name = options[:scheme] || "github-actions-examples"
+ keychain_password = ENV.fetch("KEYCHAIN_PASSWORD") { "" }
+ cert_password = ENV.fetch("CERT_PASSWORD") { "" }
+ certificate_path = options[:certificate_path] || "ios_distribution.p12"
+ provisioning_profile = options[:provisioning_profile] || "githubactionsexamples.mobileprovision"
+ keychain_name = options[:keychain_name] || "github-actions-examples-chain"
+ if options[:create_new_keychain]
+ create_keychain(
+ name: keychain_name,
+ password: keychain_password,
+ )
+ end
+ import_certificate(
+ certificate_path: certificate_path,
+ certificate_password: cert_password,
+ keychain_name: keychain_name,
+ keychain_password: keychain_password,
+ )
+ update_project_provisioning(
+ xcodeproj: xcodeproject_path,
+ profile: provisioning_profile, # optional if you use sigh
+ build_configuration: "Release",
+ certificate: "ios_distribution.cer" # optionally specify the codesigning identity
+ )
+ end
+end
diff --git a/iOS/fastlane/README.md b/iOS/fastlane/README.md
new file mode 100644
index 00000000..c887f232
--- /dev/null
+++ b/iOS/fastlane/README.md
@@ -0,0 +1,34 @@
+fastlane documentation
+================
+# Installation
+
+Make sure you have the latest version of the Xcode command line tools installed:
+
+```
+xcode-select --install
+```
+
+Install _fastlane_ using
+```
+[sudo] gem install fastlane -NV
+```
+or alternatively using `brew cask install fastlane`
+
+# Available Actions
+## iOS
+### ios store_build
+```
+fastlane ios store_build
+```
+Distribution of AppStore build
+### ios adhoc_build
+```
+fastlane ios adhoc_build
+```
+Distribution of AdHoc build
+
+----
+
+This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run.
+More information about fastlane can be found on [fastlane.tools](https://fastlane.tools).
+The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
diff --git a/iOS/fastlane/report.xml b/iOS/fastlane/report.xml
new file mode 100644
index 00000000..24de5cb8
--- /dev/null
+++ b/iOS/fastlane/report.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iOS/github-actions-examples.xcodeproj/project.pbxproj b/iOS/github-actions-examples.xcodeproj/project.pbxproj
new file mode 100644
index 00000000..6afa0c93
--- /dev/null
+++ b/iOS/github-actions-examples.xcodeproj/project.pbxproj
@@ -0,0 +1,718 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 218F789FAD01B94898D3FF0C /* Pods_github_actions_examples_github_actions_examplesUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51D77E6F8EAF023EE1FE1044 /* Pods_github_actions_examples_github_actions_examplesUITests.framework */; };
+ 62D6F329FE1DB41CA254CFBD /* Pods_github_actions_examples.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 982A6452AE5B3872318E43A5 /* Pods_github_actions_examples.framework */; };
+ A75CEBFF18884526320AB6C4 /* Pods_github_actions_examplesTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93D21EE9A51F33486B719B0A /* Pods_github_actions_examplesTests.framework */; };
+ FA1A3F6F2356C4AA00A253E8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA1A3F6E2356C4AA00A253E8 /* AppDelegate.swift */; };
+ FA1A3F712356C4AA00A253E8 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA1A3F702356C4AA00A253E8 /* SceneDelegate.swift */; };
+ FA1A3F732356C4AA00A253E8 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA1A3F722356C4AA00A253E8 /* ContentView.swift */; };
+ FA1A3F752356C4AD00A253E8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA1A3F742356C4AD00A253E8 /* Assets.xcassets */; };
+ FA1A3F782356C4AD00A253E8 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA1A3F772356C4AD00A253E8 /* Preview Assets.xcassets */; };
+ FA1A3F7B2356C4AD00A253E8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA1A3F792356C4AD00A253E8 /* LaunchScreen.storyboard */; };
+ FA1A3F862356C4AD00A253E8 /* github_actions_examplesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA1A3F852356C4AD00A253E8 /* github_actions_examplesTests.swift */; };
+ FA1A3F912356C4AD00A253E8 /* github_actions_examplesUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA1A3F902356C4AD00A253E8 /* github_actions_examplesUITests.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ FA1A3F822356C4AD00A253E8 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = FA1A3F632356C4AA00A253E8 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = FA1A3F6A2356C4AA00A253E8;
+ remoteInfo = "github-actions-examples";
+ };
+ FA1A3F8D2356C4AD00A253E8 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = FA1A3F632356C4AA00A253E8 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = FA1A3F6A2356C4AA00A253E8;
+ remoteInfo = "github-actions-examples";
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 1084FDA1852F91CB037792CE /* Pods-github-actions-examples-github-actions-examplesUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-github-actions-examples-github-actions-examplesUITests.debug.xcconfig"; path = "Target Support Files/Pods-github-actions-examples-github-actions-examplesUITests/Pods-github-actions-examples-github-actions-examplesUITests.debug.xcconfig"; sourceTree = ""; };
+ 415D4E972F56B9A60ECC8253 /* Pods-github-actions-examples.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-github-actions-examples.release.xcconfig"; path = "Target Support Files/Pods-github-actions-examples/Pods-github-actions-examples.release.xcconfig"; sourceTree = ""; };
+ 44AEB37EE153E61773D37EA6 /* Pods-github-actions-examples.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-github-actions-examples.debug.xcconfig"; path = "Target Support Files/Pods-github-actions-examples/Pods-github-actions-examples.debug.xcconfig"; sourceTree = ""; };
+ 51D77E6F8EAF023EE1FE1044 /* Pods_github_actions_examples_github_actions_examplesUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_github_actions_examples_github_actions_examplesUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 593264BBA8AFFC7440C64357 /* Pods-github-actions-examples-github-actions-examplesUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-github-actions-examples-github-actions-examplesUITests.release.xcconfig"; path = "Target Support Files/Pods-github-actions-examples-github-actions-examplesUITests/Pods-github-actions-examples-github-actions-examplesUITests.release.xcconfig"; sourceTree = ""; };
+ 61A6266A702F98A29911C872 /* Pods-github-actions-examplesTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-github-actions-examplesTests.release.xcconfig"; path = "Target Support Files/Pods-github-actions-examplesTests/Pods-github-actions-examplesTests.release.xcconfig"; sourceTree = ""; };
+ 93D21EE9A51F33486B719B0A /* Pods_github_actions_examplesTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_github_actions_examplesTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 982A6452AE5B3872318E43A5 /* Pods_github_actions_examples.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_github_actions_examples.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ A4CBC64D51666AE89BF68103 /* Pods-github-actions-examplesTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-github-actions-examplesTests.debug.xcconfig"; path = "Target Support Files/Pods-github-actions-examplesTests/Pods-github-actions-examplesTests.debug.xcconfig"; sourceTree = ""; };
+ FA1A3F6B2356C4AA00A253E8 /* github-actions-examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "github-actions-examples.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ FA1A3F6E2356C4AA00A253E8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ FA1A3F702356C4AA00A253E8 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
+ FA1A3F722356C4AA00A253E8 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
+ FA1A3F742356C4AD00A253E8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ FA1A3F772356C4AD00A253E8 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
+ FA1A3F7A2356C4AD00A253E8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ FA1A3F7C2356C4AD00A253E8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ FA1A3F812356C4AD00A253E8 /* github-actions-examplesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "github-actions-examplesTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
+ FA1A3F852356C4AD00A253E8 /* github_actions_examplesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = github_actions_examplesTests.swift; sourceTree = ""; };
+ FA1A3F872356C4AD00A253E8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ FA1A3F8C2356C4AD00A253E8 /* github-actions-examplesUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "github-actions-examplesUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
+ FA1A3F902356C4AD00A253E8 /* github_actions_examplesUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = github_actions_examplesUITests.swift; sourceTree = ""; };
+ FA1A3F922356C4AD00A253E8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ FA1A3F682356C4AA00A253E8 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 62D6F329FE1DB41CA254CFBD /* Pods_github_actions_examples.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FA1A3F7E2356C4AD00A253E8 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A75CEBFF18884526320AB6C4 /* Pods_github_actions_examplesTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FA1A3F892356C4AD00A253E8 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 218F789FAD01B94898D3FF0C /* Pods_github_actions_examples_github_actions_examplesUITests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 0DA1866A4412AD01F101D593 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 44AEB37EE153E61773D37EA6 /* Pods-github-actions-examples.debug.xcconfig */,
+ 415D4E972F56B9A60ECC8253 /* Pods-github-actions-examples.release.xcconfig */,
+ 1084FDA1852F91CB037792CE /* Pods-github-actions-examples-github-actions-examplesUITests.debug.xcconfig */,
+ 593264BBA8AFFC7440C64357 /* Pods-github-actions-examples-github-actions-examplesUITests.release.xcconfig */,
+ A4CBC64D51666AE89BF68103 /* Pods-github-actions-examplesTests.debug.xcconfig */,
+ 61A6266A702F98A29911C872 /* Pods-github-actions-examplesTests.release.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
+ 9D970A02E3A79393F009EF41 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 982A6452AE5B3872318E43A5 /* Pods_github_actions_examples.framework */,
+ 51D77E6F8EAF023EE1FE1044 /* Pods_github_actions_examples_github_actions_examplesUITests.framework */,
+ 93D21EE9A51F33486B719B0A /* Pods_github_actions_examplesTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ FA1A3F622356C4AA00A253E8 = {
+ isa = PBXGroup;
+ children = (
+ FA1A3F6D2356C4AA00A253E8 /* github-actions-examples */,
+ FA1A3F842356C4AD00A253E8 /* github-actions-examplesTests */,
+ FA1A3F8F2356C4AD00A253E8 /* github-actions-examplesUITests */,
+ FA1A3F6C2356C4AA00A253E8 /* Products */,
+ 0DA1866A4412AD01F101D593 /* Pods */,
+ 9D970A02E3A79393F009EF41 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ FA1A3F6C2356C4AA00A253E8 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ FA1A3F6B2356C4AA00A253E8 /* github-actions-examples.app */,
+ FA1A3F812356C4AD00A253E8 /* github-actions-examplesTests.xctest */,
+ FA1A3F8C2356C4AD00A253E8 /* github-actions-examplesUITests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ FA1A3F6D2356C4AA00A253E8 /* github-actions-examples */ = {
+ isa = PBXGroup;
+ children = (
+ FA1A3F6E2356C4AA00A253E8 /* AppDelegate.swift */,
+ FA1A3F702356C4AA00A253E8 /* SceneDelegate.swift */,
+ FA1A3F722356C4AA00A253E8 /* ContentView.swift */,
+ FA1A3F742356C4AD00A253E8 /* Assets.xcassets */,
+ FA1A3F792356C4AD00A253E8 /* LaunchScreen.storyboard */,
+ FA1A3F7C2356C4AD00A253E8 /* Info.plist */,
+ FA1A3F762356C4AD00A253E8 /* Preview Content */,
+ );
+ path = "github-actions-examples";
+ sourceTree = "";
+ };
+ FA1A3F762356C4AD00A253E8 /* Preview Content */ = {
+ isa = PBXGroup;
+ children = (
+ FA1A3F772356C4AD00A253E8 /* Preview Assets.xcassets */,
+ );
+ path = "Preview Content";
+ sourceTree = "";
+ };
+ FA1A3F842356C4AD00A253E8 /* github-actions-examplesTests */ = {
+ isa = PBXGroup;
+ children = (
+ FA1A3F852356C4AD00A253E8 /* github_actions_examplesTests.swift */,
+ FA1A3F872356C4AD00A253E8 /* Info.plist */,
+ );
+ path = "github-actions-examplesTests";
+ sourceTree = "";
+ };
+ FA1A3F8F2356C4AD00A253E8 /* github-actions-examplesUITests */ = {
+ isa = PBXGroup;
+ children = (
+ FA1A3F902356C4AD00A253E8 /* github_actions_examplesUITests.swift */,
+ FA1A3F922356C4AD00A253E8 /* Info.plist */,
+ );
+ path = "github-actions-examplesUITests";
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ FA1A3F6A2356C4AA00A253E8 /* github-actions-examples */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = FA1A3F952356C4AD00A253E8 /* Build configuration list for PBXNativeTarget "github-actions-examples" */;
+ buildPhases = (
+ 5010A5D0D4D87C8CE5BE73F8 /* [CP] Check Pods Manifest.lock */,
+ FA1A3F672356C4AA00A253E8 /* Sources */,
+ FA1A3F682356C4AA00A253E8 /* Frameworks */,
+ FA1A3F692356C4AA00A253E8 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "github-actions-examples";
+ productName = "github-actions-examples";
+ productReference = FA1A3F6B2356C4AA00A253E8 /* github-actions-examples.app */;
+ productType = "com.apple.product-type.application";
+ };
+ FA1A3F802356C4AD00A253E8 /* github-actions-examplesTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = FA1A3F982356C4AD00A253E8 /* Build configuration list for PBXNativeTarget "github-actions-examplesTests" */;
+ buildPhases = (
+ E04C0AFE324DBC06B77FF1EC /* [CP] Check Pods Manifest.lock */,
+ FA1A3F7D2356C4AD00A253E8 /* Sources */,
+ FA1A3F7E2356C4AD00A253E8 /* Frameworks */,
+ FA1A3F7F2356C4AD00A253E8 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ FA1A3F832356C4AD00A253E8 /* PBXTargetDependency */,
+ );
+ name = "github-actions-examplesTests";
+ productName = "github-actions-examplesTests";
+ productReference = FA1A3F812356C4AD00A253E8 /* github-actions-examplesTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ FA1A3F8B2356C4AD00A253E8 /* github-actions-examplesUITests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = FA1A3F9B2356C4AD00A253E8 /* Build configuration list for PBXNativeTarget "github-actions-examplesUITests" */;
+ buildPhases = (
+ F9F694D8EA2D21F151331959 /* [CP] Check Pods Manifest.lock */,
+ FA1A3F882356C4AD00A253E8 /* Sources */,
+ FA1A3F892356C4AD00A253E8 /* Frameworks */,
+ FA1A3F8A2356C4AD00A253E8 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ FA1A3F8E2356C4AD00A253E8 /* PBXTargetDependency */,
+ );
+ name = "github-actions-examplesUITests";
+ productName = "github-actions-examplesUITests";
+ productReference = FA1A3F8C2356C4AD00A253E8 /* github-actions-examplesUITests.xctest */;
+ productType = "com.apple.product-type.bundle.ui-testing";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ FA1A3F632356C4AA00A253E8 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 1110;
+ LastUpgradeCheck = 1110;
+ ORGANIZATIONNAME = TakuKobayashi;
+ TargetAttributes = {
+ FA1A3F6A2356C4AA00A253E8 = {
+ CreatedOnToolsVersion = 11.1;
+ };
+ FA1A3F802356C4AD00A253E8 = {
+ CreatedOnToolsVersion = 11.1;
+ TestTargetID = FA1A3F6A2356C4AA00A253E8;
+ };
+ FA1A3F8B2356C4AD00A253E8 = {
+ CreatedOnToolsVersion = 11.1;
+ TestTargetID = FA1A3F6A2356C4AA00A253E8;
+ };
+ };
+ };
+ buildConfigurationList = FA1A3F662356C4AA00A253E8 /* Build configuration list for PBXProject "github-actions-examples" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = FA1A3F622356C4AA00A253E8;
+ productRefGroup = FA1A3F6C2356C4AA00A253E8 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ FA1A3F6A2356C4AA00A253E8 /* github-actions-examples */,
+ FA1A3F802356C4AD00A253E8 /* github-actions-examplesTests */,
+ FA1A3F8B2356C4AD00A253E8 /* github-actions-examplesUITests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ FA1A3F692356C4AA00A253E8 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ FA1A3F7B2356C4AD00A253E8 /* LaunchScreen.storyboard in Resources */,
+ FA1A3F782356C4AD00A253E8 /* Preview Assets.xcassets in Resources */,
+ FA1A3F752356C4AD00A253E8 /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FA1A3F7F2356C4AD00A253E8 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FA1A3F8A2356C4AD00A253E8 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 5010A5D0D4D87C8CE5BE73F8 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-github-actions-examples-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ E04C0AFE324DBC06B77FF1EC /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-github-actions-examplesTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ F9F694D8EA2D21F151331959 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-github-actions-examples-github-actions-examplesUITests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ FA1A3F672356C4AA00A253E8 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ FA1A3F6F2356C4AA00A253E8 /* AppDelegate.swift in Sources */,
+ FA1A3F712356C4AA00A253E8 /* SceneDelegate.swift in Sources */,
+ FA1A3F732356C4AA00A253E8 /* ContentView.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FA1A3F7D2356C4AD00A253E8 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ FA1A3F862356C4AD00A253E8 /* github_actions_examplesTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FA1A3F882356C4AD00A253E8 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ FA1A3F912356C4AD00A253E8 /* github_actions_examplesUITests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ FA1A3F832356C4AD00A253E8 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = FA1A3F6A2356C4AA00A253E8 /* github-actions-examples */;
+ targetProxy = FA1A3F822356C4AD00A253E8 /* PBXContainerItemProxy */;
+ };
+ FA1A3F8E2356C4AD00A253E8 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = FA1A3F6A2356C4AA00A253E8 /* github-actions-examples */;
+ targetProxy = FA1A3F8D2356C4AD00A253E8 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ FA1A3F792356C4AD00A253E8 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ FA1A3F7A2356C4AD00A253E8 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ FA1A3F932356C4AD00A253E8 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.1;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ FA1A3F942356C4AD00A253E8 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.1;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ FA1A3F962356C4AD00A253E8 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 44AEB37EE153E61773D37EA6 /* Pods-github-actions-examples.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_ASSET_PATHS = "\"github-actions-examples/Preview Content\"";
+ DEVELOPMENT_TEAM = 4Z392XB7Y7;
+ ENABLE_PREVIEWS = YES;
+ INFOPLIST_FILE = "github-actions-examples/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "net.taptappun.taku.kobayashi.github-actions-examples";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ FA1A3F972356C4AD00A253E8 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 415D4E972F56B9A60ECC8253 /* Pods-github-actions-examples.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_ASSET_PATHS = "\"github-actions-examples/Preview Content\"";
+ DEVELOPMENT_TEAM = 4Z392XB7Y7;
+ ENABLE_PREVIEWS = YES;
+ INFOPLIST_FILE = "github-actions-examples/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "net.taptappun.taku.kobayashi.github-actions-examples";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ FA1A3F992356C4AD00A253E8 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = A4CBC64D51666AE89BF68103 /* Pods-github-actions-examplesTests.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 4Z392XB7Y7;
+ INFOPLIST_FILE = "github-actions-examplesTests/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.1;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "net.taptappun.taku.kobayashi.github-actions-examplesTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/github-actions-examples.app/github-actions-examples";
+ };
+ name = Debug;
+ };
+ FA1A3F9A2356C4AD00A253E8 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 61A6266A702F98A29911C872 /* Pods-github-actions-examplesTests.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 4Z392XB7Y7;
+ INFOPLIST_FILE = "github-actions-examplesTests/Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.1;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "net.taptappun.taku.kobayashi.github-actions-examplesTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/github-actions-examples.app/github-actions-examples";
+ };
+ name = Release;
+ };
+ FA1A3F9C2356C4AD00A253E8 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 1084FDA1852F91CB037792CE /* Pods-github-actions-examples-github-actions-examplesUITests.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 4Z392XB7Y7;
+ INFOPLIST_FILE = "github-actions-examplesUITests/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "net.taptappun.taku.kobayashi.github-actions-examplesUITests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = "github-actions-examples";
+ };
+ name = Debug;
+ };
+ FA1A3F9D2356C4AD00A253E8 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 593264BBA8AFFC7440C64357 /* Pods-github-actions-examples-github-actions-examplesUITests.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ CODE_SIGN_STYLE = Automatic;
+ DEVELOPMENT_TEAM = 4Z392XB7Y7;
+ INFOPLIST_FILE = "github-actions-examplesUITests/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "net.taptappun.taku.kobayashi.github-actions-examplesUITests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ TEST_TARGET_NAME = "github-actions-examples";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ FA1A3F662356C4AA00A253E8 /* Build configuration list for PBXProject "github-actions-examples" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ FA1A3F932356C4AD00A253E8 /* Debug */,
+ FA1A3F942356C4AD00A253E8 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ FA1A3F952356C4AD00A253E8 /* Build configuration list for PBXNativeTarget "github-actions-examples" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ FA1A3F962356C4AD00A253E8 /* Debug */,
+ FA1A3F972356C4AD00A253E8 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ FA1A3F982356C4AD00A253E8 /* Build configuration list for PBXNativeTarget "github-actions-examplesTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ FA1A3F992356C4AD00A253E8 /* Debug */,
+ FA1A3F9A2356C4AD00A253E8 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ FA1A3F9B2356C4AD00A253E8 /* Build configuration list for PBXNativeTarget "github-actions-examplesUITests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ FA1A3F9C2356C4AD00A253E8 /* Debug */,
+ FA1A3F9D2356C4AD00A253E8 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = FA1A3F632356C4AA00A253E8 /* Project object */;
+}
diff --git a/iOS/github-actions-examples.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iOS/github-actions-examples.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..c7dc930e
--- /dev/null
+++ b/iOS/github-actions-examples.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/iOS/github-actions-examples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/github-actions-examples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 00000000..18d98100
--- /dev/null
+++ b/iOS/github-actions-examples.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/iOS/github-actions-examples.xcworkspace/contents.xcworkspacedata b/iOS/github-actions-examples.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..e178ac91
--- /dev/null
+++ b/iOS/github-actions-examples.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/iOS/github-actions-examples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/iOS/github-actions-examples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 00000000..18d98100
--- /dev/null
+++ b/iOS/github-actions-examples.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/iOS/github-actions-examples/AppDelegate.swift b/iOS/github-actions-examples/AppDelegate.swift
new file mode 100644
index 00000000..b3f1812c
--- /dev/null
+++ b/iOS/github-actions-examples/AppDelegate.swift
@@ -0,0 +1,37 @@
+//
+// AppDelegate.swift
+// github-actions-examples
+//
+// Created by Taku Kobayashi on 2019/10/16.
+// Copyright © 2019 TakuKobayashi. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
+ // Override point for customization after application launch.
+ return true
+ }
+
+ // MARK: UISceneSession Lifecycle
+
+ func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
+ // Called when a new scene session is being created.
+ // Use this method to select a configuration to create the new scene with.
+ return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
+ }
+
+ func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) {
+ // Called when the user discards a scene session.
+ // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
+ // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
+ }
+
+
+}
+
diff --git a/iOS/github-actions-examples/Assets.xcassets/AppIcon.appiconset/Contents.json b/iOS/github-actions-examples/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000..d8db8d65
--- /dev/null
+++ b/iOS/github-actions-examples/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,98 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ios-marketing",
+ "size" : "1024x1024",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/iOS/github-actions-examples/Assets.xcassets/Contents.json b/iOS/github-actions-examples/Assets.xcassets/Contents.json
new file mode 100644
index 00000000..da4a164c
--- /dev/null
+++ b/iOS/github-actions-examples/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/iOS/github-actions-examples/Base.lproj/LaunchScreen.storyboard b/iOS/github-actions-examples/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 00000000..865e9329
--- /dev/null
+++ b/iOS/github-actions-examples/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iOS/github-actions-examples/ContentView.swift b/iOS/github-actions-examples/ContentView.swift
new file mode 100644
index 00000000..6e65cf9d
--- /dev/null
+++ b/iOS/github-actions-examples/ContentView.swift
@@ -0,0 +1,21 @@
+//
+// ContentView.swift
+// github-actions-examples
+//
+// Created by Taku Kobayashi on 2019/10/16.
+// Copyright © 2019 TakuKobayashi. All rights reserved.
+//
+
+import SwiftUI
+
+struct ContentView: View {
+ var body: some View {
+ Text("Hello World")
+ }
+}
+
+struct ContentView_Previews: PreviewProvider {
+ static var previews: some View {
+ ContentView()
+ }
+}
diff --git a/iOS/github-actions-examples/Info.plist b/iOS/github-actions-examples/Info.plist
new file mode 100644
index 00000000..9742bf0f
--- /dev/null
+++ b/iOS/github-actions-examples/Info.plist
@@ -0,0 +1,60 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneConfigurationName
+ Default Configuration
+ UISceneDelegateClassName
+ $(PRODUCT_MODULE_NAME).SceneDelegate
+
+
+
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/iOS/github-actions-examples/Preview Content/Preview Assets.xcassets/Contents.json b/iOS/github-actions-examples/Preview Content/Preview Assets.xcassets/Contents.json
new file mode 100644
index 00000000..da4a164c
--- /dev/null
+++ b/iOS/github-actions-examples/Preview Content/Preview Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/iOS/github-actions-examples/SceneDelegate.swift b/iOS/github-actions-examples/SceneDelegate.swift
new file mode 100644
index 00000000..2885022b
--- /dev/null
+++ b/iOS/github-actions-examples/SceneDelegate.swift
@@ -0,0 +1,64 @@
+//
+// SceneDelegate.swift
+// github-actions-examples
+//
+// Created by Taku Kobayashi on 2019/10/16.
+// Copyright © 2019 TakuKobayashi. All rights reserved.
+//
+
+import UIKit
+import SwiftUI
+
+class SceneDelegate: UIResponder, UIWindowSceneDelegate {
+
+ var window: UIWindow?
+
+
+ func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
+ // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
+ // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
+ // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
+
+ // Create the SwiftUI view that provides the window contents.
+ let contentView = ContentView()
+
+ // Use a UIHostingController as window root view controller.
+ if let windowScene = scene as? UIWindowScene {
+ let window = UIWindow(windowScene: windowScene)
+ window.rootViewController = UIHostingController(rootView: contentView)
+ self.window = window
+ window.makeKeyAndVisible()
+ }
+ }
+
+ func sceneDidDisconnect(_ scene: UIScene) {
+ // Called as the scene is being released by the system.
+ // This occurs shortly after the scene enters the background, or when its session is discarded.
+ // Release any resources associated with this scene that can be re-created the next time the scene connects.
+ // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
+ }
+
+ func sceneDidBecomeActive(_ scene: UIScene) {
+ // Called when the scene has moved from an inactive state to an active state.
+ // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
+ }
+
+ func sceneWillResignActive(_ scene: UIScene) {
+ // Called when the scene will move from an active state to an inactive state.
+ // This may occur due to temporary interruptions (ex. an incoming phone call).
+ }
+
+ func sceneWillEnterForeground(_ scene: UIScene) {
+ // Called as the scene transitions from the background to the foreground.
+ // Use this method to undo the changes made on entering the background.
+ }
+
+ func sceneDidEnterBackground(_ scene: UIScene) {
+ // Called as the scene transitions from the foreground to the background.
+ // Use this method to save data, release shared resources, and store enough scene-specific state information
+ // to restore the scene back to its current state.
+ }
+
+
+}
+
diff --git a/iOS/github-actions-examplesTests/Info.plist b/iOS/github-actions-examplesTests/Info.plist
new file mode 100644
index 00000000..64d65ca4
--- /dev/null
+++ b/iOS/github-actions-examplesTests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/iOS/github-actions-examplesTests/github_actions_examplesTests.swift b/iOS/github-actions-examplesTests/github_actions_examplesTests.swift
new file mode 100644
index 00000000..3aebb1d1
--- /dev/null
+++ b/iOS/github-actions-examplesTests/github_actions_examplesTests.swift
@@ -0,0 +1,34 @@
+//
+// github_actions_examplesTests.swift
+// github-actions-examplesTests
+//
+// Created by Taku Kobayashi on 2019/10/16.
+// Copyright © 2019 TakuKobayashi. All rights reserved.
+//
+
+import XCTest
+@testable import github_actions_examples
+
+class github_actions_examplesTests: XCTestCase {
+
+ override func setUp() {
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ }
+
+ func testExample() {
+ // This is an example of a functional test case.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+ }
+
+ func testPerformanceExample() {
+ // This is an example of a performance test case.
+ self.measure {
+ // Put the code you want to measure the time of here.
+ }
+ }
+
+}
diff --git a/iOS/github-actions-examplesUITests/Info.plist b/iOS/github-actions-examplesUITests/Info.plist
new file mode 100644
index 00000000..64d65ca4
--- /dev/null
+++ b/iOS/github-actions-examplesUITests/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+
+
diff --git a/iOS/github-actions-examplesUITests/github_actions_examplesUITests.swift b/iOS/github-actions-examplesUITests/github_actions_examplesUITests.swift
new file mode 100644
index 00000000..727c097e
--- /dev/null
+++ b/iOS/github-actions-examplesUITests/github_actions_examplesUITests.swift
@@ -0,0 +1,43 @@
+//
+// github_actions_examplesUITests.swift
+// github-actions-examplesUITests
+//
+// Created by Taku Kobayashi on 2019/10/16.
+// Copyright © 2019 TakuKobayashi. All rights reserved.
+//
+
+import XCTest
+
+class github_actions_examplesUITests: XCTestCase {
+
+ override func setUp() {
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+
+ // In UI tests it is usually best to stop immediately when a failure occurs.
+ continueAfterFailure = false
+
+ // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ }
+
+ func testExample() {
+ // UI tests must launch the application that they test.
+ let app = XCUIApplication()
+ app.launch()
+
+ // Use recording to get started writing UI tests.
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
+ }
+
+ func testLaunchPerformance() {
+ if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) {
+ // This measures how long it takes to launch your application.
+ measure(metrics: [XCTOSSignpostMetric.applicationLaunch]) {
+ XCUIApplication().launch()
+ }
+ }
+ }
+}