name: Create Release ZIP on: push: tags: - 'v*' permissions: contents: write jobs: build-and-release: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Build ZIP id: build_zip run: | set -euo pipefail REPO_NAME="${GITHUB_REPOSITORY##*/}" TAG_RAW="${GITHUB_REF##*/}" TAG_SAFE="${TAG_RAW//\//-}" ZIP_NAME="${REPO_NAME}-${TAG_SAFE}.zip" echo "Creating $ZIP_NAME" zip -r "$ZIP_NAME" . -x ".git/*" "node_modules/*" ".github/*" "tests/*" "*.zip" echo "ZIP_NAME=$ZIP_NAME" >> $GITHUB_ENV if [ ! -f "$ZIP_NAME" ]; then echo "Zip file was not created. Listing workspace:" ls -la exit 1 fi echo "zip_name=$ZIP_NAME" >> $GITHUB_OUTPUT echo "ZIP_NAME=$ZIP_NAME" >> $GITHUB_ENV - name: Create GitHub Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref_name }} release_name: ${{ github.ref_name }} body: Release ${{ github.ref_name }} draft: false prerelease: false - name: Upload Release Asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ${{ env.ZIP_NAME }} asset_name: ${{ env.ZIP_NAME }} asset_content_type: application/zip