Skip to content

Commit

Permalink
Merge pull request #57 from p-x9/feature/release-ci
Browse files Browse the repository at this point in the history
Release Workflow
  • Loading branch information
p-x9 committed Mar 1, 2024
2 parents 789abab + c55c558 commit 6391489
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 5 deletions.
68 changes: 68 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Release

on:
push:
tags:
- '*.*.*'
workflow_dispatch:

env:
DEVELOPER_DIR: /Applications/Xcode_15.2.app

jobs:
build:
name: Release
runs-on: macos-14
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Select Xcode 15
run: sudo xcode-select -s /Applications/Xcode_15.2.app

- name: Build
run: bash scripts/xcframework.sh

- name: Check Sum
run: |
machokit="$(swift package compute-checksum XCFrameworks/MachOKit.xcframework.zip)"
machokitc="$(swift package compute-checksum XCFrameworks/MachOKitC.xcframework.zip)"
echo "machokit_checksum=$machokit" >> $GITHUB_ENV
echo "machokitc_checksum=$machokitc" >> $GITHUB_ENV
echo "MachOKit $machokit"
echo "MachOKitC $machokitc"
- name: Get tag version
id: get_tag_version
run: |
echo "$(git tag --sort=creatordate | tail -n 1)" > CURRENT_TAG
echo "current_tag=$(cat CURRENT_TAG)" >> $GITHUB_OUTPUT
echo "previous_tag=$(\
curl -H 'Accept: application/vnd.github.v3+json' \
-H 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' \
https://api.github.com/repos/${{ github.repository }}/releases/latest \
| jq -r .tag_name)\
" >> $GITHUB_OUTPUT
- name: Generate release note
id: release_note
run: |
echo -e "$(\
curl -X POST \
-H 'Accept: application/vnd.github.v3+json' \
-H 'Authorization: token ${{ secrets.GITHUB_TOKEN }}' \
https://api.github.com/repos/${{ github.repository }}/releases/generate-notes \
-d '{"tag_name":"${{ steps.get_tag_version.outputs.current_tag }}", "previous_tag_name":"${{ steps.get_tag_version.outputs.previous_tag }}"}' \
| jq .body| sed 's/"//g'\
)" > release_body.txt
echo -e "\n" >> release_body.txt
echo -e "MachOKit\n$machokit_checksum\n" >> release_body.txt
echo -e "MachOKitC\n$machokitc_checksum" >> release_body.txt
- name: Release
uses: softprops/action-gh-release@v1
with:
body_path: "./release_body.txt"
files: |
./XCFrameworks/MachOKit.xcframework.zip
./XCFrameworks/MachOKitC.xcframework.zip
46 changes: 41 additions & 5 deletions scripts/xcframework.sh
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,35 @@ archive_project() {

create_xcframework() {
local SCHEME=$1
xcodebuild -create-xcframework \
-framework "$OUTPUT/macOS/$SCHEME.framework" \
-framework "$OUTPUT/iOS Simulator/$SCHEME.framework" \
-framework "$OUTPUT/iOS/$SCHEME.framework" \
-output "$OUTPUT/$SCHEME.xcframework"
local PLATFORMS=(
"macOS"
"iOS"
"iOS Simulator"
"watchOS"
"watchOS Simulator"
"tvOS"
"tvOS Simulator"
"visionOS"
"visionOS Simulator"
)
local ARGS=(
-create-xcframework
)

for platfrom in "${PLATFORMS[@]}"; do
local path=$OUTPUT/"$platfrom"/$SCHEME.framework
if [ -e "$path" ]; then
ARGS+=(
-framework \"$path\"
)
fi
done

ARGS+=(
-output \"$OUTPUT/"$SCHEME".xcframework\"
)

eval xcodebuild "${ARGS[@]}"
}

zip_xcframework() {
Expand All @@ -131,6 +155,12 @@ machokit() {
archive_project "MachOKit" "iOS" "$LINK_FLAGS"
archive_project "MachOKit" "iOS Simulator" "$LINK_FLAGS"
archive_project "MachOKit" "macOS" "$LINK_FLAGS"
archive_project "MachOKit" "watchOS" "$LINK_FLAGS"
archive_project "MachOKit" "watchOS Simulator" "$LINK_FLAGS"
archive_project "MachOKit" "tvOS" "$LINK_FLAGS"
archive_project "MachOKit" "tvOS Simulator" "$LINK_FLAGS"
archive_project "MachOKit" "visionOS" "$LINK_FLAGS"
archive_project "MachOKit" "visionOS Simulator" "$LINK_FLAGS"

create_xcframework "MachOKit"
zip_xcframework "MachOKit"
Expand All @@ -140,6 +170,12 @@ machokitc() {
archive_project "MachOKitC" "iOS"
archive_project "MachOKitC" "iOS Simulator"
archive_project "MachOKitC" "macOS"
archive_project "MachOKitC" "watchOS"
archive_project "MachOKitC" "watchOS Simulator"
archive_project "MachOKitC" "tvOS"
archive_project "MachOKitC" "tvOS Simulator"
archive_project "MachOKitC" "visionOS"
archive_project "MachOKitC" "visionOS Simulator"

create_xcframework "MachOKitC"
zip_xcframework "MachOKitC"
Expand Down

0 comments on commit 6391489

Please sign in to comment.