mirror of
https://github.com/unraid/api.git
synced 2026-01-06 08:39:54 -06:00
feat: split plugin builds
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced containerized plugin deployment support with updated Docker Compose configurations. - Added continuous build watch modes for API, web, and UI components for smoother development iterations. - Added a new job for API testing in the CI/CD workflow. - Added a new shell script to determine the local host's IP address for Docker configurations. - Introduced a new entry point and HTTP server setup in the plugin's Docker environment. - Added new scripts for building and watching plugin changes in real-time. - Added a new script for building the project in watch mode for the API and UI components. - **Improvements** - Streamlined the plugin installation process and refined release workflows for a more reliable user experience. - Enhanced overall CI/CD pipelines to ensure efficient, production-ready deployments. - Updated artifact upload paths and job definitions for clarity and efficiency. - Implemented new utility functions for better URL management and changelog generation. - Modified the `.dockerignore` file to ignore all contents within the `node_modules` directory. - Added new constants and functions for managing plugin paths and configurations. - Updated the build process in the Dockerfile to focus on release operations. - **Tests** - Expanded automated testing to validate environment setups and build stability, ensuring higher reliability during updates. - Introduced new test suites for validating plugin environment setups and configurations. - Added tests for validating environment variables and handling of manifest files. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Michael Datelle <mdatelle@icloud.com> Co-authored-by: mdatelle <mike@datelle.net> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Pujit Mehrotra <pujit@lime-technology.com>
This commit is contained in:
48
plugin/builder/cli/setup-txz-environment.ts
Normal file
48
plugin/builder/cli/setup-txz-environment.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import { join } from "path";
|
||||
import { z } from "zod";
|
||||
import { Command } from "commander";
|
||||
import { startingDir } from "../utils/consts";
|
||||
import { deployDir } from "../utils/paths";
|
||||
|
||||
const txzEnvSchema = z.object({
|
||||
ci: z.boolean().optional().default(false),
|
||||
skipValidation: z
|
||||
.string()
|
||||
.optional()
|
||||
.default("false")
|
||||
.refine((v) => v === "true" || v === "false", "Must be true or false"),
|
||||
compress: z.string().optional().default("1"),
|
||||
txzOutputDir: z.string().optional().default(join(startingDir, deployDir)),
|
||||
});
|
||||
|
||||
export type TxzEnv = z.infer<typeof txzEnvSchema>;
|
||||
|
||||
export const validateTxzEnv = async (
|
||||
envArgs: Record<string, any>
|
||||
): Promise<TxzEnv> => {
|
||||
const validatedEnv = txzEnvSchema.parse(envArgs);
|
||||
|
||||
if ("skipValidation" in validatedEnv) {
|
||||
console.warn("skipValidation is true, skipping validation");
|
||||
}
|
||||
|
||||
return validatedEnv;
|
||||
};
|
||||
|
||||
export const setupTxzEnv = async (argv: string[]): Promise<TxzEnv> => {
|
||||
// CLI setup for TXZ environment
|
||||
const program = new Command();
|
||||
|
||||
program
|
||||
.option("--skip-validation", "Skip validation", "false")
|
||||
.option("--ci", "CI mode", process.env.CI === "true")
|
||||
.option("--compress, -z", "Compress level", "1")
|
||||
|
||||
.parse(argv);
|
||||
|
||||
const options = program.opts();
|
||||
|
||||
const env = await validateTxzEnv(options);
|
||||
console.log("TXZ environment setup successfully:", env);
|
||||
return env;
|
||||
};
|
||||
Reference in New Issue
Block a user