From 6ce7e28c6eec25275c7a244ce210ba53201eec1c Mon Sep 17 00:00:00 2001 From: Yicheng Date: Tue, 12 Feb 2019 16:12:44 +0800 Subject: [PATCH] Feature: Add CI Support (#100) --- .gitignore | 2 + .travis.yml | 47 ++++++++++++++++++ ClashX.xcodeproj/project.pbxproj | 15 ++++-- .../ProxyConfig.xcodeproj/project.pbxproj | 9 +++- dist.p12.enc | Bin 0 -> 3360 bytes scripts/travis/.gitkeep | 0 6 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 .travis.yml create mode 100644 dist.p12.enc create mode 100644 scripts/travis/.gitkeep diff --git a/.gitignore b/.gitignore index 20dc243..e8f6776 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ Carthage ClashX.a ClashX.h ClashX/Resources/dashboard +ClashX.app +*.dmg diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..56502d5 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,47 @@ +language: objective-c +osx_image: xcode10.1 +node_js: 10 +before_install: +- openssl aes-256-cbc -K $encrypted_a43c9d4ca4d4_key -iv $encrypted_a43c9d4ca4d4_iv + -in dist.p12.enc -out scripts/travis/dist.p12 -d +- security create-keychain -p mysecretpassword build.keychain +- security default-keychain -s build.keychain +- security unlock-keychain -p mysecretpassword build.keychain +- security set-keychain-settings -t 3600 -u build.keychain +- security import ./scripts/travis/dist.p12 -k build.keychain -T /usr/bin/codesign + -P "" +- 'security set-key-partition-list -S apple-tool:,apple: -s -k mysecretpassword build.keychain' +install: +- wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz +- tar -zxvf GeoLite2-Country.tar.gz +- mv GeoLite2-Country_*/GeoLite2-Country.mmdb ./ClashX/Support\ Files/Country.mmdb +- cd ClashX/Resources +- git clone -b gh-pages https://github.com/Dreamacro/clash-dashboard.git dashboard +- cd .. +- go build -buildmode=c-archive +- cd $TRAVIS_BUILD_DIR +script: +- 'xcodebuild -workspace ClashX.xcworkspace -scheme "ClashX" build CODE_SIGN_IDENTITY="Developer + ID Application: Fuzhou West2Online Internet Inc. (MEWHFZ92DY)"| xcpretty' + +before_deploy: +- gem install gym +- fastlane gym -s ClashX --disable_xcpretty +- npm install --global create-dmg +- create-dmg ClashX.app +- mv ClashX*.dmg ClashX.dmg + +deploy: + provider: releases + prerelease: false + skip_cleanup: true + api_key: + secure: YKO96FhN1JgvM+EiyciNQCu8nk/t87txxCEA5//XuKGKh+75tVyB+udmEL4sQL2R01vuShO5WwXLRulHkDsVFjNgvTGa64cdG6SMNORMI+mEuBW2L/RPtkaK1GAY+l+iGkH9i1Ng0SaDqL8xSc5rkqicdUV9NSDrg3k+Ck0pu/DvHgwHAmIjN0JG73TuQKfENDlwoa/uj6ztXpxGR30vgobqaex8wwGV+9fs8Jfbh3cO/79iGXweRhJptvvW0EAF1vV95KyEaUYtHP+7NYVVapOCWwek2irdn1HBm4pRib/0bHh/wFQgnI9OoQbKYuKNc6xRnt9h0wWh+SSIwRA1X7jiZTipli+7G2HGXpvW0r8jMskhYxqjcRH5EWB8rGXoiy/16GUuY1SK1ID/oW9nSh5ws6quaRBmpXGyJcoOUq9STsF+HVOF1DOX4qRt8B7049ytdKIRNe3QGmOlc8w3Nyi5y/v9CHWmVWRrKvzJ8qXP/+JJlFIsXhZR+TYqosiX2ZoKpanLv1RFFbU5FxqdaQapQX465FlpoD/6Qhv+2WLmLBgI1+ewR6g/wjLus6unVu4C3ztYov/9Y7OhYlfD+CqdzKOn+98gGAPRV92MfFh8Qa6rXjsVbP4dC09zKze/+OZtCXr36C5M40MYIChVuSUlDSG4IhElylboSYvQ/wQ= + file: + - ClashX.dmg + - ClashX.app.dSYM.zip + + on: + repo: yichengchen/clashX + branch: master + tags: true diff --git a/ClashX.xcodeproj/project.pbxproj b/ClashX.xcodeproj/project.pbxproj index 425638f..1a964b3 100644 --- a/ClashX.xcodeproj/project.pbxproj +++ b/ClashX.xcodeproj/project.pbxproj @@ -104,6 +104,7 @@ /* Begin PBXFileReference section */ 0358BF8F0CBD7FF9A7EA4E30 /* Pods_ClashX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ClashX.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 490B7B9F2211911A0045B687 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .travis.yml; sourceTree = ""; }; 4913C82221157D0200F6B87C /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = ""; }; 492C4868210EE6B9004554A0 /* ApiRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApiRequest.swift; sourceTree = ""; }; 492C4870210EF62E004554A0 /* ClashConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClashConfig.swift; sourceTree = ""; }; @@ -334,6 +335,7 @@ 49CF3B1E20CD7463001EBF94 /* Products */, 76229F122B00E935D126742A /* Pods */, CF1AC9FACC36FCE7663C5583 /* Frameworks */, + 490B7B9F2211911A0045B687 /* .travis.yml */, 49BC061E2129A34D005A0FE7 /* appcast.xml */, ); sourceTree = ""; @@ -721,7 +723,7 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = ClashXLaunchHelper/ClashXLaunchHelper.entitlements; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = MEWHFZ92DY; ENABLE_HARDENED_RUNTIME = YES; @@ -732,6 +734,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.west2online.ClashX.LaunchHelper; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; @@ -744,7 +747,8 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = ClashXLaunchHelper/ClashXLaunchHelper.entitlements; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_IDENTITY = "Developer ID Application"; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = MEWHFZ92DY; ENABLE_HARDENED_RUNTIME = YES; @@ -755,6 +759,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.west2online.ClashX.LaunchHelper; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 4.2; @@ -882,7 +887,7 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "Mac Developer"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = MEWHFZ92DY; FRAMEWORK_SEARCH_PATHS = ( @@ -915,8 +920,8 @@ baseConfigurationReference = A1485BCE642059532D01B8BA /* Pods-ClashX.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "Mac Developer"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_IDENTITY = "Developer ID Application"; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = MEWHFZ92DY; FRAMEWORK_SEARCH_PATHS = ( diff --git a/ClashX/ProxyConfig/ProxyConfig.xcodeproj/project.pbxproj b/ClashX/ProxyConfig/ProxyConfig.xcodeproj/project.pbxproj index 0ecd397..13d8e2e 100755 --- a/ClashX/ProxyConfig/ProxyConfig.xcodeproj/project.pbxproj +++ b/ClashX/ProxyConfig/ProxyConfig.xcodeproj/project.pbxproj @@ -95,7 +95,7 @@ 36B6A3221E263590002B5B1D = { CreatedOnToolsVersion = 8.2.1; LastSwiftMigration = 1000; - ProvisioningStyle = Automatic; + ProvisioningStyle = Manual; }; }; }; @@ -236,7 +236,10 @@ 36B6A32B1E263590002B5B1D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CODE_SIGN_STYLE = Manual; + DEVELOPMENT_TEAM = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 4.2; @@ -246,7 +249,11 @@ 36B6A32C1E263590002B5B1D /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CODE_SIGN_IDENTITY = "Developer ID Application"; + CODE_SIGN_STYLE = Manual; + DEVELOPMENT_TEAM = MEWHFZ92DY; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_SWIFT3_OBJC_INFERENCE = Off; SWIFT_VERSION = 4.2; diff --git a/dist.p12.enc b/dist.p12.enc new file mode 100644 index 0000000000000000000000000000000000000000..cbe2b79380f61950a63360e359d5dd70bf3b8b5b GIT binary patch literal 3360 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