Compare commits
3 Commits
release-20
...
release-20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48221b039e | ||
|
|
60354b66d1 | ||
|
|
0433406288 |
@@ -26,22 +26,23 @@ jobs:
|
||||
run: |
|
||||
cd frontend
|
||||
npm install
|
||||
# Run Tailwind manually first
|
||||
npx @tailwindcss/cli -i input.css -o public/tailwind.css
|
||||
# Trunk'ın optimizasyonunu kapalı (0) tutuyoruz çünkü Cargo.toml'daki opt-level='z' zaten o işi yapıyor.
|
||||
trunk build --release
|
||||
|
||||
- name: Build Backend (MIPS)
|
||||
env:
|
||||
# -s ve -w ile binary içindeki gereksiz tüm yükleri siliyoruz.
|
||||
RUSTFLAGS: "-C target-feature=+crt-static -C link-self-contained=no -C link-arg=-msoft-float -C link-arg=-s -C link-arg=-w"
|
||||
# Ensure we are building a fully static binary
|
||||
# -C link-self-contained=no: Let Zig (the linker) handle CRT objects (crt1.o, etc.)
|
||||
RUSTFLAGS: "-C target-feature=+crt-static -C link-self-contained=no -C link-arg=-msoft-float"
|
||||
CFLAGS_mips_unknown_linux_musl: "-msoft-float"
|
||||
run: |
|
||||
# Sadece gerekli özellikleri derliyoruz (Boyut tasarrufu için swagger kapalı)
|
||||
cargo zigbuild -p backend --target mips-unknown-linux-musl --release -Z build-std=std,panic_abort --no-default-features --features push-notifications
|
||||
cd backend
|
||||
cargo zigbuild --target mips-unknown-linux-musl --release -Z build-std=std,panic_abort
|
||||
file target/mips-unknown-linux-musl/release/backend
|
||||
|
||||
- name: Create Release Assets
|
||||
run: |
|
||||
mv target/mips-unknown-linux-musl/release/backend target/mips-unknown-linux-musl/release/vibetorrent-mips
|
||||
- name: Rename Binary
|
||||
run: mv target/mips-unknown-linux-musl/release/backend target/mips-unknown-linux-musl/release/vibetorrent-mips
|
||||
|
||||
- name: Generate Release Tag
|
||||
id: tag
|
||||
@@ -55,10 +56,8 @@ jobs:
|
||||
REPO="admin/vibetorrent"
|
||||
API_URL="${{ gitea.server_url }}/api/v1"
|
||||
|
||||
RELEASE_RESPONSE=$(curl -s -X POST "${API_URL}/repos/${REPO}/releases" \
|
||||
-H "Authorization: token ${RELEASE_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{
|
||||
# Create release
|
||||
RELEASE_RESPONSE=$(curl -s -X POST "${API_URL}/repos/${REPO}/releases" -H "Authorization: token ${RELEASE_TOKEN}" -H "Content-Type: application/json" -d "{
|
||||
\"tag_name\": \"${TAG}\",
|
||||
\"name\": \"Release ${TAG}\",
|
||||
\"body\": \"Automated build from commit ${{ gitea.sha }}\",
|
||||
@@ -67,9 +66,15 @@ jobs:
|
||||
}")
|
||||
|
||||
RELEASE_ID=$(echo "$RELEASE_RESPONSE" | jq -r '.id')
|
||||
if [ "$RELEASE_ID" = "null" ] || [ -z "$RELEASE_ID" ]; then exit 1; fi
|
||||
echo "Release ID: $RELEASE_ID"
|
||||
|
||||
curl -s -X POST "${API_URL}/repos/${REPO}/releases/${RELEASE_ID}/assets?name=vibetorrent-mips" \
|
||||
-H "Authorization: token ${RELEASE_TOKEN}" \
|
||||
-H "Content-Type: application/octet-stream" \
|
||||
--data-binary @target/mips-unknown-linux-musl/release/vibetorrent-mips
|
||||
if [ "$RELEASE_ID" = "null" ] || [ -z "$RELEASE_ID" ]; then
|
||||
echo "Failed to create release:"
|
||||
echo "$RELEASE_RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Upload binary as release asset
|
||||
curl -s -X POST "${API_URL}/repos/${REPO}/releases/${RELEASE_ID}/assets?name=vibetorrent-mips" -H "Authorization: token ${RELEASE_TOKEN}" -H "Content-Type: application/octet-stream" --data-binary @target/mips-unknown-linux-musl/release/vibetorrent-mips
|
||||
|
||||
echo "Release ${TAG} created with binary attached."
|
||||
|
||||
12
Cargo.toml
12
Cargo.toml
@@ -2,19 +2,13 @@
|
||||
members = ["backend", "frontend", "shared"]
|
||||
resolver = "2"
|
||||
|
||||
# Optimize for size (aggressive)
|
||||
[profile.release]
|
||||
# En küçük binary boyutu
|
||||
opt-level = "z"
|
||||
# En derin kod temizliği (dead code elimination)
|
||||
lto = "fat"
|
||||
# En iyi optimizasyon için tek birim derleme
|
||||
lto = true
|
||||
codegen-units = 1
|
||||
# Hata izleme kodlarını atarak yer kazan
|
||||
panic = "abort"
|
||||
# Sembolleri ve hata ayıklama bilgilerini kesin sil
|
||||
strip = true
|
||||
# Artık (incremental) build'i kapat ki optimizasyon tam olsun
|
||||
incremental = false
|
||||
|
||||
[patch.crates-io]
|
||||
coarsetime = { path = "third_party/coarsetime" }
|
||||
coarsetime = { path = "third_party/coarsetime" }
|
||||
|
||||
@@ -4,9 +4,8 @@ version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[features]
|
||||
default = ["push-notifications", "swagger"]
|
||||
default = ["push-notifications"]
|
||||
push-notifications = ["web-push", "openssl"]
|
||||
swagger = ["utoipa-swagger-ui"]
|
||||
|
||||
[dependencies]
|
||||
axum = { version = "0.8", features = ["macros", "ws"] }
|
||||
@@ -30,7 +29,7 @@ shared = { path = "../shared" }
|
||||
thiserror = "2.0.18"
|
||||
dotenvy = "0.15.7"
|
||||
utoipa = { version = "5.4.0", features = ["axum_extras"] }
|
||||
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"], optional = true }
|
||||
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] }
|
||||
web-push = { version = "0.10", default-features = false, features = ["hyper-client"], optional = true }
|
||||
base64 = "0.22"
|
||||
openssl = { version = "0.10", features = ["vendored"], optional = true }
|
||||
|
||||
@@ -32,9 +32,7 @@ use tower_http::{
|
||||
cors::CorsLayer,
|
||||
trace::TraceLayer,
|
||||
};
|
||||
#[cfg(feature = "swagger")]
|
||||
use utoipa::OpenApi;
|
||||
#[cfg(feature = "swagger")]
|
||||
use utoipa_swagger_ui::SwaggerUi;
|
||||
|
||||
#[derive(Clone)]
|
||||
@@ -100,7 +98,6 @@ struct Args {
|
||||
reset_password: Option<String>,
|
||||
}
|
||||
|
||||
#[cfg(feature = "swagger")]
|
||||
#[cfg(feature = "push-notifications")]
|
||||
#[derive(OpenApi)]
|
||||
#[openapi(
|
||||
@@ -149,7 +146,6 @@ struct Args {
|
||||
)]
|
||||
struct ApiDoc;
|
||||
|
||||
#[cfg(feature = "swagger")]
|
||||
#[cfg(not(feature = "push-notifications"))]
|
||||
#[derive(OpenApi)]
|
||||
#[openapi(
|
||||
@@ -466,13 +462,9 @@ async fn main() {
|
||||
}
|
||||
});
|
||||
|
||||
let app = Router::new();
|
||||
|
||||
#[cfg(feature = "swagger")]
|
||||
let app = app.merge(SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", ApiDoc::openapi()));
|
||||
|
||||
// Setup & Auth Routes
|
||||
let app = app
|
||||
let app = Router::new()
|
||||
.merge(SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", ApiDoc::openapi()))
|
||||
// Setup & Auth Routes
|
||||
.route("/api/setup/status", get(handlers::setup::get_setup_status_handler))
|
||||
.route("/api/setup", post(handlers::setup::setup_handler))
|
||||
.route(
|
||||
@@ -524,9 +516,9 @@ async fn main() {
|
||||
.layer(TraceLayer::new_for_http())
|
||||
.layer(
|
||||
CompressionLayer::new()
|
||||
.br(false)
|
||||
.br(true)
|
||||
.gzip(true)
|
||||
.quality(CompressionLevel::Fastest),
|
||||
.quality(CompressionLevel::Best),
|
||||
)
|
||||
.layer(
|
||||
ServiceBuilder::new()
|
||||
|
||||
@@ -51,4 +51,16 @@ web-sys = { version = "0.3", features = [
|
||||
] }
|
||||
shared = { path = "../shared" }
|
||||
tailwind_fuse = "0.3.2"
|
||||
js-sys = "0.3.85"
|
||||
js-sys = "0.3.85"
|
||||
|
||||
[profile.release]
|
||||
# En yüksek seviyede boyut optimizasyonu
|
||||
opt-level = "z"
|
||||
# Tüm kütüphaneler arasında link-time optimizasyonu yapar (Çok etkilidir)
|
||||
lto = true
|
||||
# Kod üretim birimini 1'e düşürerek daha iyi optimizasyon sağlar
|
||||
codegen-units = 1
|
||||
# Hata durumunda stack unwinding yerine doğrudan durur (Kod boyutunu düşürür)
|
||||
panic = "abort"
|
||||
# Sembolleri ve debug bilgilerini siler
|
||||
strip = true
|
||||
|
||||
Reference in New Issue
Block a user