CD #8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
workflow_dispatch: | |
pull_request_target: | |
branches: [main] | |
types: [closed] | |
jobs: | |
build: | |
name: Build XCFramework | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
build-config: | |
- { | |
scheme: "SkeletonView iOS", | |
destination: "generic/platform=iOS", | |
sdk: "iphoneos", | |
archive_path: "build/Release-iphoneos", | |
} | |
- { | |
scheme: "SkeletonView iOS", | |
destination: "generic/platform=iOS Simulator", | |
sdk: "iphonesimulator", | |
archive_path: "build/Release-iphonesimulator", | |
} | |
- { | |
scheme: "SkeletonView tvOS", | |
destination: "generic/platform=tvOS", | |
sdk: "appletvos", | |
archive_path: "build/Release-appletvos", | |
} | |
- { | |
scheme: "SkeletonView tvOS", | |
destination: "generic/platform=tvOS Simulator", | |
sdk: "appletvsimulator", | |
archive_path: "build/Release-appletvsimulator", | |
} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Build framework | |
run: | | |
xcodebuild archive \ | |
-scheme "${{ matrix.build-config.scheme }}" \ | |
-destination "${{ matrix.build-config.destination }}" \ | |
-configuration Release \ | |
-sdk "${{ matrix.build-config.sdk }}" \ | |
-archivePath "${{ matrix.build-config.archive_path }}/SkeletonView.xcarchive" \ | |
SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES | |
- name: Upload archive as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.build-config.sdk }}-build | |
path: ${{ matrix.build-config.archive_path }} | |
create-xcframework: | |
name: Create XCFramework | |
needs: build | |
runs-on: macos-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: build/ | |
- name: Verify downloaded artifacts | |
run: ls -R build/ | |
- name: Create XCFramework | |
run: | | |
xcodebuild -create-xcframework \ | |
-framework build/Release-iphoneos/SkeletonView.xcarchive/Products/Library/Frameworks/SkeletonView.framework \ | |
-framework build/Release-iphonesimulator/SkeletonView.xcarchive/Products/Library/Frameworks/SkeletonView.framework \ | |
-framework build/Release-appletvos/SkeletonView.xcarchive/Products/Library/Frameworks/SkeletonView.framework \ | |
-framework build/Release-appletvsimulator/SkeletonView.xcarchive/Products/Library/Frameworks/SkeletonView.framework \ | |
-output build/XCFramework/SkeletonView.xcframework | |
- name: Upload XCFramework | |
uses: actions/upload-artifact@v3 | |
with: | |
name: SkeletonView-XCFramework | |
path: build/XCFramework/SkeletonView.xcframework | |
release_version: | |
name: Release Version | |
needs: create-xcframework | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download XCFramework | |
uses: actions/download-artifact@v3 | |
with: | |
name: SkeletonView-XCFramework | |
- name: Publish release | |
id: publish_release | |
uses: release-drafter/release-drafter@v5 | |
with: | |
publish: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Update podspec with XCFramework | |
run: | | |
sed -i '' 's|vendored_frameworks = .*|vendored_frameworks = "build/XCFramework/SkeletonView.xcframework"|' SkeletonView.podspec | |
- name: Update version in podspec | |
run: fastlane bump_version next_version:${{ steps.publish_release.outputs.tag_name }} | |
- name: Commit changes | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
branch: "main" | |
commit_message: "Bump version ${{ steps.publish_release.outputs.tag_name }}" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Deploy to CocoaPods | |
env: | |
COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} | |
run: | | |
set -eo pipefail | |
pod lib lint --allow-warnings | |
pod trunk push --allow-warnings | |
- name: Tweet the release | |
uses: nearform-actions/github-action-notify-twitter@master | |
with: | |
message: | | |
🎉 New release ${{ steps.publish_release.outputs.tag_name }} is out 🚀 | |
Check out all the changes here: | |
${{ steps.publish_release.outputs.html_url }} | |
twitter-app-key: ${{ secrets.TWITTER_CONSUMER_API_KEY }} | |
twitter-app-secret: ${{ secrets.TWITTER_CONSUMER_API_SECRET }} | |
twitter-access-token: ${{ secrets.TWITTER_ACCESS_TOKEN }} | |
twitter-access-token-secret: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} |