Skip to content

chore: update beta.yml #13

chore: update beta.yml

chore: update beta.yml #13

Workflow file for this run

name: Build and Release fideo
on:
push:
branches:
- beta
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install PNPM
run: npm install -g pnpm
- name: Install dependencies
run: pnpm install
- name: Get version from package.json
id: get_version
run: echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
shell: bash
- name: Build Electron App
run: |
if [ "${{ runner.os }}" == "Windows" ]; then
pnpm build:win
elif [ "${{ runner.os }}" == "macOS" ]; then
pnpm build:mac
fi
shell: bash
- name: Upload Windows build artifact
if: ${{ runner.os == 'Windows' }}
uses: actions/upload-artifact@v4
with:
name: build-win-${{ env.VERSION }}-beta
path: dist/fideo-${{ env.VERSION }}.exe
- name: Upload macOS build artifacts (x64)
if: ${{ runner.os == 'macOS' }}
uses: actions/upload-artifact@v4
with:
name: build-mac-x64-${{ env.VERSION }}-beta
path: dist/fideo-${{ env.VERSION }}-x64.dmg
- name: Upload macOS build artifacts (arm)
if: ${{ runner.os == 'macOS' }}
uses: actions/upload-artifact@v4
with:
name: build-mac-arm-${{ env.VERSION }}-beta
path: dist/fideo-${{ env.VERSION }}-arm64.dmg
create_release:
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Create release on GitLab
env:
GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }}
GITLAB_PROJECT_ID: ${{ secrets.GITLAB_PROJECT_ID }}
run: |
VERSION=$(node -p -e "require('./package.json').version")
RELEASE_TAG="v$VERSION-beta"
RELEASE_NAME="Release $RELEASE_TAG"
RELEASE_DESCRIPTION="Automated release for version $VERSION (Beta)"
# 检查release是否已存在
existing_release=$(curl --silent --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
"https://gitlab.com/api/v4/projects/$GITLAB_PROJECT_ID/releases/$RELEASE_TAG")
if [ "$(echo $existing_release | jq -r '.message')" != "404 Release Not Found" ]; then
echo "Release $RELEASE_TAG already exists. Skipping creation."
else
# 创建GitLab release
release_response=$(curl --fail --request POST --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
--header "Content-Type: application/json" \
--data "{
\"name\": \"$RELEASE_NAME\",
\"tag_name\": \"$RELEASE_TAG\",
\"description\": \"$RELEASE_DESCRIPTION\"
}" \
"https://gitlab.com/api/v4/projects/$GITLAB_PROJECT_ID/releases")
if [ $? -ne 0 ]; then
echo "Failed to create GitLab release"
echo "$release_response"
exit 1
fi
echo "GitLab release created successfully"
fi
# 上传文件函数
upload_file() {
local file=$1
local asset_name=$2
local asset_link_name=$3
response=$(curl --fail --request POST --header "PRIVATE-TOKEN: $GITLAB_TOKEN" \
--form "file=@$file" \
--form "link_type=package" \
--form "name=$asset_link_name" \
"https://gitlab.com/api/v4/projects/$GITLAB_PROJECT_ID/releases/$RELEASE_TAG/assets/links")
if [ $? -ne 0 ]; then
echo "Failed to upload $asset_name"
echo "$response"
exit 1
fi
echo "Uploaded $asset_name successfully"
}
# 上传文件
upload_file "artifacts/build-win-$VERSION-beta/fideo-$VERSION.exe" "Windows" "Windows Executable"
upload_file "artifacts/build-mac-x64-$VERSION-beta/fideo-$VERSION-x64.dmg" "macOS x64" "macOS x64 Disk Image"
upload_file "artifacts/build-mac-arm-$VERSION-beta/fideo-$VERSION-arm64.dmg" "macOS ARM" "macOS ARM Disk Image"
echo "Assets uploaded successfully"