Fix Release action

This commit is contained in:
Alexandr Bogomiakov
2025-07-24 01:12:34 +03:00
parent e5ac8fbc02
commit fe79905de5

View File

@@ -103,74 +103,48 @@ jobs:
path: target/${{ matrix.build_target }}/release/${{ env.BINARY_NAME }}* path: target/${{ matrix.build_target }}/release/${{ env.BINARY_NAME }}*
release: release:
name: Create Release Page name: Create Release and Upload Assets
if: always() # Always run even if some builds fail if: always() # Always run even if some builds fail
needs: build needs: build
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
permissions: permissions:
contents: write contents: write
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Create Release
id: create_release - name: Download all artifacts
uses: actions/create-release@v1 uses: actions/download-artifact@v4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
tag_name: ${{ github.ref }} path: artifacts/
release_name: Release ${{ github.ref }}
- name: Prepare release assets
run: |
mkdir -p release-assets/
find artifacts/ -type f -name "${{ env.BINARY_NAME }}*" -exec cp {} release-assets/ \;
cd release-assets/
# Rename files to include platform in filename
for file in *; do
if [[ -f "$file" ]]; then
# Extract platform from parent directory name in artifacts
platform=$(find ../artifacts/ -name "$file" -printf "%h\n" | sed 's|.*/||' | sed 's|khm_||')
if [[ "$file" == *".exe" ]]; then
mv "$file" "${{ env.BINARY_NAME }}_${platform}.exe"
else
mv "$file" "${{ env.BINARY_NAME }}_${platform}"
fi
fi
done
ls -la
- name: Create Release
uses: softprops/action-gh-release@v2
with:
name: Release ${{ github.ref_name }}
files: release-assets/*
draft: false draft: false
prerelease: false prerelease: false
generate_release_notes: true
upload: fail_on_unmatched_files: false
name: Upload Release Assets
if: always() # Always run even if some builds fail
needs: release
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
# - os: ubuntu-latest
# platform_name: linux-amd64-musl
- os: ubuntu-latest
platform_name: linux-amd64
- os: windows-latest
platform_name: windows-amd64
- os: macos-latest
platform_name: macos-arm64
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
name: Download ${{ matrix.platform_name }} artifact
with:
name: ${{ env.BINARY_NAME }}_${{ matrix.platform_name }}
path: ${{ env.BINARY_NAME }}_${{ matrix.platform_name }}
continue-on-error: true # Continue if artifact doesn't exist
- name: Check if artifact exists
id: check_artifact
shell: bash
run: |
if [ -f "${{ env.BINARY_NAME }}_${{ matrix.platform_name }}/${{ env.BINARY_NAME }}${{ matrix.platform_name == 'windows-amd64' && '.exe' || '' }}" ]; then
echo "artifact_exists=true" >> $GITHUB_OUTPUT
else
echo "artifact_exists=false" >> $GITHUB_OUTPUT
fi
- name: Upload Release Asset
if: steps.check_artifact.outputs.artifact_exists == 'true' && needs.release.outputs.upload_url != ''
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.upload_url }}
asset_path: ${{ env.BINARY_NAME }}_${{ matrix.platform_name }}/${{ env.BINARY_NAME }}${{ matrix.platform_name == 'windows-amd64' && '.exe' || '' }}
asset_name: ${{ env.BINARY_NAME }}_${{ matrix.platform_name }}${{ matrix.platform_name == 'windows-amd64' && '.exe' || '' }}
asset_content_type: application/octet-stream
# build_docker: # build_docker:
# name: Build and Publish Docker Image # name: Build and Publish Docker Image