Release CLI #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release CLI | |
on: | |
push: | |
tags: | |
- "v*" | |
workflow_dispatch: | |
jobs: | |
build-macos: | |
runs-on: macos-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
- name: Install dependencies | |
run: | | |
brew install ffmpeg | |
- name: Build with Metal feature | |
run: | | |
cargo build --release --features metal | |
- name: Create deployment package | |
run: | | |
VERSION=${GITHUB_REF#refs/tags/v} | |
tar -czf screenpipe-${VERSION}-x86_64-apple-darwin.tar.gz -C target/release screenpipe | |
- name: Calculate SHA256 | |
run: | | |
echo "MAC_SHA256=$(shasum -a 256 screenpipe-*.tar.gz | cut -d ' ' -f 1)" >> $GITHUB_ENV | |
- name: Update Homebrew Formula | |
run: | | |
VERSION=${GITHUB_REF#refs/tags/v} | |
sed -i '' "s/version \".*\"/version \"$VERSION\"/" Formula/screenpipe.rb | |
sed -i '' "s/sha256 \".*\"/sha256 \"${{ env.MAC_SHA256 }}\"/" Formula/screenpipe.rb | |
sed -i '' "s/v[0-9.]*\/screenpipe-[0-9.]*-x86_64-apple-darwin/v$VERSION\/screenpipe-$VERSION-x86_64-apple-darwin/" Formula/screenpipe.rb | |
- name: Commit and push Homebrew Formula changes | |
env: | |
GH_TOKEN: ${{ secrets.PAT }} | |
run: | | |
git config user.name github-actions | |
git config user.email [email protected] | |
git add Formula/screenpipe.rb | |
git commit -m "chore: update brew to version ${GITHUB_REF#refs/tags/v}" | |
git push | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: screenpipe-macos | |
path: screenpipe-*.tar.gz | |
build-ubuntu: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libavformat-dev libavfilter-dev libavdevice-dev ffmpeg libasound2-dev libgdk3-dev | |
- name: Set up Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
- name: Build with RPATH | |
run: | | |
export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH" | |
export RUSTFLAGS="-C link-arg=-Wl,-rpath,\$ORIGIN/lib" | |
cargo build --release | |
- name: Copy FFmpeg libraries | |
run: | | |
mkdir -p target/release/lib | |
cp /usr/lib/x86_64-linux-gnu/libavcodec.so* target/release/lib/ | |
cp /usr/lib/x86_64-linux-gnu/libavformat.so* target/release/lib/ | |
cp /usr/lib/x86_64-linux-gnu/libavutil.so* target/release/lib/ | |
cp /usr/lib/x86_64-linux-gnu/libswresample.so* target/release/lib/ | |
cp /usr/lib/x86_64-linux-gnu/libswscale.so* target/release/lib/ | |
cp /usr/lib/x86_64-linux-gnu/libavfilter.so* target/release/lib/ | |
cp /usr/lib/x86_64-linux-gnu/libavdevice.so* target/release/lib/ | |
- name: Create deployment package | |
run: | | |
mkdir -p screenpipe-linux | |
cp target/release/screenpipe screenpipe-linux/screenpipe | |
cp -r target/release/lib screenpipe-linux/ | |
chmod +x screenpipe-linux/screenpipe | |
tar -czvf screenpipe-linux.tar.gz screenpipe-linux | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: screenpipe-linux | |
path: screenpipe-linux.tar.gz | |
build-windows: | |
runs-on: windows-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
profile: minimal | |
override: true | |
- name: Install FFmpeg | |
run: | | |
choco install ffmpeg | |
- name: Build release | |
run: | | |
cargo build --release | |
- name: Download FFmpeg | |
run: | | |
$ProgressPreference = 'SilentlyContinue' | |
Invoke-WebRequest -Uri "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip" -OutFile "ffmpeg.zip" | |
Expand-Archive -Path "ffmpeg.zip" -DestinationPath "ffmpeg" | |
Move-Item -Path "ffmpeg\ffmpeg-master-latest-win64-gpl\bin\*" -Destination "target\release\" | |
- name: Create deployment package | |
run: | | |
$VERSION = $env:GITHUB_REF -replace 'refs/tags/v', '' | |
Compress-Archive -Path target\release\screenpipe.exe, target\release\ffmpeg.exe, target\release\ffprobe.exe -DestinationPath screenpipe-$VERSION-x86_64-pc-windows-msvc.zip | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: screenpipe-windows | |
path: screenpipe-*.zip | |
release: | |
runs-on: ubuntu-latest | |
needs: [build-ubuntu, build-macos, build-windows] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Download Artifacts | |
uses: actions/download-artifact@v2 | |
with: | |
name: screenpipe-linux | |
- name: Download macOS Artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: screenpipe-macos | |
- name: Download Windows Artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: screenpipe-windows | |
- name: Set Version | |
shell: bash | |
run: | | |
echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV | |
echo "RELEASE_VERSION=$(echo ${GITHUB_REF_NAME} | cut -f1 -d-)" >> $GITHUB_ENV | |
- name: Create or update Release | |
env: | |
GH_TOKEN: ${{ secrets.PAT }} | |
run: | | |
gh release create ${{ env.RELEASE_VERSION }} --title ${{ env.RELEASE_VERSION }} --generate-notes | |
gh release upload ${{ env.RELEASE_VERSION }} screenpipe-linux.tar.gz | |
gh release upload ${{ env.RELEASE_VERSION }} screenpipe-macos.tar.gz | |
gh release upload ${{ env.RELEASE_VERSION }} screenpipe-windows.zip |