Skip to content

publish_binary

publish_binary #3

Workflow file for this run

name: Dejavu - Node.js Build and Release Workflow
on:
release:
types: [published]
repository_dispatch:
types: [publish_binary]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository with submodules
uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: Set up Node.js 20 LTS
uses: actions/setup-node@v3
with:
node-version: '20'
cache: 'yarn'
- name: Install dependencies
run: yarn
- name: Extract version from payload
id: get_version
if: ${{ github.event_name == 'repository_dispatch' }}
run: echo "version=${{ github.event.client_payload.version }}" >> $GITHUB_OUTPUT
- name: Get Version For Release
id: get_version_release
if: ${{ github.event_name != 'repository_dispatch' }}
uses: battila7/[email protected]
- name: Determine Version
id: set_version
run: |
if [ -n "${{ steps.get_version.outputs.version }}" ]; then
echo "version=${{ steps.get_version.outputs.version }}" >> $GITHUB_OUTPUT
elif [ -n "${{ steps.get_version_release.outputs.version }}" ]; then
echo "version=${{ steps.get_version_release.outputs.version }}" >> $GITHUB_OUTPUT
else
echo "Error: Version is not set."
exit 1
fi
- name: Build Dejavu App
run: yarn build:dejavu:app
- name: Zip the dist folder
run: |
zip -r dist-${{ steps.set_version.outputs.version }}.zip ./packages/dejavu-main/dist
# Fetch release by tag using GitHub API
- name: Get release by tag
if: ${{ github.event_name == 'repository_dispatch' }}
id: get_release
run: |
release_url=$(curl -s \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/${{ github.repository }}/releases/tags/${{ steps.set_version.outputs.version }}" \
| jq -r '.upload_url')
release_url=$(echo $release_url | sed -e "s/{?name,label}//") # Strip unnecessary part of URL
echo "upload_url=$release_url" >> $GITHUB_OUTPUT
# Use the extracted release upload URL for uploading the asset
- name: Upload dist.zip to GitHub Release
if: ${{ github.event_name == 'repository_dispatch' }}
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./dist-${{ steps.set_version.outputs.version }}.zip
asset_name: dejavu-dist-${{ steps.set_version.outputs.version }}.zip
asset_content_type: application/zip