Skip to content

Build and Release Macro Plugin #1

Build and Release Macro Plugin

Build and Release Macro Plugin #1

Workflow file for this run

name: Build and Release Macro Plugin
on:
release:
types: [published]
jobs:
build-arm64:
name: Build arm64
runs-on: macos-15
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Build arm64 macro plugin
run: |
swift build -c release --product ReerCodableMacros
cp .build/release/ReerCodableMacros-tool ./ReerCodableMacros-arm64
file ./ReerCodableMacros-arm64
- name: Upload arm64 artifact
uses: actions/upload-artifact@v4
with:
name: macro-plugin-arm64
path: ReerCodableMacros-arm64
build-x86_64:
name: Build x86_64
runs-on: macos-15-intel
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Build x86_64 macro plugin
run: |
swift build -c release --product ReerCodableMacros
cp .build/release/ReerCodableMacros-tool ./ReerCodableMacros-x86_64
file ./ReerCodableMacros-x86_64
- name: Upload x86_64 artifact
uses: actions/upload-artifact@v4
with:
name: macro-plugin-x86_64
path: ReerCodableMacros-x86_64
create-universal-and-upload:
name: Create Universal Macro Plugin and Upload
needs: [build-arm64, build-x86_64]
runs-on: macos-15
permissions:
contents: write
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Download arm64 artifact
uses: actions/download-artifact@v4
with:
name: macro-plugin-arm64
path: ./artifacts
- name: Download x86_64 artifact
uses: actions/download-artifact@v4
with:
name: macro-plugin-x86_64
path: ./artifacts
- name: Create Universal Macro Plugin and Artifact Bundle
run: |
cd artifacts
# Create Universal Macro Plugin
lipo -create ReerCodableMacros-arm64 ReerCodableMacros-x86_64 \
-output ReerCodableMacros
echo "=== Universal Macro Plugin Info ==="
lipo -info ReerCodableMacros
file ReerCodableMacros
# Create artifact bundle structure
mkdir -p ReerCodableMacros.artifactbundle/macos/bin
cp ReerCodableMacros ReerCodableMacros.artifactbundle/macos/bin/
# Create info.json
cat > ReerCodableMacros.artifactbundle/info.json << EOF
{
"schemaVersion": "1.0",
"artifacts": {
"ReerCodableMacros": {
"version": "${{ github.ref_name }}",
"type": "executable",
"variants": [
{
"path": "macos/bin/ReerCodableMacros",
"supportedTriples": ["x86_64-apple-macosx", "arm64-apple-macosx"]
}
]
}
}
}
EOF
# Create zip archive
zip -r ReerCodableMacros.artifactbundle.zip ReerCodableMacros.artifactbundle
echo "=== Artifact Bundle Contents ==="
unzip -l ReerCodableMacros.artifactbundle.zip
- name: Upload to GitHub Release
uses: softprops/action-gh-release@v2
with:
files: |
artifacts/ReerCodableMacros
artifacts/ReerCodableMacros.artifactbundle.zip