Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 56106622b2 | |||
| 21c11446d7 | |||
| 0093128001 | |||
| 4d80c71f92 |
1
.github/workflows/release.yaml
vendored
1
.github/workflows/release.yaml
vendored
@@ -34,3 +34,4 @@ jobs:
|
|||||||
context: .
|
context: .
|
||||||
push: true
|
push: true
|
||||||
tags: git.kaisei.app/amatsugu/aoba:${{ env.VERSION }}
|
tags: git.kaisei.app/amatsugu/aoba:${{ env.VERSION }}
|
||||||
|
build-args: VERSION=${{ env.VERSION }}
|
||||||
|
|||||||
1
AobaClient/.env
Normal file
1
AobaClient/.env
Normal file
@@ -0,0 +1 @@
|
|||||||
|
APP_VERSION=Debug
|
||||||
4923
AobaClient/Cargo.lock
generated
4923
AobaClient/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -19,6 +19,7 @@ web-sys = { version = "0.3.77", features = ["Storage", "Window"] }
|
|||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
tonic-build = { version = "*", default-features = false, features = ["prost"] }
|
tonic-build = { version = "*", default-features = false, features = ["prost"] }
|
||||||
|
dotenv = "0.15.0"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["web"]
|
default = ["web"]
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
use dotenv::dotenv;
|
||||||
|
use std::env;
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::Write;
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
tonic_build::configure()
|
tonic_build::configure()
|
||||||
.build_server(false)
|
.build_server(false)
|
||||||
@@ -6,6 +11,26 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
&["../AobaServer/Proto/Aoba.proto", "../AobaServer/Proto/Auth.proto"],
|
&["../AobaServer/Proto/Aoba.proto", "../AobaServer/Proto/Auth.proto"],
|
||||||
&["../AobaServer/Proto/"],
|
&["../AobaServer/Proto/"],
|
||||||
)?;
|
)?;
|
||||||
|
forward_env();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn forward_env() {
|
||||||
|
let dest_path = "./src/env.rs";
|
||||||
|
let mut f = File::create(&dest_path).unwrap();
|
||||||
|
f.write_all(b"// This file is automatically generated by build.rs\n\n")
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
dotenv().ok();
|
||||||
|
for (key, value) in env::vars() {
|
||||||
|
if key.starts_with("APP_") {
|
||||||
|
f.write_all("#[allow(dead_code)]\n".as_bytes()).unwrap();
|
||||||
|
let line = format!(
|
||||||
|
"pub const {}: &'static str = \"{}\";\n",
|
||||||
|
key,
|
||||||
|
value.replace("\"", "\\\"")
|
||||||
|
);
|
||||||
|
f.write_all(line.as_bytes()).unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
use std::env;
|
||||||
|
|
||||||
use dioxus::prelude::*;
|
use dioxus::prelude::*;
|
||||||
|
|
||||||
use crate::{Route, contexts::AuthContext};
|
use crate::{Route, contexts::AuthContext, env::APP_VERSION};
|
||||||
|
|
||||||
const NAV_CSS: Asset = asset!("/assets/style/nav.scss");
|
const NAV_CSS: Asset = asset!("/assets/style/nav.scss");
|
||||||
const NAV_ICON: Asset = asset!("/assets/favicon.ico");
|
const NAV_ICON: Asset = asset!("/assets/favicon.ico");
|
||||||
@@ -47,9 +49,10 @@ pub fn Widgets() -> Element {
|
|||||||
#[component]
|
#[component]
|
||||||
pub fn Utils() -> Element {
|
pub fn Utils() -> Element {
|
||||||
let mut auth_context = use_context::<AuthContext>();
|
let mut auth_context = use_context::<AuthContext>();
|
||||||
|
let version = APP_VERSION;
|
||||||
rsx! {
|
rsx! {
|
||||||
div { class: "utils",
|
div { class: "utils",
|
||||||
|
div { "{version}" }
|
||||||
div { onclick: move |_| auth_context.logout(), "Logout" }
|
div { onclick: move |_| auth_context.logout(), "Logout" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
AobaClient/src/env.rs
Normal file
4
AobaClient/src/env.rs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
// This file is automatically generated by build.rs
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub const APP_VERSION: &'static str = "Debug";
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
pub mod components;
|
pub mod components;
|
||||||
pub mod contexts;
|
pub mod contexts;
|
||||||
|
mod env;
|
||||||
mod layouts;
|
mod layouts;
|
||||||
pub mod models;
|
pub mod models;
|
||||||
pub mod route;
|
pub mod route;
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ RUN apt install -y protobuf-compiler libprotobuf-dev ffmpeg
|
|||||||
RUN curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
|
RUN curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
|
||||||
RUN cargo binstall dioxus-cli --root /.cargo -y --force
|
RUN cargo binstall dioxus-cli --root /.cargo -y --force
|
||||||
ENV PATH="/.cargo/bin:$PATH"
|
ENV PATH="/.cargo/bin:$PATH"
|
||||||
|
ARG VERSION
|
||||||
|
ENV APP_VERSION=$VERSION
|
||||||
# Create the final bundle folder. Bundle always executes in release mode with optimizations enabled
|
# Create the final bundle folder. Bundle always executes in release mode with optimizations enabled
|
||||||
RUN dx bundle --platform web
|
RUN dx bundle --platform web
|
||||||
|
|
||||||
@@ -56,7 +57,8 @@ RUN dotnet publish "./AobaServer.csproj" -c $BUILD_CONFIGURATION -o /app/publish
|
|||||||
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
|
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
|
||||||
FROM base AS final
|
FROM base AS final
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY --from=publish /app/publish .
|
COPY --from=publish /app/publish .
|
||||||
COPY --from=client-builder /bin/ffmpeg /bin/ffprobe /bin/ffplay /usr/bin/
|
COPY --from=client-builder /bin/ffmpeg /bin/ffprobe /bin/ffplay /usr/bin/
|
||||||
|
ENV APP_VERSION=$VERSION
|
||||||
ENTRYPOINT ["dotnet", "AobaServer.dll"]
|
ENTRYPOINT ["dotnet", "AobaServer.dll"]
|
||||||
|
|||||||
Reference in New Issue
Block a user