Files
zed-packager/.gitea/workflows/build-and-release.yml
Rawleenc 0dba8ae99a
All checks were successful
Build and Release Zed Editor / check-version (push) Successful in 3s
Build and Release Zed Editor / build-and-release (push) Successful in 1m21s
feat: switch to /usr layout and add dynamic dependency detection
- Move binaries to /usr/bin and /usr/libexec for system integration
- Add find-deps.sh script to detect required system packages from .so
  files
- Update Makefile to generate Depends field dynamically using apt-file
- Add list-deps target to Makefile for dependency analysis
- Update README with new usage, features, and instructions
- Update CI workflow to install apt-file and update its database
2025-10-14 11:46:28 +02:00

154 lines
5.4 KiB
YAML

name: Build and Release Zed Editor
on:
push:
branches:
- main
schedule:
# Check daily at 2 AM for new versions
- cron: "0 2 * * *"
workflow_dispatch:
# Allow manual triggering
jobs:
check-version:
runs-on: [ubuntu-latest]
outputs:
should_build: ${{ steps.version_check.outputs.should_build }}
zed_version: ${{ steps.version_check.outputs.zed_version }}
zed_version_tag: ${{ steps.version_check.outputs.zed_version_tag }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Check versions
id: version_check
run: |
# Fetch the latest Zed version from GitHub
ZED_VERSION=$(curl -s https://api.github.com/repos/zed-industries/zed/releases/latest | jq -r '.tag_name')
ZED_VERSION_NUMBER=$(echo $ZED_VERSION | sed 's/^v//')
echo "Latest Zed version on GitHub: $ZED_VERSION"
echo "zed_version=$ZED_VERSION_NUMBER" >> $GITHUB_OUTPUT
echo "zed_version_tag=$ZED_VERSION" >> $GITHUB_OUTPUT
# Fetch the latest release on Gitea (if it exists)
GITEA_LATEST=$(curl -s "${{ gitea.api_url }}/repos/${{ gitea.repository }}/releases/latest" | jq -r '.tag_name // "none"')
echo "Latest Gitea release: $GITEA_LATEST"
# Compare versions
if [ "$ZED_VERSION" = "$GITEA_LATEST" ]; then
echo "Versions match ($ZED_VERSION). No build needed."
echo "should_build=false" >> $GITHUB_OUTPUT
else
echo "New version detected: $ZED_VERSION (current: $GITEA_LATEST)"
echo "should_build=true" >> $GITHUB_OUTPUT
fi
build-and-release:
runs-on: [ubuntu-latest]
needs: check-version
if: needs.check-version.outputs.should_build == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y wget curl jq dpkg-dev apt-file
- name: Update apt-file database
run: |
sudo apt-file update
- name: Build DEB package
run: |
make all
- name: Get package info
id: package_info
run: |
VERSION="${{ needs.check-version.outputs.zed_version }}"
DEB_FILE="build/zed-editor_${VERSION}_amd64.deb"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "deb_path=$DEB_FILE" >> $GITHUB_OUTPUT
echo "deb_filename=zed-editor_${VERSION}_amd64.deb" >> $GITHUB_OUTPUT
# Verify that the file exists
if [ ! -f "$DEB_FILE" ]; then
echo "Error: File $DEB_FILE does not exist"
exit 1
fi
echo "Package created: $DEB_FILE"
ls -lh "$DEB_FILE"
- name: Generate release notes
id: release_notes
run: |
ZED_VERSION_TAG="${{ needs.check-version.outputs.zed_version_tag }}"
# Fetch release notes from GitHub
RELEASE_BODY=$(curl -s "https://api.github.com/repos/zed-industries/zed/releases/tags/$ZED_VERSION_TAG" | jq -r '.body // "No release notes available."')
# Create release notes for Gitea
cat > release_notes.md << 'EOF'
## Zed Editor ${{ needs.check-version.outputs.zed_version }}
Unofficial Debian package for [Zed Editor](https://zed.dev/).
### Installation
```bash
# Download and install the package
wget https://git.rawleenc.dev/${{ gitea.repository }}/releases/download/${{ needs.check-version.outputs.zed_version_tag }}/zed-editor_${{ needs.check-version.outputs.zed_version }}_amd64.deb
sudo dpkg -i zed-editor_${{ needs.check-version.outputs.zed_version }}_amd64.deb
# Or install from the APT repository (if configured)
sudo apt update
sudo apt install zed-editor
```
### Upstream Release Notes
EOF
echo "$RELEASE_BODY" >> release_notes.md
# Store the content for use in the release action
echo "notes_content<<EOF" >> $GITHUB_OUTPUT
cat release_notes.md >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create Release and upload assets
uses: akkuman/gitea-release-action@v1
with:
files: ${{ steps.package_info.outputs.deb_path }}
title: "Zed Editor ${{ needs.check-version.outputs.zed_version }}"
tag_name: ${{ needs.check-version.outputs.zed_version_tag }}
body: |
${{ steps.release_notes.outputs.notes_content }}
- name: Upload DEB package to Gitea repository
if: ${{ secrets.PACKAGE_PUB_TOKEN != '' }}
run: |
DEB_FILE="${{ steps.package_info.outputs.deb_path }}"
# Extract the username from the repository
OWNER=$(echo "${{ gitea.repository }}" | cut -d'/' -f1)
# Upload to Gitea Debian repository
curl --fail --user "$OWNER:${{ secrets.PACKAGE_PUB_TOKEN }}" \
--upload-file "$DEB_FILE" \
"${{ gitea.server_url }}/api/packages/$OWNER/debian/pool/stable/main/upload"
echo "Package successfully published to Debian repository"
- name: Upload build artifacts
uses: christopherhx/gitea-upload-artifact@v4
with:
name: zed-editor-${{ needs.check-version.outputs.zed_version }}
path: ${{ steps.package_info.outputs.deb_path }}