Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
f6309f600c | |||
7477704905 | |||
db89d86242 | |||
b74ce05845 | |||
79db68a4a2 | |||
5a3ddcf39b | |||
fe6bfc0a83 | |||
36a481ecd1 | |||
f7b2e203ed | |||
27c98c4e32 | |||
79257908d0 | |||
b5ca898eac | |||
53ade28931 | |||
fff4c7642d | |||
dafe6574cc | |||
b70dad4996 | |||
17b0b50fbd | |||
91a0272ab3 |
@ -10,7 +10,7 @@ env:
|
|||||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git
|
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git
|
||||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||||
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
# NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
||||||
# NPMCI_LOGIN_DOCKER_GITEA: ${{ github.server_url }}|${{ gitea.repository_owner }}|${{ secrets.GITEA_TOKEN }}
|
# NPMCI_LOGIN_DOCKER_GITEA: ${{ github.server_url }}|${{ gitea.repository_owner }}|${{ secrets.GITEA_TOKEN }}
|
||||||
NPMCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.NPMCI_LOGIN_DOCKER_DOCKERREGISTRY }}
|
NPMCI_LOGIN_DOCKER_DOCKERREGISTRY: ${{ secrets.NPMCI_LOGIN_DOCKER_DOCKERREGISTRY }}
|
||||||
NPMCI_SECRET01: ${{ secrets.NPMCI_SECRET01 }}
|
NPMCI_SECRET01: ${{ secrets.NPMCI_SECRET01 }}
|
||||||
@ -90,8 +90,7 @@ jobs:
|
|||||||
npmci docker login
|
npmci docker login
|
||||||
npmci docker build
|
npmci docker build
|
||||||
npmci docker test
|
npmci docker test
|
||||||
# npmci docker push
|
npmci docker push code.foss.global
|
||||||
npmci docker push
|
|
||||||
|
|
||||||
metadata:
|
metadata:
|
||||||
needs: test
|
needs: test
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# gitzone dockerfile_service
|
# gitzone dockerfile_service
|
||||||
## STAGE 1 // BUILD
|
## STAGE 1 // BUILD
|
||||||
FROM code.foss.global/hosttoday/ht-docker-node:npmci as node1
|
FROM code.foss.global/host.today/ht-docker-node:npmci as node1
|
||||||
COPY ./ /app
|
COPY ./ /app
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
ARG NPMCI_TOKEN_NPM2
|
ARG NPMCI_TOKEN_NPM2
|
||||||
@ -12,7 +12,7 @@ RUN pnpm run build
|
|||||||
|
|
||||||
# gitzone dockerfile_service
|
# gitzone dockerfile_service
|
||||||
## STAGE 2 // install production
|
## STAGE 2 // install production
|
||||||
FROM code.foss.global/hosttoday/ht-docker-node:npmci as node2
|
FROM code.foss.global/host.today/ht-docker-node:npmci as node2
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=node1 /app /app
|
COPY --from=node1 /app /app
|
||||||
RUN rm -rf .pnpm-store
|
RUN rm -rf .pnpm-store
|
||||||
@ -24,7 +24,7 @@ RUN rm -rf node_modules/ && pnpm install --prod
|
|||||||
|
|
||||||
|
|
||||||
## STAGE 3 // rebuild dependencies for alpine
|
## STAGE 3 // rebuild dependencies for alpine
|
||||||
FROM code.foss.global/hosttoday/ht-docker-node:alpinenpmci as node3
|
FROM code.foss.global/host.today/ht-docker-node:alpine_npmci as node3
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=node2 /app /app
|
COPY --from=node2 /app /app
|
||||||
ARG NPMCI_TOKEN_NPM2
|
ARG NPMCI_TOKEN_NPM2
|
||||||
@ -34,7 +34,7 @@ RUN pnpm config set store-dir .pnpm-store
|
|||||||
RUN pnpm rebuild -r
|
RUN pnpm rebuild -r
|
||||||
|
|
||||||
## STAGE 4 // the final production image with all dependencies in place
|
## STAGE 4 // the final production image with all dependencies in place
|
||||||
FROM code.foss.global/hosttoday/ht-docker-node:alpine as node4
|
FROM code.foss.global/host.today/ht-docker-node:alpine as node4
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=node3 /app /app
|
COPY --from=node3 /app /app
|
||||||
|
|
||||||
|
52
changelog.md
52
changelog.md
@ -1,5 +1,57 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2024-11-18 - 4.4.0 - feat(api-client)
|
||||||
|
Add static method getImageById for Image class in api-client
|
||||||
|
|
||||||
|
- Introduced a static method getImageById in the Image class.
|
||||||
|
- Updated CloudlyApiClient to include the getImageById method in the images interface.
|
||||||
|
|
||||||
|
## 2024-11-18 - 4.3.21 - fix(interfaces)
|
||||||
|
Remove deprecated deployment directive and update related interfaces
|
||||||
|
|
||||||
|
- Removed IDeploymentDirective from data and requests.
|
||||||
|
- Updated IDeployment to remove references to directives.
|
||||||
|
- Changed IRequest_Any_Cloudly_GetClusterConfig to return services instead of deployment directives.
|
||||||
|
- Removed deploymentDirectiveIds from IService data structure.
|
||||||
|
|
||||||
|
## 2024-11-18 - 4.3.20 - fix(apiclient)
|
||||||
|
Ensure mandatory parameter in CloudlyApiClient constructor
|
||||||
|
|
||||||
|
- Made the 'optionsArg' parameter mandatory in the constructor of CloudlyApiClient class.
|
||||||
|
|
||||||
|
## 2024-11-18 - 4.3.19 - fix(docker)
|
||||||
|
Fix improper Docker push command preventing push to the correct registry.
|
||||||
|
|
||||||
|
- Corrected the docker push command in the '.gitea/workflows/docker_tags.yaml' file to push images to the 'code.foss.global' registry.
|
||||||
|
|
||||||
|
## 2024-11-17 - 4.3.18 - fix(docker_tags)
|
||||||
|
Updated Docker configuration to include NPM tokens.
|
||||||
|
|
||||||
|
- Restored NPMCI_TOKEN_NPM and NPMCI_TOKEN_NPM2 environment variables in docker_tags.yaml for authentication purposes.
|
||||||
|
|
||||||
|
## 2024-11-17 - 4.3.17 - fix(Dockerfile)
|
||||||
|
Corrected docker base image tag in Dockerfile for alpine compatibility.
|
||||||
|
|
||||||
|
- Updated Dockerfile to use the correct base image tag for Alpine.
|
||||||
|
- Resolved any potential build issues related to incorrect image tag usage.
|
||||||
|
|
||||||
|
## 2024-11-17 - 4.3.16 - fix(infrastructure)
|
||||||
|
Correct Docker image path in Dockerfile for improved build consistency.
|
||||||
|
|
||||||
|
- Dockerfile: Updated base image paths from 'code.foss.global/hosttoday/ht-docker-node' to 'code.foss.global/host.today/ht-docker-node'.
|
||||||
|
|
||||||
|
## 2024-11-17 - 4.3.15 - fix(project setup)
|
||||||
|
fixed incorrect configuration in npmextra.json
|
||||||
|
|
||||||
|
- Removed unnecessary 'dockerBuildargEnvMap' entry for NPMCI_TOKEN_NPM2.
|
||||||
|
- Corrected the githost and gitscope in gitzone module configuration.
|
||||||
|
- Updated the license field to reflect the correct license.
|
||||||
|
|
||||||
|
## 2024-11-16 - 4.3.14 - fix(docker tags)
|
||||||
|
Comment out unused secret variables in docker_tags.yaml
|
||||||
|
|
||||||
|
- Modified docker_tags.yaml to comment out unused secret variables related to NPM and GitHub tokens.
|
||||||
|
|
||||||
## 2024-11-16 - 4.3.13 - fix(package)
|
## 2024-11-16 - 4.3.13 - fix(package)
|
||||||
Updated package dependencies
|
Updated package dependencies
|
||||||
|
|
||||||
|
@ -6,19 +6,17 @@
|
|||||||
"dockerRegistryRepoMap": {
|
"dockerRegistryRepoMap": {
|
||||||
"code.foss.global": "serve.zone/cloudly"
|
"code.foss.global": "serve.zone/cloudly"
|
||||||
},
|
},
|
||||||
"dockerBuildargEnvMap": {
|
"dockerBuildargEnvMap": {}
|
||||||
"NPMCI_TOKEN_NPM2": "NPMCI_TOKEN_NPM2"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"gitzone": {
|
"gitzone": {
|
||||||
"projectType": "service",
|
"projectType": "service",
|
||||||
"module": {
|
"module": {
|
||||||
"githost": "gitlab.com",
|
"githost": "code.foss.global",
|
||||||
"gitscope": "servezone/private",
|
"gitscope": "serve.zone",
|
||||||
"gitrepo": "cloudly",
|
"gitrepo": "cloudly",
|
||||||
"description": "A comprehensive tool for managing containerized applications across multiple cloud providers using Docker Swarmkit, featuring web, CLI, and API interfaces.",
|
"description": "A comprehensive tool for managing containerized applications across multiple cloud providers using Docker Swarmkit, featuring web, CLI, and API interfaces.",
|
||||||
"npmPackagename": "@serve.zone/cloudly",
|
"npmPackagename": "@serve.zone/cloudly",
|
||||||
"license": "UNLICENSED",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"multi-cloud management",
|
"multi-cloud management",
|
||||||
"Docker Swarmkit",
|
"Docker Swarmkit",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@serve.zone/cloudly",
|
"name": "@serve.zone/cloudly",
|
||||||
"version": "4.3.13",
|
"version": "4.4.0",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "A comprehensive tool for managing containerized applications across multiple cloud providers using Docker Swarmkit, featuring web, CLI, and API interfaces.",
|
"description": "A comprehensive tool for managing containerized applications across multiple cloud providers using Docker Swarmkit, featuring web, CLI, and API interfaces.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@serve.zone/cloudly',
|
name: '@serve.zone/cloudly',
|
||||||
version: '4.3.13',
|
version: '4.4.0',
|
||||||
description: 'A comprehensive tool for managing containerized applications across multiple cloud providers using Docker Swarmkit, featuring web, CLI, and API interfaces.'
|
description: 'A comprehensive tool for managing containerized applications across multiple cloud providers using Docker Swarmkit, featuring web, CLI, and API interfaces.'
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ export class CloudlyApiClient {
|
|||||||
plugins.servezoneInterfaces.requests.server.IRequest_TriggerServerAction['request']
|
plugins.servezoneInterfaces.requests.server.IRequest_TriggerServerAction['request']
|
||||||
>();
|
>();
|
||||||
|
|
||||||
constructor(optionsArg?: {
|
constructor(optionsArg: {
|
||||||
registerAs: TClientType;
|
registerAs: TClientType;
|
||||||
cloudlyUrl?: string;
|
cloudlyUrl?: string;
|
||||||
}) {
|
}) {
|
||||||
@ -157,6 +157,9 @@ export class CloudlyApiClient {
|
|||||||
|
|
||||||
public images = {
|
public images = {
|
||||||
// Images
|
// Images
|
||||||
|
getImageById: async (imageIdArg: string) => {
|
||||||
|
return Image.getImageById(this, imageIdArg);
|
||||||
|
},
|
||||||
getImages: async () => {
|
getImages: async () => {
|
||||||
return Image.getImages(this);
|
return Image.getImages(this);
|
||||||
},
|
},
|
||||||
|
@ -18,6 +18,19 @@ export class Image implements plugins.servezoneInterfaces.data.IImage {
|
|||||||
return resultImages;
|
return resultImages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async getImageById(cloudlyClientRef: CloudlyApiClient, imageIdArg: string) {
|
||||||
|
const getImageByIdTR = cloudlyClientRef.typedsocketClient.createTypedRequest<plugins.servezoneInterfaces.requests.image.IRequest_GetImage>(
|
||||||
|
'getImage'
|
||||||
|
);
|
||||||
|
const response = await getImageByIdTR.fire({
|
||||||
|
identity: cloudlyClientRef.identity,
|
||||||
|
imageId: imageIdArg,
|
||||||
|
});
|
||||||
|
const newImage = new Image(cloudlyClientRef);
|
||||||
|
Object.assign(newImage, response.image);
|
||||||
|
return newImage;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* creates a new image
|
* creates a new image
|
||||||
*/
|
*/
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import * as plugins from '../plugins.js';
|
import * as plugins from '../plugins.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* results from a DeploymentDirective
|
* a deployment happens when a service is deployed
|
||||||
* tracks the status of a deployment
|
* tracks the status of a deployment
|
||||||
*/
|
*/
|
||||||
export interface IDeployment {
|
export interface IDeployment {
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
import type { IServiceRessources } from "./docker.js";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* used for tellilng a cluster about a disired deployment
|
|
||||||
* and specifies its configuration
|
|
||||||
*/
|
|
||||||
export interface IDeploymentDirective {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
imageClaim: string;
|
|
||||||
ports: { hostPort: number; containerPort: number }[];
|
|
||||||
environment: { [key: string]: string };
|
|
||||||
resources?: IServiceRessources;
|
|
||||||
}
|
|
@ -2,7 +2,6 @@ export * from './cloudlyconfig.js';
|
|||||||
export * from './cluster.js';
|
export * from './cluster.js';
|
||||||
export * from './config.js';
|
export * from './config.js';
|
||||||
export * from './deployment.js';
|
export * from './deployment.js';
|
||||||
export * from './deploymentdirective.js';
|
|
||||||
export * from './docker.js';
|
export * from './docker.js';
|
||||||
export * from './env.js';
|
export * from './env.js';
|
||||||
export * from './event.js';
|
export * from './event.js';
|
||||||
|
@ -21,6 +21,5 @@ export interface IService {
|
|||||||
protocol?: 'http' | 'https' | 'ssh';
|
protocol?: 'http' | 'https' | 'ssh';
|
||||||
}[];
|
}[];
|
||||||
deploymentIds: string[];
|
deploymentIds: string[];
|
||||||
deploymentDirectiveIds: string[];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ import * as clusterInterfaces from '../data/cluster.js';
|
|||||||
import * as serverInterfaces from '../data/server.js';
|
import * as serverInterfaces from '../data/server.js';
|
||||||
import * as userInterfaces from '../data/user.js';
|
import * as userInterfaces from '../data/user.js';
|
||||||
import type { IService } from '../data/service.js';
|
import type { IService } from '../data/service.js';
|
||||||
import type { IDeploymentDirective } from '../data/deploymentdirective.js';
|
|
||||||
|
|
||||||
export interface IRequest_Any_Cloudly_GetServerConfig
|
export interface IRequest_Any_Cloudly_GetServerConfig
|
||||||
extends plugins.typedrequestInterfaces.implementsTR<
|
extends plugins.typedrequestInterfaces.implementsTR<
|
||||||
@ -31,7 +30,7 @@ extends plugins.typedrequestInterfaces.implementsTR<
|
|||||||
};
|
};
|
||||||
response: {
|
response: {
|
||||||
configData: clusterInterfaces.ICluster;
|
configData: clusterInterfaces.ICluster;
|
||||||
deploymentDirectives: IDeploymentDirective[];
|
services: IService[];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +42,7 @@ extends plugins.typedrequestInterfaces.implementsTR<
|
|||||||
method: 'pushClusterConfig';
|
method: 'pushClusterConfig';
|
||||||
request: {
|
request: {
|
||||||
configData: clusterInterfaces.ICluster;
|
configData: clusterInterfaces.ICluster;
|
||||||
deploymentDirectives: IDeploymentDirective[];
|
services: IService[];
|
||||||
};
|
};
|
||||||
response: {};
|
response: {};
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ export interface IRequest_GetAllImages extends plugins.typedrequestInterfaces.im
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* gets a single image
|
* gets a single image
|
||||||
|
* authentication can happen via imageClaim or identity
|
||||||
*/
|
*/
|
||||||
export interface IRequest_GetImage extends plugins.typedrequestInterfaces.implementsTR<
|
export interface IRequest_GetImage extends plugins.typedrequestInterfaces.implementsTR<
|
||||||
plugins.typedrequestInterfaces.ITypedRequest,
|
plugins.typedrequestInterfaces.ITypedRequest,
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@serve.zone/cloudly',
|
name: '@serve.zone/cloudly',
|
||||||
version: '4.3.13',
|
version: '4.4.0',
|
||||||
description: 'A comprehensive tool for managing containerized applications across multiple cloud providers using Docker Swarmkit, featuring web, CLI, and API interfaces.'
|
description: 'A comprehensive tool for managing containerized applications across multiple cloud providers using Docker Swarmkit, featuring web, CLI, and API interfaces.'
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user