Skip to content

Commit 91fd8b2

Browse files
committed
ci: migrate to fastlane
1 parent 8f21807 commit 91fd8b2

7 files changed

Lines changed: 219 additions & 65 deletions

File tree

.github/workflows/swift.yml

Lines changed: 15 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: iOS Build
1+
name: iOS CI (Fastlane)
22

33
on:
44
push:
@@ -11,53 +11,27 @@ concurrency:
1111
cancel-in-progress: true
1212

1313
jobs:
14-
build:
15-
name: Build (Simulator)
14+
check_and_test:
15+
name: Lint & Test (via Fastlane)
1616
runs-on: macos-latest
17+
1718
steps:
1819
- name: Checkout
19-
uses: actions/checkout@v5
20+
uses: actions/checkout@v4
2021

2122
- name: Select Xcode
2223
uses: maxim-lobanov/setup-xcode@v1
2324
with:
2425
xcode-version: latest-stable
2526

26-
- name: Resolve Xcode project and verify scheme
27-
run: |
28-
set -euo pipefail
29-
ROOT="$GITHUB_WORKSPACE"
30-
PROJ="$ROOT/VideoEditor.xcodeproj"
31-
if [[ ! -f "$PROJ/project.pbxproj" ]]; then
32-
PROJ=$(find "$ROOT" -name "VideoEditor.xcodeproj" -type d 2>/dev/null | head -1 || true)
33-
fi
34-
if [[ -z "${PROJ:-}" ]] || [[ ! -f "$PROJ/project.pbxproj" ]]; then
35-
echo "::error::VideoEditor.xcodeproj not found under $ROOT"
36-
echo "Discovered .xcodeproj paths (max depth 8):"
37-
find "$ROOT" -maxdepth 8 -name "*.xcodeproj" -type d 2>/dev/null || true
38-
echo "Repository root listing:"
39-
ls -la "$ROOT"
40-
exit 1
41-
fi
42-
echo "Using Xcode project: $PROJ"
43-
echo "XCODEPROJ=$PROJ" >> "$GITHUB_ENV"
44-
SCHEME_FILE="$PROJ/xcshareddata/xcschemes/VideoEditor.xcscheme"
45-
if [[ ! -f "$SCHEME_FILE" ]]; then
46-
echo "::error::Shared scheme missing: $SCHEME_FILE"
47-
echo "In Xcode: Product → Scheme → Manage Schemes → enable Shared for VideoEditor, then commit xcshareddata/xcschemes/."
48-
exit 1
49-
fi
50-
xcodebuild -list -project "$PROJ"
27+
- name: Setup Ruby
28+
uses: ruby/setup-ruby@v1
29+
with:
30+
ruby-version: '3.2'
31+
bundler-cache: true
5132

52-
- name: Build
53-
run: |
54-
set -euo pipefail
55-
DERIVED_DATA="$RUNNER_TEMP/DerivedData-VideoEditor"
56-
mkdir -p "$DERIVED_DATA"
57-
xcodebuild \
58-
-project "$XCODEPROJ" \
59-
-scheme VideoEditor \
60-
-configuration Debug \
61-
-destination 'generic/platform=iOS Simulator' \
62-
-derivedDataPath "$DERIVED_DATA" \
63-
build
33+
- name: Run Fastlane Quality Check
34+
run: bundle exec fastlane run_tests
35+
env:
36+
LANG: en_US.UTF-8
37+
LC_ALL: en_US.UTF-8

