diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 195726b97..4be7afacc 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -48,6 +48,15 @@ steps: permit_on_passed: true agents: queue: linter + + - label: ":swift: Package.resolved" + plugins: [$CI_TOOLKIT] + notify: + - github_commit_status: + context: "Package.resolved" + command: | + install_gems + bundle exec make validate-package-resolved ################# # Build and Test diff --git a/Demo/Gravatar-Demo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Demo/Gravatar-Demo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 70fb74ab2..61d33bca8 100644 --- a/Demo/Gravatar-Demo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Demo/Gravatar-Demo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "dddfee60d726ac68a5cd796dea6619c69dcce5cc55b1b6d7d75bb308b96243a1", + "originHash" : "ef380bfd827500bb40ef65e62058cb22bbebbf217402a19c327d4201d142ba21", "pins" : [ { "identity" : "swift-snapshot-testing", @@ -18,15 +18,6 @@ "revision" : "6ad4ea24b01559dde0773e3d091f1b9e36175036", "version" : "509.0.2" } - }, - { - "identity" : "swiftformat", - "kind" : "remoteSourceControl", - "location" : "https://github.com/nicklockwood/SwiftFormat", - "state" : { - "revision" : "86ed20990585f478c0daf309af645c2a528b59d8", - "version" : "0.54.6" - } } ], "version" : 3 diff --git a/Makefile b/Makefile index 8cd887454..a36f88611 100644 --- a/Makefile +++ b/Makefile @@ -59,6 +59,9 @@ ifndef BUILD_NUMBER override BUILD_NUMBER = 0 endif +validate-package-resolved: bundle-install + @bundle exec fastlane validate_package_resolved scheme:$(SCHEME_DEMO) + bundle-install: bundle install diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 8d4d0ed3a..34b278793 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -80,6 +80,18 @@ platform :ios do ) end + desc 'Checks whether all Package.resolved files are current' + lane :validate_package_resolved do |scheme:| + resolve_package_dependencies_for_project(project: XCODEPROJ_PATH, scheme: scheme) + resolve_package_dependencies_for_spm + + if uncommitted_changes.empty? + UI.success('No uncommitted changes found.') + else + UI.user_error!("Uncommitted changes detected: \n #{uncommitted_changes}") + end + end + desc 'Builds the demo app from the given scheme for distribution' lane :build_demo_for_distribution do |scheme:, build_number:| UI.user_error! 'Please pass a build number by calling the lane with build_number:VALUE' if build_number.nil? || build_number.empty? @@ -219,3 +231,21 @@ def read_from_xcconfig!(key:, xcconfig:) configs[key] end + +def resolve_package_dependencies_for_project(project:, scheme:) + xcodebuild( + project: project, + scheme: scheme, + configuration: 'Debug', + clean: true, + xcargs: '-resolvePackageDependencies -skipPackageUpdates' + ) +end + +def resolve_package_dependencies_for_spm + spm(command: 'resolve') +end + +def uncommitted_changes + sh('git status --porcelain').strip +end