3 Commits

Author SHA1 Message Date
e7eb9b8b16 update .gitignore
All checks were successful
Backend Actions / check (push) Successful in 14s
Backend Actions / build (push) Successful in 26s
Backend Actions / test (push) Successful in 35s
2025-07-25 16:28:40 +01:00
726d9c5a09 add scripts for manually packaging and releasing
All checks were successful
Backend Actions / check (push) Successful in 34s
Backend Actions / build (push) Successful in 34s
Backend Actions / test (push) Successful in 42s
2025-07-25 16:25:51 +01:00
7826018d61 Experiment with automatic packaging and releasing
All checks were successful
Backend Actions / check (push) Successful in 12s
Backend Actions / build (push) Successful in 21s
Backend Actions / package (push) Successful in 15s
Backend Actions / test (push) Successful in 29s
use rust-webapp image for release

use npm rather than pnpm

use node 24

use rust latest image

add cache to release

check for tag before releasing

check for tag before releasing

release 0.0.3
2025-07-25 15:35:08 +01:00
6 changed files with 62 additions and 96 deletions

View File

@ -1,74 +0,0 @@
name: Backend Actions
run-name: ${{ gitea.actor }} is running backend actions
on: [push]
# push:
# tags:
# - 'v[0-9]+\.[0-9]+\.[0-9]+'
jobs:
package:
runs-on: rust-latest
depends-on: ["check-tag"]
steps:
- uses: actions/checkout@v4
- name: Check for Tag
run: |-
TAGS="$(git tag --points-at HEAD)"
if [ -n $TAGS ]; then
TAG=$(echo "$TAGS" | grep -E '^v[0-9]+.[0-9]+.[0-9]+$' | sort -V | tail -1)
echo "RELEASE_TAG=$TAG" >> "$GITHUB_ENV"
else
echo "No release tag found"
fi
- name: Create Output Directory
if: ${{ env.RELEASE_TAG != "" }}
run: mkdir package
- name: Setup Node
if: ${{ env.RELEASE_TAG != "" }}
uses: actions/setup-node@v4
with:
node-version: '24'
- name: Load Cache
if: ${{ env.RELEASE_TAG != "" }}
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
backend/target
ui/node_modules
key: ${{ runner.os }}-package-${{ hashFiles('backend/Cargo.lock') }}-${{ hashFiles('ui/package-lock.json') }}
- name: Install UI Dependencies
if: ${{ env.RELEASE_TAG != "" }}
working-directory: ui
run: npm ci
- name: Build UI
if: ${{ env.RELEASE_TAG != "" }}
working-directory: ui
run: npm run build
- name: Copy Output
if: ${{ env.RELEASE_TAG != "" }}
run: cp -rv ui/.output package/ui
- name: Build Backend
if: ${{ env.RELEASE_TAG != "" }}
working-directory: backend
run: cargo build --release --locked
- name: Copy Binary
if: ${{ env.RELEASE_TAG != "" }}
run: cp -v backend/target/release/nuchat package/
- name: Package Output
if: ${{ env.RELEASE_TAG != "" }}
run: tar -cf - package | zstd -19 -T0 -o package.tar.zst
- name: Upload Package
if: ${{ env.RELEASE_TAG != "" }}
run: |-
curl -X PUT \
-H 'Authorization: token ${{ secrets.PACKAGE_API_KEY }}' \
--upload-file package.tar.zst \
"https://git.molloy.xyz/api/packages/fergus-molloy/generic/nuchat/${{ $RELEASE_TAG }}/nuchat.tar.zst"

2
.gitignore vendored
View File

@ -1,3 +1,3 @@
.env
package/
package.tar.zst
*.tar.zst

View File

@ -1,16 +0,0 @@
#!/usr/bin/env bash
mkdir package
pushd backend
cargo build --release
cp -v target/release/nuchat ../package/
popd
pushd ui
pnpm run build
cp -rv .output ../package/ui
popd
tar -cf - package/ | zstd -19 -T0 -o package.tar.zst

36
scripts/environ.sh Normal file
View File

@ -0,0 +1,36 @@
#!/usr/bin/env bash
function check_tags() {
TAGS="$(git tag --points-at HEAD)"
if [ -n "$TAGS" ]; then
TAG=$(echo "$TAGS" | grep -E '^v[0-9]+.[0-9]+.[0-9]+$' | sort -V | tail -1)
else
echo "No release tag found"
return 1
fi
}
function package() {
PACKAGE_DIR="${PACKAGE_DIR:-package}"
mkdir "$PACKAGE_DIR" > /dev/null 2>&1
pushd backend
cargo build --release
cp -v target/release/nuchat ../package/
popd
pushd ui
npm ci
npm run build
cp -rv .output ../package/ui
popd
OUT_FILE="${OUT_FILE:-package.tar.zst}"
if [ -f "$OUT_FILE" ]; then
rm "$OUT_FILE" > /dev/null 2>&1
fi
tar -cf - package/ | zstd -19 -T0 -o "${OUT_DIR}${OUT_FILE}"
}

25
scripts/release.sh Executable file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
. ./scripts/environ.sh
check_tags
if [ -n "$TAG" ]; then
echo "Found tag $TAG"
RELEASE_VERSION=$(echo "$TAG" | sed 's/v//')
echo "Releasing $RELEASE_VERSION"
echo ""
else
exit 1
fi
package
if [ ! -f package.tar.zst ]; then
echo "failed to generate package"
exit 1
fi
curl -s -X PUT \
-H "Authorization: token $GITEA_TOKEN" \
--upload-file "$OUT_DIR$OUT_FILE" \
"https://git.molloy.xyz/api/packages/fergus-molloy/generic/nuchat/$RELEASE_VERSION/nuchat.tar.zst"

5
tags
View File

@ -1,5 +0,0 @@
v0.0.1
v0.0.2
test
v0.0.2_asdf