VideoEditor.xcodeproj/project.pbxproj

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,13 @@
122122
F2F897BF2F7DB6D90060F039 /* TimelineSkeletonAnimator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2F897BE2F7DB6D90060F039 /* TimelineSkeletonAnimator.swift */; };
123123
F2F897C12F7E70E70060F039 /* CIFilter+Transitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2F897C02F7E70E70060F039 /* CIFilter+Transitions.swift */; };
124124
F2F897C42F7E77780060F039 /* disintegrate.jpg in Resources */ = {isa = PBXBuildFile; fileRef = F2F897C32F7E77780060F039 /* disintegrate.jpg */; };
125+
F2IMGOV112FAA500100E04DD1 /* EditorCanvasImageOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2IMGOV122FAA500100E04DD1 /* EditorCanvasImageOverlayView.swift */; };
125126
F2MOVERR12F90418000E04DD1 /* MovieExportError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2MOVERR2F90418000E04DD1 /* MovieExportError.swift */; };
126127
F2MOVEXP12F90418000E04DD1 /* ProjectMovieExporting.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2MOVEXP2F90418000E04DD1 /* ProjectMovieExporting.swift */; };
127128
F2MOVPHO12F90418000E04DD1 /* PhotoLibraryMovieExporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2MOVPHO2F90418000E04DD1 /* PhotoLibraryMovieExporter.swift */; };
129+
F2OVCBND12F90402000E04DD1 /* EditorCanvasOverlayBindings.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2OVCBND22F90402000E04DD1 /* EditorCanvasOverlayBindings.swift */; };
130+
F2OVCLIP12F90402000E04DD1 /* OverlayCanvasClip.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2OVCLIP22F90402000E04DD1 /* OverlayCanvasClip.swift */; };
131+
F2OVUCAS12F90402000E04DD1 /* BuildEditorCanvasOverlayState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2OVUCAS22F90402000E04DD1 /* BuildEditorCanvasOverlayState.swift */; };
128132
F2PREVB012F90403000E04DD1 /* CMTimeRange+PreviewComposition.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2PREVF012F90403000E04DD1 /* CMTimeRange+PreviewComposition.swift */; };
129133
F2PREVB022F90403000E04DD1 /* CoreImage+VideoPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2PREVF022F90403000E04DD1 /* CoreImage+VideoPreview.swift */; };
130134
F2PREVB032F90403000E04DD1 /* AVCompositionTrack+PreviewTransforms.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2PREVF032F90403000E04DD1 /* AVCompositionTrack+PreviewTransforms.swift */; };
@@ -141,10 +145,6 @@
141145
F2TXTAL112FAA400100E04DD1 /* TextOverlayTextAlignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2TXTAL122FAA400100E04DD1 /* TextOverlayTextAlignment.swift */; };
142146
F2TXTCI312FAA500100E04DD1 /* TextOverlayPreviewCIRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2TXTCI322FAA500100E04DD1 /* TextOverlayPreviewCIRenderer.swift */; };
143147
F2TXTCV112FAA400100E04DD1 /* EditorCanvasTextOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2TXTCV122FAA400100E04DD1 /* EditorCanvasTextOverlayView.swift */; };
144-
F2IMGOV112FAA500100E04DD1 /* EditorCanvasImageOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2IMGOV122FAA500100E04DD1 /* EditorCanvasImageOverlayView.swift */; };
145-
F2OVCBND12F90402000E04DD1 /* EditorCanvasOverlayBindings.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2OVCBND22F90402000E04DD1 /* EditorCanvasOverlayBindings.swift */; };
146-
F2OVCLIP12F90402000E04DD1 /* OverlayCanvasClip.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2OVCLIP22F90402000E04DD1 /* OverlayCanvasClip.swift */; };
147-
F2OVUCAS12F90402000E04DD1 /* BuildEditorCanvasOverlayState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2OVUCAS22F90402000E04DD1 /* BuildEditorCanvasOverlayState.swift */; };
148148
/* End PBXBuildFile section */
149149

150150
/* Begin PBXContainerItemProxy section */
@@ -274,9 +274,13 @@
274274
F2F897BE2F7DB6D90060F039 /* TimelineSkeletonAnimator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineSkeletonAnimator.swift; sourceTree = "<group>"; };
275275
F2F897C02F7E70E70060F039 /* CIFilter+Transitions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CIFilter+Transitions.swift"; sourceTree = "<group>"; };
276276
F2F897C32F7E77780060F039 /* disintegrate.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = disintegrate.jpg; sourceTree = "<group>"; };
277+
F2IMGOV122FAA500100E04DD1 /* EditorCanvasImageOverlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorCanvasImageOverlayView.swift; sourceTree = "<group>"; };
277278
F2MOVERR2F90418000E04DD1 /* MovieExportError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieExportError.swift; sourceTree = "<group>"; };
278279
F2MOVEXP2F90418000E04DD1 /* ProjectMovieExporting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProjectMovieExporting.swift; sourceTree = "<group>"; };
279280
F2MOVPHO2F90418000E04DD1 /* PhotoLibraryMovieExporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoLibraryMovieExporter.swift; sourceTree = "<group>"; };
281+
F2OVCBND22F90402000E04DD1 /* EditorCanvasOverlayBindings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorCanvasOverlayBindings.swift; sourceTree = "<group>"; };
282+
F2OVCLIP22F90402000E04DD1 /* OverlayCanvasClip.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayCanvasClip.swift; sourceTree = "<group>"; };
283+
F2OVUCAS22F90402000E04DD1 /* BuildEditorCanvasOverlayState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuildEditorCanvasOverlayState.swift; sourceTree = "<group>"; };
280284
F2PREVF012F90403000E04DD1 /* CMTimeRange+PreviewComposition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CMTimeRange+PreviewComposition.swift"; sourceTree = "<group>"; };
281285
F2PREVF022F90403000E04DD1 /* CoreImage+VideoPreview.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CoreImage+VideoPreview.swift"; sourceTree = "<group>"; };
282286
F2PREVF032F90403000E04DD1 /* AVCompositionTrack+PreviewTransforms.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AVCompositionTrack+PreviewTransforms.swift"; sourceTree = "<group>"; };
@@ -293,10 +297,6 @@
293297
F2TXTAL122FAA400100E04DD1 /* TextOverlayTextAlignment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextOverlayTextAlignment.swift; sourceTree = "<group>"; };
294298
F2TXTCI322FAA500100E04DD1 /* TextOverlayPreviewCIRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextOverlayPreviewCIRenderer.swift; sourceTree = "<group>"; };
295299
F2TXTCV122FAA400100E04DD1 /* EditorCanvasTextOverlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorCanvasTextOverlayView.swift; sourceTree = "<group>"; };
296-
F2IMGOV122FAA500100E04DD1 /* EditorCanvasImageOverlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorCanvasImageOverlayView.swift; sourceTree = "<group>"; };
297-
F2OVCBND22F90402000E04DD1 /* EditorCanvasOverlayBindings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditorCanvasOverlayBindings.swift; sourceTree = "<group>"; };
298-
F2OVCLIP22F90402000E04DD1 /* OverlayCanvasClip.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayCanvasClip.swift; sourceTree = "<group>"; };
299-
F2OVUCAS22F90402000E04DD1 /* BuildEditorCanvasOverlayState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuildEditorCanvasOverlayState.swift; sourceTree = "<group>"; };
300300
/* End PBXFileReference section */
301301

