@envsync-cloud/deploy-cli 0.8.8 → 0.8.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +43 -0
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -4334,6 +4334,7 @@ function domainMap(rootDomain) {
4334
4334
  landing: rootDomain,
4335
4335
  app: `app.${rootDomain}`,
4336
4336
  api: `api.${rootDomain}`,
4337
+ manage_api: `manage-api.${rootDomain}`,
4337
4338
  auth: `auth.${rootDomain}`,
4338
4339
  obs: `obs.${rootDomain}`,
4339
4340
  mail: `mail.${rootDomain}`,
@@ -4411,6 +4412,7 @@ function buildRuntimeEnv2(config, generated) {
4411
4412
  ENVSYNC_LICENSE_ROOT_CA_CERT_PATH: oss ? "" : "/etc/envsync/license/root-ca.pem",
4412
4413
  DB_AUTO_MIGRATE: "false",
4413
4414
  PORT: `${config.services.api_port}`,
4415
+ MANAGEMENT_API_PORT: `${config.services.management_api_port}`,
4414
4416
  DATABASE_HOST: "postgres",
4415
4417
  DATABASE_PORT: "5432",
4416
4418
  DATABASE_USER: "postgres",
@@ -4452,6 +4454,7 @@ function buildRuntimeEnv2(config, generated) {
4452
4454
  OPENFGA_STORE_ID: generated.openfga.store_id,
4453
4455
  OPENFGA_MODEL_ID: generated.openfga.model_id,
4454
4456
  OPENFGA_DB_PASSWORD: generated.secrets.openfga_db_password,
4457
+ MANAGEMENT_API_URL: oss ? "" : publicHttpsUrl(config, hosts.manage_api),
4455
4458
  CLICKSTACK_OPERATOR_EMAIL: generated.clickstack.operator_email,
4456
4459
  CLICKSTACK_OPERATOR_PASSWORD: generated.clickstack.operator_password,
4457
4460
  CLICKSTACK_ACCESS_KEY: generated.clickstack.access_key,
@@ -4541,6 +4544,7 @@ function renderTraefikDynamicConfig(config, generated) {
4541
4544
  const activeSlot = generated.deployment.active_slot;
4542
4545
  const apiServiceName = generated.deployment.maintenance_mode ? "envsync-api-maintenance" : "envsync-api";
4543
4546
  const landingEnabled = !isOssConfig(config);
4547
+ const managementEnabled = !isOssConfig(config);
4544
4548
  const otelAllowedOrigins = [
4545
4549
  ...landingEnabled ? publicHttpsOriginVariants(config, hosts.landing) : [],
4546
4550
  ...publicHttpsOriginVariants(config, hosts.app)
@@ -4602,6 +4606,16 @@ function renderTraefikDynamicConfig(config, generated) {
4602
4606
  " loadBalancer:",
4603
4607
  " servers:",
4604
4608
  " - url: http://api_maintenance:8080",
4609
+ ...managementEnabled ? [
4610
+ " envsync-management-api:",
4611
+ " loadBalancer:",
4612
+ " healthCheck:",
4613
+ " path: /health",
4614
+ " interval: 5s",
4615
+ " timeout: 3s",
4616
+ " servers:",
4617
+ ` - url: http://envsync-management-api:${config.services.management_api_port}`
4618
+ ] : [],
4605
4619
  ...landingEnabled ? [
4606
4620
  " landing:",
4607
4621
  " loadBalancer:",
@@ -4629,6 +4643,14 @@ function renderTraefikDynamicConfig(config, generated) {
4629
4643
  " tls:",
4630
4644
  " certResolver: letsencrypt"
4631
4645
  ] : [],
4646
+ ...managementEnabled ? [
4647
+ " management-api-router:",
4648
+ ` rule: Host(\`${hosts.manage_api}\`)`,
4649
+ " service: envsync-management-api",
4650
+ " entryPoints: [websecure]",
4651
+ " tls:",
4652
+ " certResolver: letsencrypt"
4653
+ ] : [],
4632
4654
  " web-router:",
4633
4655
  ` rule: Host(\`${hosts.app}\`)`,
4634
4656
  " service: web",
@@ -4707,10 +4729,12 @@ function renderFrontendRuntimeConfig(config, generated) {
4707
4729
  const hosts = domainMap(config.domain.root_domain);
4708
4730
  const otelEndpoint = publicHttpsUrl(config, hosts.obs);
4709
4731
  const activeReleaseVersion = generated.deployment.slots[generated.deployment.active_slot].release_version || config.release.version;
4732
+ const managementApiUrl = config.edition === "enterprise" ? publicHttpsUrl(config, hosts.manage_api) : "";
4710
4733
  return `window.__ENVSYNC_RUNTIME_CONFIG__ = ${JSON.stringify({
4711
4734
  apiBaseUrl: publicHttpsUrl(config, hosts.api),
4712
4735
  appBaseUrl: publicHttpsUrl(config, hosts.app),
4713
4736
  authBaseUrl: publicHttpsUrl(config, hosts.auth),
4737
+ managementApiUrl,
4714
4738
  keycloakRealm: config.auth.keycloak_realm,
4715
4739
  webClientId: config.auth.web_client_id,
4716
4740
  apiDocsUrl: publicHttpsUrl(config, hosts.api, "/docs"),
@@ -4772,6 +4796,7 @@ function renderStack(config, runtimeEnv, generated, mode, paths) {
4772
4796
  const includeRuntimeInfra = mode !== "base";
4773
4797
  const includeAppServices = mode === "full";
4774
4798
  const landingEnabled = !isOssConfig(config);
4799
+ const managementEnabled = !isOssConfig(config);
4775
4800
  const apiLicenseVolume = landingEnabled ? "\n volumes:\n - /etc/envsync/license:/etc/envsync/license:ro" : "";
4776
4801
  const deployment = createSteadyApiDeploymentState(config, generated);
4777
4802
  const stackName = config.services.stack_name;
@@ -4983,6 +5008,17 @@ ${renderEnvList({
4983
5008
  - source: otel_agent_conf
4984
5009
  target: /etc/otel-agent.yaml
4985
5010
  networks: [envsync]
5011
+ ${includeRuntimeInfra && managementEnabled ? `
5012
+
5013
+ envsync-management-api:
5014
+ image: ${config.images.management_api}
5015
+ environment:
5016
+ ${renderEnvList({
5017
+ ...apiEnvironment,
5018
+ PORT: `${config.services.management_api_port}`
5019
+ })}
5020
+ ${apiLicenseVolume}
5021
+ networks: [envsync]` : ""}
4986
5022
  ${includeAppServices ? `
4987
5023
 
4988
5024
  api_maintenance:
@@ -5218,6 +5254,7 @@ var DEFAULT_SOURCE_REPO_URL = "https://github.com/EnvSync-Cloud/envsync.git";
5218
5254
  var DEFAULT_ENTERPRISE_LICENSE_SERVER_URL = "https://license.envsync.cloud";
5219
5255
  var MANAGED_VERSIONED_IMAGE_PREFIXES = {
5220
5256
  api: "ghcr.io/envsync-cloud/envsync-api:",
5257
+ management_api: "ghcr.io/envsync-cloud/envsync-management-api:",
5221
5258
  keycloak: "envsync-keycloak:",
5222
5259
  web: "ghcr.io/envsync-cloud/envsync-web-static:",
5223
5260
  landing: "ghcr.io/envsync-cloud/envsync-landing-static:"
@@ -5424,6 +5461,7 @@ function domainMap2(rootDomain) {
5424
5461
  landing: rootDomain,
5425
5462
  app: `app.${rootDomain}`,
5426
5463
  api: `api.${rootDomain}`,
5464
+ manage_api: `manage-api.${rootDomain}`,
5427
5465
  auth: `auth.${rootDomain}`,
5428
5466
  obs: `obs.${rootDomain}`,
5429
5467
  mail: `mail.${rootDomain}`,
@@ -5599,6 +5637,7 @@ function versionedImages(version) {
5599
5637
  assertSemverVersion(version);
5600
5638
  return {
5601
5639
  api: `ghcr.io/envsync-cloud/envsync-api:${version}`,
5640
+ management_api: `ghcr.io/envsync-cloud/envsync-management-api:${version}`,
5602
5641
  keycloak: `envsync-keycloak:${version}`,
5603
5642
  web: `ghcr.io/envsync-cloud/envsync-web-static:${version}`,
5604
5643
  landing: `ghcr.io/envsync-cloud/envsync-landing-static:${version}`
@@ -5664,6 +5703,7 @@ function normalizeConfig(raw) {
5664
5703
  },
5665
5704
  images: {
5666
5705
  api: !raw.images?.api || isManagedVersionedImage(raw.images.api, "api") ? derivedImages.api : raw.images.api,
5706
+ management_api: !raw.images?.management_api || isManagedVersionedImage(raw.images.management_api, "management_api") ? derivedImages.management_api : raw.images.management_api,
5667
5707
  keycloak: !raw.images?.keycloak || isManagedVersionedImage(raw.images.keycloak, "keycloak") ? derivedImages.keycloak : raw.images.keycloak,
5668
5708
  web: !raw.images?.web || isManagedVersionedImage(raw.images.web, "web") ? derivedImages.web : raw.images.web,
5669
5709
  landing: !raw.images?.landing || isManagedVersionedImage(raw.images.landing, "landing") ? derivedImages.landing : raw.images.landing,
@@ -5674,6 +5714,7 @@ function normalizeConfig(raw) {
5674
5714
  services: {
5675
5715
  stack_name: stackName,
5676
5716
  api_port: requireDefined(raw.services?.api_port, "services.api_port"),
5717
+ management_api_port: raw.services?.management_api_port ?? 4001,
5677
5718
  public_http_port: raw.services?.public_http_port ?? 80,
5678
5719
  public_https_port: raw.services?.public_https_port ?? 443,
5679
5720
  clickstack_ui_port: requireDefined(raw.services?.clickstack_ui_port, "services.clickstack_ui_port"),
@@ -7148,6 +7189,7 @@ async function cmdSetup() {
7148
7189
  domain: { root_domain: rootDomain, acme_email: acmeEmail },
7149
7190
  images: {
7150
7191
  api: releaseImages.api,
7192
+ management_api: releaseImages.management_api,
7151
7193
  keycloak: releaseImages.keycloak,
7152
7194
  web: releaseImages.web,
7153
7195
  landing: releaseImages.landing,
@@ -7158,6 +7200,7 @@ async function cmdSetup() {
7158
7200
  services: {
7159
7201
  stack_name: "envsync",
7160
7202
  api_port: 4e3,
7203
+ management_api_port: 4001,
7161
7204
  public_http_port: 80,
7162
7205
  public_https_port: 443,
7163
7206
  clickstack_ui_port: 8080,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@envsync-cloud/deploy-cli",
3
- "version": "0.8.8",
3
+ "version": "0.8.9",
4
4
  "description": "CLI for self-hosted EnvSync deployment on Docker Swarm",
5
5
  "type": "module",
6
6
  "bin": {