Skip to content
Open
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
94 changes: 94 additions & 0 deletions .github/workflows/ringpublishingtracking_ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# The name of the workflow
name: RingPublishingTracking - Continous Integration

# When workflow should start
on:
workflow_dispatch:
branches:
- master
push:
branches:
- master
- 'feature/**'
- 'bugfix/**'

# If workflow is already running - cancel it
concurrency:
cancel-in-progress: true
group: RingPublishingTracking-CI-${{ github.ref }}

# Global environment variables
env:
is_ci: true
ci_planRepository_branch: ${{ github.ref_name }}
CI_MATCH_KEYCHAIN_PASSWORD: ${{ secrets.NATIVE_MOBILE_CI_MATCH_KEYCHAIN_PASSWORD }}
CI_MATCH_KEYCHAIN_NAME: ${{ secrets.NATIVE_MOBILE_CI_MATCH_KEYCHAIN_NAME }}
DL_GITHUB_PERSONAL_TOKEN: ${{ secrets.DL_GITHUB_PERSONAL_TOKEN }}

# Jobs to run
jobs:

# Swiftlint job
swiftlint:
name: Swift Lint
runs-on: ["self-hosted", "macOS", "Xcode-16"]
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Run Swiftlint
run: |
fastlane init_env
fastlane strict_lint --env alpha

# Build demo app
build_app:
name: Build iOS app
runs-on: ["self-hosted", "macOS", "Xcode-16"]
needs:
- swiftlint
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Build iOS app
run: |
fastlane init_env
fastlane build_ipa skip_cocoapods:false build_number:${{ github.run_number }} --env alpha

# Summary job
sdk_summary:
name: RingPublishingTracking build summary
runs-on: ["self-hosted", "macOS", "Xcode-16"]
needs:
- swiftlint
- build_app
if: always()
steps:
- name: Set exit code based on job statuses
run: |
# When none of the needed jobs fail or are cancelled (skipped or successful jobs are ok)
if ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }} ; then
echo "RingPublishingTracking - build successful"
exit 0
else
echo "RingPublishingTracking - build failed"
exit 1
fi

# Deployment
sdk_deployment:
name: 'RingPublishingTracking deployment'
runs-on: ["self-hosted", "macOS", "Xcode-16"]
needs:
- sdk_summary
if: github.ref_name == 'master'
environment: production
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Deploy .podspec to repository
run: |
fastlane init_env
fastlane publish_open_source_sdk --env alpha
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,5 @@ Example/Pods
## SPM
.swiftpm