302302
/* Begin PBXFrameworksBuildPhase section */
@@ -544,22 +544,6 @@
544544
path = Editor;
545545
sourceTree = "<group>";
546546
};
547-
F2EDMODL2F90402000E04DD0 /* Models */ = {
548-
isa = PBXGroup;
549-
children = (
550-
F2OVCBND22F90402000E04DD1 /* EditorCanvasOverlayBindings.swift */,
551-
);
552-
path = Models;
553-
sourceTree = "<group>";
554-
};
555-
F2EDUCAS2F90402000E04DD0 /* UseCases */ = {
556-
isa = PBXGroup;
557-
children = (
558-
F2OVUCAS22F90402000E04DD1 /* BuildEditorCanvasOverlayState.swift */,
559-
);
560-
path = UseCases;
561-
sourceTree = "<group>";
562-
};
563547
F25D1C332F73F69B00B82DC2 /* Export */ = {
564548
isa = PBXGroup;
565549
children = (
@@ -751,6 +735,22 @@
751735
path = "Test Media";
752736
sourceTree = "<group>";
753737
};
738+
F2EDMODL2F90402000E04DD0 /* Models */ = {
739+
isa = PBXGroup;
740+
children = (
741+
F2OVCBND22F90402000E04DD1 /* EditorCanvasOverlayBindings.swift */,
742+
);
743+
path = Models;
744+
sourceTree = "<group>";
745+
};
746+
F2EDUCAS2F90402000E04DD0 /* UseCases */ = {
747+
isa = PBXGroup;
748+
children = (
749+
F2OVUCAS22F90402000E04DD1 /* BuildEditorCanvasOverlayState.swift */,
750+
);
751+
path = UseCases;
752+
sourceTree = "<group>";
753+
};
754754
F2F897C22F7E776A0060F039 /* Engine Assets */ = {
755755
isa = PBXGroup;
756756
children = (
@@ -1054,6 +1054,7 @@
10541054
CURRENT_PROJECT_VERSION = 1;
10551055
DEVELOPMENT_TEAM = N26XM7U465;
10561056
GENERATE_INFOPLIST_FILE = YES;
1057+
IPHONEOS_DEPLOYMENT_TARGET = 16.6;
10571058
MARKETING_VERSION = 1.0;
10581059
PRODUCT_BUNDLE_IDENTIFIER = com.coder.test.VideoEditorTests;
10591060
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -1075,6 +1076,7 @@
10751076
CURRENT_PROJECT_VERSION = 1;
10761077
DEVELOPMENT_TEAM = N26XM7U465;
10771078
GENERATE_INFOPLIST_FILE = YES;
1079+
IPHONEOS_DEPLOYMENT_TARGET = 16.6;
10781080
MARKETING_VERSION = 1.0;
10791081
PRODUCT_BUNDLE_IDENTIFIER = com.coder.test.VideoEditorTests;
10801082
PRODUCT_NAME = "$(TARGET_NAME)";

fastlane/README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
fastlane documentation
2+
----
3+
4+
# Installation
5+
6+
Make sure you have the latest version of the Xcode command line tools installed:
7+
8+
```sh
9+
xcode-select --install
10+
```
11+
12+
For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
13+
14+
# Available Actions
15+
16+
## iOS
17+
18+
### ios run_tests
19+
20+
```sh
21+
[bundle exec] fastlane ios run_tests
22+
```
23+
24+
Run all tests ve report the results
25+
26+
----
27+
28+
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
29+
30+
More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
31+
32+
The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).

fastlane/report.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<testsuites>
3+
<testsuite name="fastlane.lanes">
4+
5+
6+
7+
8+
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000227">
9+
10+
</testcase>
11+
12+
13+
<testcase classname="fastlane.lanes" name="1: scan" time="16.957734">
14+
15+
</testcase>
16+
17+
</testsuite>
18+
</testsuites>

0 commit comments

Comments
 (0)