From 3ecd43458051076376eaf16a534757e6511d0e3c Mon Sep 17 00:00:00 2001 From: Neshura Date: Fri, 29 Dec 2023 14:29:57 +0100 Subject: [PATCH] Update release actions, add pull-request check --- .forgejo/workflows/build+release.yml | 92 +++++++++++++++++++--------- .forgejo/workflows/pull-requests.yml | 67 ++++++++++++++++++++ 2 files changed, 131 insertions(+), 28 deletions(-) create mode 100644 .forgejo/workflows/pull-requests.yml diff --git a/.forgejo/workflows/build+release.yml b/.forgejo/workflows/build+release.yml index 8124be4..194fb69 100644 --- a/.forgejo/workflows/build+release.yml +++ b/.forgejo/workflows/build+release.yml @@ -52,29 +52,76 @@ jobs: name: Checking Out Repository Code uses: https://code.forgejo.org/actions/checkout@v3 - - name: Set Up Cargo Cache - uses: actions/cache@v3 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + name: Prepare build environment + run: mkdir dist - name: Compiling To Linux Target run: | cargo build -r - mv target/release/ascendance-of-a-bookworm-bot bookworm-bot-linux-amd64 + mv target/release/${{ github.event.repository.name }} dist/${{ github.event.repository.name }}-linux-amd64 + - + name: Bundle .deb package + run: | + cargo deb + DEBIAN_REF=$(echo ${{ github.ref_name }} | tr - \~) + echo "DEBIAN_REF=$DEBIAN_REF" >> dist/build.env + DEBIAN_REV=-$(cat Cargo.toml | grep -E "(^|\|)revision =" | cut -f2- -d= | tr -d \" | tr -d " ") + echo "DEBIAN_REV=$DEBIAN_REV" >> dist/build.env + mv target/debian/${{ github.event.repository.name }}_"$DEBIAN_REF""$DEBIAN_REV"_amd64.deb dist/${{ github.event.repository.name }}_"$DEBIAN_REF""$DEBIAN_REV"_amd64.deb - name: Uploading Build Artifact uses: actions/upload-artifact@v3 with: - name: bookworm-bot-linux-amd64 - path: bookworm-bot-linux-amd64 + name: release_blobs + path: dist if-no-files-found: error + upload-generic-package: + needs: build + if: success() + runs-on: docker + steps: + - name: Downloading All Build Artifacts + uses: actions/download-artifact@v3 + - name: Upload Binary + run: | + echo 'curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ + --upload-file release_blobs/${{ github.event.repository.name }}-linux-amd64 \ + https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/generic/${{ github.event.repository.name }}/${{ github.ref_name }}/${{ github.event.repository.name }}-linux-amd64' + curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ + --upload-file release_blobs/${{ github.event.repository.name }}-linux-amd64 \ + https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/generic/${{ github.event.repository.name }}/${{ github.ref_name }}/${{ github.event.repository.name }}-linux-amd64 + + upload-debian-package: + needs: build + if: success() + runs-on: docker + steps: + - + name: Downloading All Build Artifacts + uses: actions/download-artifact@v3 + - + name: Upload Debian Package to staging + run: | + source release_blobs/build.env + echo 'curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ + --upload-file release_blobs/${{ github.event.repository.name }}_'"$DEBIAN_REF""$DEBIAN_REV"'_amd64.deb \ + https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/debian/pool/bookworm/staging/upload' + curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ + --upload-file release_blobs/${{ github.event.repository.name }}_"$DEBIAN_REF""$DEBIAN_REV"_amd64.deb \ + https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/debian/pool/bookworm/staging/upload + - + name: Upload Debian Package to main + if: (! contains(github.ref_name, '-rc')) + run: | + source release_blobs/build.env + echo 'curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ + --upload-file release_blobs/${{ github.event.repository.name }}_'"$DEBIAN_REF""$DEBIAN_REV"'_amd64.deb \ + https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/debian/pool/bookworm/main/upload' + curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ + --upload-file release_blobs/${{ github.event.repository.name }}_"$DEBIAN_REF""$DEBIAN_REV"_amd64.deb \ + https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/debian/pool/bookworm/main/upload + upload-release: needs: build if: success() @@ -84,25 +131,14 @@ jobs: name: Downloading All Build Artifacts uses: actions/download-artifact@v3 - - name: Rearrange Artifact Paths - run: | - mkdir release - mv bookworm-bot-linux-amd64/bookworm-bot-linux-amd64 release/bookworm-bot-linux-amd64 - - - name: Upload Artifacts As Generic Packages - run: | - echo 'curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ - --upload-file release/bookworm-bot-linux-amd64 \ - https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/generic/${{ github.event.repository.name }}/${{ github.ref_name }}/bookworm-bot-linux-amd64' - curl -v --user ${{ secrets.FORGEJO_USERNAME }}:${{ secrets.FORGEJO_TOKEN }} \ - --upload-file release/bookworm-bot-linux-amd64 \ - https://forgejo.neshweb.net/api/packages/${{ secrets.FORGEJO_USERNAME }}/generic/${{ github.event.repository.name }}/${{ github.ref_name }}/bookworm-bot-linux-amd64 + name: Filter out env files + run: rm release_blobs/build.env - name: Release New Version uses: actions/forgejo-release@v1 with: direction: upload url: https://forgejo.neshweb.net - release-dir: release + release-dir: release_blobs token: ${{ secrets.FORGEJO_TOKEN }} - tag: ${{ github.ref_name }} + tag: ${{ github.ref_name }} diff --git a/.forgejo/workflows/pull-requests.yml b/.forgejo/workflows/pull-requests.yml new file mode 100644 index 0000000..2e53c8e --- /dev/null +++ b/.forgejo/workflows/pull-requests.yml @@ -0,0 +1,67 @@ +name: 'Build binary file and bundle packages' +author: 'Neshura' + +on: + pull_request: + branches: + - main + +jobs: + test: + runs-on: docker + container: forgejo.neshweb.net/ci-docker-images/rust-node:latest + steps: + - + name: Add Clippy + run: rustup component add clippy + - + name: Checking Out Repository Code + uses: https://code.forgejo.org/actions/checkout@v3 + - + name: Set Up Cargo Cache + uses: actions/cache@v3 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + - + name: Run Clippy + run: cargo clippy + + build: + needs: test + if: success() + runs-on: docker + container: forgejo.neshweb.net/ci-docker-images/rust-node:latest + steps: + - + name: Checking Out Repository Code + uses: https://code.forgejo.org/actions/checkout@v3 + - + name: Prepare build environment + run: mkdir dist + - + name: Compiling To Linux Target + run: | + cargo build -r + mv target/release/${{ github.event.repository.name }} dist/${{ github.event.repository.name }}-linux-amd64 + - + name: Bundle .deb package + run: | + cargo deb + DEBIAN_REF=$(cat Cargo.toml | grep -E "(^|\|)version =" | cut -f2- -d= | tr -d \" | tr -d " " | tr - \~) + echo "DEBIAN_REF=$DEBIAN_REF" >> dist/build.env + DEBIAN_REV=-$(cat Cargo.toml | grep -E "(^|\|)revision =" | cut -f2- -d= | tr -d \" | tr -d " ") + echo "DEBIAN_REV=$DEBIAN_REV" >> dist/build.env + mv target/debian/${{ github.event.repository.name }}_"$DEBIAN_REF""$DEBIAN_REV"_amd64.deb dist/${{ github.event.repository.name }}_"$DEBIAN_REF""$DEBIAN_REV"_amd64.deb + - + name: Uploading Build Artifact + uses: actions/upload-artifact@v3 + with: + name: release_blobs + path: dist + if-no-files-found: error \ No newline at end of file