diff --git a/.github/workflows/release_macos_binary.yml b/.github/workflows/release_macos_binary.yml new file mode 100644 index 00000000..235a2bd6 --- /dev/null +++ b/.github/workflows/release_macos_binary.yml @@ -0,0 +1,41 @@ +name: Release macOS Binary + +on: + push: + tags: ['*'] + +permissions: + contents: write + +jobs: + release-macos: + name: Build universal binary & publish + runs-on: macos-15 + steps: + - uses: actions/checkout@v4 + + - name: Build universal binary (arm64 + x86_64) + run: | + swift build -c release --arch arm64 + swift build -c release --arch x86_64 + lipo -create \ + .build/arm64-apple-macosx/release/danger-swift \ + .build/x86_64-apple-macosx/release/danger-swift \ + -output .build/release/danger-swift + lipo -info .build/release/danger-swift + + - name: Package binary + run: | + VERSION="${GITHUB_REF_NAME}" + TARBALL="danger-swift-macos-universal.tar.gz" + tar -czf "$TARBALL" -C .build/release danger-swift + shasum -a 256 "$TARBALL" > "$TARBALL.sha256" + echo "TARBALL=$TARBALL" >> "$GITHUB_ENV" + echo "VERSION=$VERSION" >> "$GITHUB_ENV" + + - name: Upload to GitHub Release + uses: softprops/action-gh-release@v2 + with: + files: | + ${{ env.TARBALL }} + ${{ env.TARBALL }}.sha256 diff --git a/Scripts/create_homebrew_tap.sh b/Scripts/create_homebrew_tap.sh index e68e1998..9778dc6d 100755 --- a/Scripts/create_homebrew_tap.sh +++ b/Scripts/create_homebrew_tap.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Clone tap repo +# Clone tap repo and update the formula to use the prebuilt universal binary. GIT_ORIGIN_NAME=`git remote get-url origin` if [[ $GIT_ORIGIN_NAME != *"danger/"* ]]; then @@ -8,39 +8,43 @@ if [[ $GIT_ORIGIN_NAME != *"danger/"* ]]; then fi TOOL_NAME=danger-swift +BINARY_TARBALL="danger-swift-macos-universal.tar.gz" +BINARY_URL="https://github.com/danger/danger-swift/releases/download/$VERSION/$BINARY_TARBALL" HOMEBREW_TAP_TMPDIR=$(mktemp -d) git clone --depth 1 https://github.com/danger/homebrew-tap.git "$HOMEBREW_TAP_TMPDIR" cd "$HOMEBREW_TAP_TMPDIR" || exit 1 -TAR_FILENAME="$TOOL_NAME-$VERSION.tar.gz" -wget "https://github.com/danger/$TOOL_NAME/archive/$VERSION.tar.gz" -O "$TAR_FILENAME" 2> /dev/null -SHA=`shasum -a 256 "$TAR_FILENAME" | head -n1 | cut -d " " -f1` -rm "$TAR_FILENAME" 2> /dev/null - -# git config user.name danger -# git config user.email danger@users.noreply.github.com - -# Write formula -echo "class DangerSwift < Formula" > danger-swift.rb -echo " desc \"Write your Dangerfiles in Swift\"" >> danger-swift.rb -echo " homepage \"https://github.com/danger/danger-swift\"" >> danger-swift.rb -echo " version \"$VERSION\"" >> danger-swift.rb -echo " url \"https://github.com/danger/danger-swift/archive/#{version}.tar.gz\"" >> danger-swift.rb -echo " sha256 \"${SHA}\"" >> danger-swift.rb -echo " head \"https://github.com/danger/danger-swift.git\"" >> danger-swift.rb -echo >> danger-swift.rb -echo " # Runs only on Xcode 14" >> danger-swift.rb -echo " depends_on :xcode => [\"14\", :build]" >> danger-swift.rb -echo " # Use the vendored danger" >> danger-swift.rb -echo " depends_on \"danger/tap/danger-js\"" >> danger-swift.rb -echo >> danger-swift.rb -echo " def install" >> danger-swift.rb -echo " system \"make\", \"install\", \"PREFIX=#{prefix}\"" >> danger-swift.rb -echo " end" >> danger-swift.rb -echo "end" >> danger-swift.rb - -#Commit changes +# Compute SHA256 of the prebuilt universal binary. +wget "$BINARY_URL" -O "$BINARY_TARBALL" 2> /dev/null +SHA=`shasum -a 256 "$BINARY_TARBALL" | head -n1 | cut -d " " -f1` +rm "$BINARY_TARBALL" 2> /dev/null + +# Write formula using the prebuilt binary — no Xcode or compilation required. +cat > danger-swift.rb <&1") + end +end +FORMULA + +# Commit changes git add danger-swift.rb 2> /dev/null git commit -m "Releasing danger-swift version $VERSION" --quiet git push origin master