From 169bbea6aeda13d9b7d3c69a9d1f85be100f0774 Mon Sep 17 00:00:00 2001 From: Neshura Date: Sat, 13 Jan 2024 16:13:10 +0100 Subject: [PATCH] Add build + pull request Actions --- .forgejo/workflows/build+release.yml | 107 +++++++++++++++++++++++++++ .forgejo/workflows/pull-requests.yml | 58 +++++++++++++++ 2 files changed, 165 insertions(+) create mode 100644 .forgejo/workflows/build+release.yml create mode 100644 .forgejo/workflows/pull-requests.yml diff --git a/.forgejo/workflows/build+release.yml b/.forgejo/workflows/build+release.yml new file mode 100644 index 0000000..537bef4 --- /dev/null +++ b/.forgejo/workflows/build+release.yml @@ -0,0 +1,107 @@ +name: 'Build and release binary file and packages' +author: 'Neshura' + +on: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + - '[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+' +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 + - + name: Check if Version in Cargo.toml matches Tag + run: | + VERSION=$(cat 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: + 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: Uploading Build Artifact + uses: actions/upload-artifact@v3 + with: + 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 + + create-release: + needs: build + if: success() + runs-on: docker + steps: + - + name: Downloading All Build Artifacts + uses: actions/download-artifact@v3 + - + 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_blobs + token: ${{ secrets.FORGEJO_TOKEN }} + tag: ${{ github.ref_name }} \ No newline at end of file diff --git a/.forgejo/workflows/pull-requests.yml b/.forgejo/workflows/pull-requests.yml new file mode 100644 index 0000000..61f6c50 --- /dev/null +++ b/.forgejo/workflows/pull-requests.yml @@ -0,0 +1,58 @@ +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: 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