name: 'Build and Release Binary File' author: 'Neshura' on: push: tags: - '[0-9]+.[0-9]+.[0-9]+' - '[0-9]+.[0-9]+.[0-9]+rc[0-9]+' jobs: run-tests: runs-on: docker steps: - name: Checking Out Repository Code uses: https://code.forgejo.org/actions/checkout@v3 - name: Placeholder run: echo Placeholder Job - name: Check if Version in Cargo.toml matches Tag run: | VERSION=$(cat src-tauri/Cargo.toml | grep -E "(^|\|)version =" | cut -f2- -d= | tr -d \" | tr -d " ") if test $VERSION != "${{ github.ref_name }}"; then echo "Expected Version is: '${{ github.ref_name }}' actual Version is: '$VERSION'"; exit 1 else echo "Version is: '$VERSION'"; fi build-linux: needs: test if: success() runs-on: docker container: rust:latest steps: - name: Storing Debian Codename for Package Upload Job id: store_deb_ver run: | . /etc/os-release echo Debian Codename is: $VERSION_CODENAME echo "debian_codename=$VERSION_CODENAME" >> $GITHUB_OUTPUT - name: Installing Node, NPM run: | apt update apt install -y \ nodejs npm \ libwebkit2gtk-4.0-dev \ build-essential \ libgtk-3-dev \ libayatana-appindicator3-dev \ - name: Installing Yarn, Vite run: npm install --global yarn vite - name: Installing Tauri CLI run: cargo install tauri-cli - name: Checking Out Repository Code uses: https://code.forgejo.org/actions/checkout@v3 - name: Install Yarn Packages run: yarn install - name: Compiling To Linux Target run: | cargo tauri build - name: Renaming Binary + Bundles run: | echo Moving Build Artifacts to Root mkdir artifacts mv -v src-tauri/target/release/comicinfo-editor-v2 artifacts/comicinfo-editor-v2-linux-amd64 mv -v src-tauri/target/release/bundle/deb/*.deb artifacts/comicinfo-editor-v2-${{ github.ref_name }}-amd64.deb mv -v src-tauri/target/release/bundle/appimage/*.AppImage artifacts/comicinfo-editor-v2-${{ github.ref_name }}-amd64.AppImage - name: Uploading Linux Binary Artifact uses: actions/upload-artifact@v3 with: name: linux-amd64-binary path: artifacts/comicinfo-editor-v2-linux-amd64 if-no-files-found: error - name: Uploading Linux Debian Artifact uses: actions/upload-artifact@v3 with: name: linux-amd64-debian path: artifacts/comicinfo-editor-v2-${{ github.ref_name }}-amd64.deb if-no-files-found: error - name: Uploading Linux AppImage Artifact uses: actions/upload-artifact@v3 with: name: linux-amd64-appimage path: artifacts/comicinfo-editor-v2-${{ github.ref_name }}-amd64.AppImage if-no-files-found: error outputs: debian_codename: ${{ steps.store_deb_ver.outputs.DEBIAN_CODENAME }} upload-release: needs: [build-linux] if: success() runs-on: docker steps: - name: Downloading All Build Artifacts uses: actions/download-artifact@v3 with: path: artifacts - name: Debug Upload run: | ls -lap artifacts ls -lap artifacts/linux-amd64-appimage ls -lap artifacts/linux-amd64-appimage/linux-amd64-appimage ls -lap artifacts/linux-amd64-appimage/linux-amd64-appimage/comicinfo-editor-v2-${{ github.ref_name }}-amd64.AppImage - name: Rearrange Artifact Paths run: | mkdir release find artifacts/ -type f -print0 | xargs -0 mv -t release - name: Upload Artifacts As Generic Packages run: | echo 'curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ --upload-file release/comicinfo-editor-v2-linux-amd64 \ https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/generic/${{ github.event.repository.name }}/${{ github.ref_name }}/comicinfo-editor-v2-linux-amd64' curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ --upload-file release/comicinfo-editor-v2-linux-amd64 \ https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/generic/${{ github.event.repository.name }}/${{ github.ref_name }}/comicinfo-editor-v2-linux-amd64 echo 'curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ --upload-file release/comicinfo-editor-v2-${{ github.ref_name }}-amd64.deb \ https://forgejo.example.com/api/packages/${{ secrets.FORGEJO_USERNAME }}/debian/pool/${{ needs.store_deb_ver.outputs.debian_codename }}/main/upload' curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ --upload-file release/comicinfo-editor-v2-${{ github.ref_name }}-amd64.deb \ https://forgejo.example.com/api/packages/${{ secrets.FORGEJO_USERNAME }}/debian/pool/${{ needs.store_deb_ver.outputs.debian_codename }}/main/upload echo 'curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ --upload-file release/comicinfo-editor-v2-${{ github.ref_name }}-amd64.AppImage \ https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/generic/${{ github.event.repository.name }}/${{ github.ref_name }}/comicinfo-editor-v2-${{ github.ref_name }}-amd64.AppImage' curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ --upload-file release/comicinfo-editor-v2-${{ github.ref_name }}-amd64.AppImage \ https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/generic/${{ github.event.repository.name }}/${{ github.ref_name }}/comicinfo-editor-v2-${{ github.ref_name }}-amd64.AppImage - name: Release New Version uses: actions/forgejo-release@v1 with: direction: upload url: https://forgejo.neshweb.net release-dir: release token: ${{ secrets.FORGEJO_TOKEN }} tag: ${{ github.ref_name }}