Skip to content

Commit

Permalink
Automate the release
Browse files Browse the repository at this point in the history
  • Loading branch information
pepicrft committed Jul 23, 2024
1 parent c084a76 commit 8482215
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 5 deletions.
78 changes: 78 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: VirtualOS

on:
push:
branches:
- main

concurrency:
group: release-${{ github.head_ref }}
cancel-in-progress: true

env:
MISE_EXPERIMENTAL: "1"

jobs:
build:
name: "Build"
runs-on: "macos-13"
steps:
- uses: actions/checkout@v4
- id: skip_release
run: |
# Get the commit message of the latest commit
commit_message=$(git log -1 --pretty=format:%s)
echo "Commit message: $commit_message"
# Check if the commit message starts with 'release'
if [[ "$commit_message" == release* ]]; then
echo "SKIP_RELEASE=true" >> $GITHUB_ENV
else
echo "SKIP_RELEASE=false" >> $GITHUB_ENV
fi
- uses: jdx/mise-action@v2
if: steps.skip_release.outputs.SKIP_RELEASE == 'false'
- run: mise run install
if: steps.skip_release.outputs.SKIP_RELEASE == 'false'
- name: bundle
if: steps.skip_release.outputs.SKIP_RELEASE == 'false'
env:
CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APP_SPECIFIC_PASSWORD: ${{ secrets.APP_SPECIFIC_PASSWORD }}
CERTIFICATE_ENCRYPTION_PASSWORD: ${{ secrets.CERTIFICATE_ENCRYPTION_PASSWORD }}
TUIST_CONFIG_TOKEN: ${{ secrets.TUIST_CONFIG_TOKEN }}
run: mise run bundle
- name: Get next version
if: steps.skip_release.outputs.SKIP_RELEASE == 'false'
id: version
run: |
echo "VERSION=$(git cliff --bumped-version)" >> $GITHUB_ENV
- name: Generate changelog
if: steps.skip_release.outputs.SKIP_RELEASE == 'false'
id: changelog
run: |
git-cliff --bump -o CHANGELOG.md
- name: Generate release notes
if: steps.skip_release.outputs.SKIP_RELEASE == 'false'
id: release-notes
run: |
echo "RELEASE_NOTES=$(git cliff --latest)" >> $GITHUB_ENV
- uses: stefanzweifel/git-auto-commit-action@v5
if: steps.skip_release.outputs.SKIP_RELEASE == 'false'
with:
commit_message: release ${{ steps.version.outputs.VERSION }}
- name: Release
uses: softprops/action-gh-release@v2
if: steps.skip_release.outputs.SKIP_RELEASE == 'false'
with:
body: ${{ steps.release-notes.outputs.RELEASE_NOTES }}
draft: false
name: ${{ steps.version.outputs.VERSION }}
tag_name: ${{ steps.version.outputs.VERSION }}
make_latest: true
files: |
build/artifacts/virtualos.zip
build/artifacts/SHASUMS256.txt
build/artifacts/SHASUMS512.txt
7 changes: 3 additions & 4 deletions .github/workflows/virtualos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,15 @@ jobs:
- uses: jdx/mise-action@v2
with:
experimental: true
- name: Run
- run: mise run install
- name: bundle
env:
CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APP_SPECIFIC_PASSWORD: ${{ secrets.APP_SPECIFIC_PASSWORD }}
CERTIFICATE_ENCRYPTION_PASSWORD: ${{ secrets.CERTIFICATE_ENCRYPTION_PASSWORD }}
TUIST_CONFIG_TOKEN: ${{ secrets.TUIST_CONFIG_TOKEN }}
run: |
mise run install
mise run bundle
run: mise run bundle

test:
name: "Test"
Expand Down
15 changes: 14 additions & 1 deletion .mise/tasks/bundle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ CERTIFICATE_PATH=$TMP_DIRECTORY/certificate.p12
BUILD_DIRECTORY=$MISE_PROJECT_ROOT/build
DERIVED_DATA_PATH=$BUILD_DIRECTORY/derived
BUILD_DIRECTORY_BINARY=$DERIVED_DATA_PATH/Build/Products/Release/virtualos
BUILD_ZIP_PATH=$DERIVED_DATA_PATH/virtualos.zip
BUILD_ARTIFACTS_DIRECTORY=$BUILD_DIRECTORY/artifacts
BUILD_ZIP_PATH=$BUILD_ARTIFACTS_DIRECTORY/virtualos.zip
SHASUMS256_FILE=$BUILD_ARTIFACTS_DIRECTORY/SHASUMS256.txt
SHASUMS512_FILE=$BUILD_ARTIFACTS_DIRECTORY/SHASUMS512.txt
TEAM_ID='U6LC622NKF'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
Expand Down Expand Up @@ -45,6 +48,7 @@ codesign --force --options runtime --sign "Developer ID Application: Tuist GmbH

# Notarize
print_status "Submitting virtualos for notarization..."
mkdir -p $BUILD_ARTIFACTS_DIRECTORY
ditto -c -k --keepParent $BUILD_DIRECTORY_BINARY $BUILD_ZIP_PATH
SUBMISSION_ID=$(xcrun notarytool submit "${BUILD_ZIP_PATH}" \
--apple-id "$APPLE_ID" \
Expand Down Expand Up @@ -82,3 +86,12 @@ while true; do
;;
esac
done

# Generathing shasums
print_status "Generating shasums..."
for file in "$BUILD_ARTIFACTS_DIRECTORY"/*; do
if [ -f "$file" ] && [[ $(basename "$file") != SHASUMS* ]]; then
shasum -a 256 "$file" | awk '{print $1 " " FILENAME}' FILENAME=$(basename "$file") >> $SHASUMS256_FILE
shasum -a 512 "$file" | awk '{print $1 " " FILENAME}' FILENAME=$(basename "$file") >> $SHASUMS512_FILE
fi
done

0 comments on commit 8482215

Please sign in to comment.