mirror of
https://github.com/sparkle-project/Sparkle.git
synced 2025-11-01 15:34:38 +00:00
102 lines
3.8 KiB
YAML
102 lines
3.8 KiB
YAML
name: "Create Draft Release"
|
|
|
|
env:
|
|
BUILDDIR: "build"
|
|
DEVELOPER_DIR: "/Applications/Xcode_14.3.1.app/Contents/Developer"
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
marketingVersion:
|
|
description: "Marketing Version"
|
|
required: true
|
|
default: ""
|
|
|
|
prereleaseSuffix:
|
|
description: "Pre-release Suffix"
|
|
required: false
|
|
default: ""
|
|
|
|
buildVersion:
|
|
description: "Product Build"
|
|
required: true
|
|
default: ""
|
|
|
|
concurrency:
|
|
group: publish-release-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
release:
|
|
name: "Publish binaries for release"
|
|
runs-on: macos-13
|
|
|
|
steps:
|
|
- name: "Checkout sources"
|
|
uses: actions/checkout@v3
|
|
with:
|
|
token: ${{ secrets.BOT_PERSONAL_ACCESS_TOKEN }}
|
|
submodules: true
|
|
fetch-depth: 0
|
|
|
|
- name: "Extract latest changes from CHANGELOG"
|
|
run: |
|
|
./Configurations/generate_latest_changes.py > latest-changes.txt
|
|
|
|
- name: "Overwrite project versions in project"
|
|
run: |
|
|
IFS='.' read major minor patch <<< "${{ github.event.inputs.marketingVersion }}"
|
|
sed -E -i '' "s/SPARKLE_VERSION_MAJOR =.+/SPARKLE_VERSION_MAJOR = $major/g" ./Configurations/ConfigCommon.xcconfig
|
|
sed -E -i '' "s/SPARKLE_VERSION_MINOR =.+/SPARKLE_VERSION_MINOR = $minor/g" ./Configurations/ConfigCommon.xcconfig
|
|
sed -E -i '' "s/SPARKLE_VERSION_PATCH =.+/SPARKLE_VERSION_PATCH = $patch/g" ./Configurations/ConfigCommon.xcconfig
|
|
|
|
if [[ ! -z "${{ github.event.inputs.prereleaseSuffix }}" ]]; then
|
|
sed -E -i '' "s/SPARKLE_VERSION_SUFFIX =.*/SPARKLE_VERSION_SUFFIX = ${{ github.event.inputs.prereleaseSuffix }}/g" ./Configurations/ConfigCommon.xcconfig
|
|
else
|
|
sed -E -i '' "s/SPARKLE_VERSION_SUFFIX =.*/SPARKLE_VERSION_SUFFIX =/g" ./Configurations/ConfigCommon.xcconfig
|
|
fi
|
|
|
|
sed -E -i '' "s/CURRENT_PROJECT_VERSION =.+/CURRENT_PROJECT_VERSION = ${{ github.event.inputs.buildVersion }}/g" ./Configurations/ConfigCommon.xcconfig
|
|
git add ./Configurations/ConfigCommon.xcconfig
|
|
|
|
- name: "Determine if this is a pre-release version"
|
|
run: |
|
|
if [[ ! -z "${{ github.event.inputs.prereleaseSuffix }}" ]]; then
|
|
echo "PRERELEASE_VERSION=true" >> $GITHUB_ENV
|
|
else
|
|
echo "PRERELEASE_VERSION=false" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- name: "Set up git and create tag"
|
|
run: |
|
|
git config user.name Sparkle-Bot
|
|
git config user.email sparkle.project.bot@gmail.com
|
|
git tag "${{ github.event.inputs.marketingVersion }}${{ github.event.inputs.prereleaseSuffix }}"
|
|
|
|
- name: "Build release distribution"
|
|
run: make release
|
|
env:
|
|
GITHUB_ACTOR: ${{ github.actor }}
|
|
GITHUB_REPOSITORY: ${{ github.repository }}
|
|
GITHUB_TOKEN: ${{ secrets.BOT_PERSONAL_ACCESS_TOKEN }}
|
|
|
|
- name: "Push the updated package description"
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.BOT_PERSONAL_ACCESS_TOKEN }}
|
|
run: git push
|
|
|
|
- name: "Draft a release"
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: true
|
|
prerelease: ${{ env.PRERELEASE_VERSION }}
|
|
target_commitish: ${{ github.ref_name }}
|
|
name: "${{ github.event.inputs.marketingVersion }}${{ github.event.inputs.prereleaseSuffix }}"
|
|
tag_name: "${{ github.event.inputs.marketingVersion }}${{ github.event.inputs.prereleaseSuffix }}"
|
|
fail_on_unmatched_files: true
|
|
token: ${{ secrets.BOT_PERSONAL_ACCESS_TOKEN }}
|
|
body_path: latest-changes.txt
|
|
files: |
|
|
build/Build/Products/Release/Sparkle-*.tar.xz
|
|
build/Build/Products/Release/Sparkle-for-Swift-Package-Manager.zip
|