name: Create new release on push on: push: branches: - master jobs: check-new-release: runs-on: ubuntu-latest timeout-minutes: 5 # Output mapping needed to share data between jobs. Separated jobs to reuse the build-and-push.yml workflow. outputs: has_new_release: ${{ steps.new_release_check.outputs.has_new_release }} version_to_release: ${{ steps.ollama_version.outputs.version_to_release }} next_version_suffix: ${{ steps.new_release_check.outputs.next_version_suffix }} steps: - name: 👀 Get the latest ollama-serverless stable release id: custom_image_release uses: pozetroninc/github-action-get-latest-release@v0.8.0 with: repository: SvenBrnn/runpod-worker-ollama excludes: prerelease,draft - name: 🆕 Get the latest ollama release id: ollama_release uses: dvershinin/lastversion-action@main with: repository: 'ollama/ollama' - name: 🤲 Check if it is a newer ollama release id: new_release_check run: | echo "👀 Latest Codely custom image release: ${{ steps.custom_image_release.outputs.release }}" echo "🆕 Latest ollama release: ${{ steps.ollama_release.outputs.last_version }}" custom_version_orig=$(echo "${{ steps.custom_image_release.outputs.release }}" | sed 's/ollama@//g') custom_version=$(echo "$custom_version_orig" | sed 's/-[0-9]*//g') # Remove the suffix ollama_version=$(echo "${{ steps.ollama_release.outputs.last_version }}" | sed 's/ollama@//g') latest_version=$(echo -e "$custom_version\n$ollama_version" | sort -V | tail -n1) echo "has_new_release=true" >> $GITHUB_OUTPUT # Debug print echo "custom_version_orig=$custom_version_orig" echo "custom_version=$custom_version" echo "ollama_version=$ollama_version" # Calculate the next_version_suffix to compare with the new release # If the custom_version does not equal the latest_version, then it is a new release and we don't need a suffix if [ "$custom_version" != "$ollama_version" ]; then echo "next_version_suffix=" >> $GITHUB_OUTPUT else # If the custom_version equals the latest_version, then it is a new release and we need to increment the suffix # If there is no suffix present we start with 1 # Check if we have a - first has_suffix=$(echo "$custom_version_orig" | sed 's/[^-]//g') if [ -z "$has_suffix" ]; then suffix="-1" else suffix=$(echo "$custom_version_orig" | grep -o '[0-9]*$') suffix="-$((suffix + 1))" fi echo "next_version_suffix=$suffix" echo "next_version_suffix=$suffix" >> $GITHUB_OUTPUT fi - name: 🔡 Remove 'ollama@' from release name to get the version id: ollama_version if: steps.new_release_check.outputs.has_new_release == 'true' run: | version_to_release=$(echo "${{ steps.ollama_release.outputs.last_version }}" | sed 's/ollama@//g') echo "version_to_release=$version_to_release" >> $GITHUB_OUTPUT echo "next_version_suffix=${{ steps.new_release_check.outputs.next_version_suffix }}" >> $GITHUB_OUTPUT build-and-push-new-docker-image: needs: check-new-release if: ${{ needs.check-new-release.outputs.has_new_release == 'true' }} uses: ./.github/workflows/build-and-push.yml secrets: inherit with: ollama_version: ${{ needs.check-new-release.outputs.version_to_release }} next_version_suffix: ${{ needs.check-new-release.outputs.next_version_suffix }}