fastlane/*
!fastlane/.env
tests-build/*
test-reports/*
6 changes: 6 additions & 0 deletions Changelogs/1.8.5
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
1.8.5 Release notes (2025-05-05)
================================

### Changes

* Added support for CI/CD on GitHub platform
12 changes: 2 additions & 10 deletions Example/RingPublishingTracking.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1423,18 +1423,14 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 97W46277W4;
INFOPLIST_FILE = RingPublishingTracking/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.8.4;
MARKETING_VERSION = 1.8.5;
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.RingPublishingTracking-Example.RingPublishingTracking";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
Expand All @@ -1447,18 +1443,14 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 97W46277W4;
INFOPLIST_FILE = RingPublishingTracking/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.8.4;
MARKETING_VERSION = 1.8.5;
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.RingPublishingTracking-Example.RingPublishingTracking";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
Expand Down
2 changes: 1 addition & 1 deletion Example/RingPublishingTracking/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.8.4</string>
<string>1.8.5</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
Expand Down
2 changes: 1 addition & 1 deletion RingPublishingTracking.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "RingPublishingTracking"
s.version = "1.8.4"
s.version = "1.8.5"

s.summary = "SDK used to report events from mobile application"
s.license = { :type => 'Copyright. Ringier Axel Springer Polska', :file => 'LICENSE' }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,18 @@ final class StructureInfoDecorator: Decorator {
return [:]
}

let resolved = structureType.parametersResolved(applicationRootPath: applicationRootPath, applicationAdvertisementSite: applicationAdvertisementSite)
let resolved = structureType.parametersResolved(applicationRootPath: applicationRootPath,
applicationAdvertisementSite: applicationAdvertisementSite)
var params = [
"DV": resolved.dv,
"DU": resolved.du + contentPageViewSource.utmMedium
]

if let previousStructureType = previousInfo.structureType {
let source = previousInfo.contentPageViewSource
params["DR"] = previousStructureType.parametersResolved(applicationRootPath: applicationRootPath, applicationAdvertisementSite: applicationAdvertisementSite).du + source.utmMedium
let resolvedDU = previousStructureType.parametersResolved(applicationRootPath: applicationRootPath,
applicationAdvertisementSite: applicationAdvertisementSite).du
params["DR"] = resolvedDU + source.utmMedium
}

return params
Expand All @@ -76,7 +79,7 @@ extension StructureInfoDecorator {
func updateApplicationRootPath(applicationRootPath: String) {
self.applicationRootPath = applicationRootPath
}

func updateApplicationAdvertisementSite(applicationAdvertisementSite: String?) {
self.applicationAdvertisementSite = applicationAdvertisementSite
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public extension RingPublishingTracking {
///
/// - Parameter currentAdvertisementArea: String
func updateApplicationAdvertisementArea(currentAdvertisementArea: String?) {
Logger.log("Updating application advertisement area to: '\(currentAdvertisementArea)'")
Logger.log("Updating application advertisement area to: '\(String(describing: currentAdvertisementArea))'")

eventsService?.updateApplicationAdvertisementArea(currentAdvertisementArea)
}
Expand Down
8 changes: 0 additions & 8 deletions Tests/RingPublishingTrackingTests/EndpointTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ class EndpointTests: XCTestCase {
XCTAssertNotNil(encoded)
}

// swiftlint:disable non_optional_string_data_conversion

func testIdentifyRequestDecoding_sampleIdentifyResponseDataCreated_decodedResponseIsReturned() {
// Given
let data = """
Expand Down Expand Up @@ -62,8 +60,6 @@ class EndpointTests: XCTestCase {
XCTAssertEqual(decoded?.postInterval, 30000, "postInterval of decoded response should match")
}

// swiftlint:enable non_optional_string_data_conversion

func testEventRequestEncoding_sampleSendEventEnpointCreated_encodedBodyIsReturned() {
// Given
let eventRequest = EventRequest(ids: [
Expand All @@ -80,8 +76,6 @@ class EndpointTests: XCTestCase {
XCTAssertNotNil(encoded)
}

// swiftlint:disable non_optional_string_data_conversion

func testEventRequestDecoding_sampleSendEventResponseDataCreated_decodedResponseIsReturned() {
// Given
let data = """
Expand All @@ -97,6 +91,4 @@ class EndpointTests: XCTestCase {
// Then
XCTAssertEqual(decoded?.postInterval, 30000, "postInterval of decoded response should match")
}

// swiftlint:enable non_optional_string_data_conversion
}
3 changes: 2 additions & 1 deletion fastlane/.env
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ DL_UNIT_TESTS_SCHEME = "RingPublishingTracking-Example"

DL_PODSPEC_FILENAME = "RingPublishingTracking.podspec"

DL_GITHUB_REPO_NAME = "ringpublishing/RingPublishingTracking-iOS"
DL_GITHUB_REPO_NAME = "ringpublishing/RingPublishingTracking-iOS"
DL_OUTPUT_SPEC_REPOSITORY="private"
7 changes: 7 additions & 0 deletions fastlane/.env.alpha
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
DL_BUILD_CONFIGURATION="Release"
DL_BUILD_EXPORT_METHOD="development"

DL_SKIP_CODESIGNING=true
DL_SKIP_ARCHIVE=true
DL_DISABLE_AUTOMATIC_SIGNING_MANAGEMENT=true
DL_INSTALL_CERTIFICATES_AUTOMATICALLY=false
1 change: 1 addition & 0 deletions fastlane/Fastfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
import_from_git(url: 'git@github.com:Ringier-Axel-Springer-PL/native-mobile-fastlane.git')
Loading