Example #1
0
        public override async Task PrepareWorkDirectoryAsync()
        {
            await base.PrepareWorkDirectoryAsync();

            var metadata = await ProjectPackageTools.UnpackAsync(ProjectPackageFilename, BinDirectory);

            AssemblyFilename = metadata.AssemblyFilename;
            ScriptName       = metadata.ScriptName;
        }
Example #2
0
        public async Task Add(string filename)
        {
            var metadata = await ProjectPackageTools.GetMetadataAsync(filename);

            if (metadata == null)
            {
                throw new Exception("No metadata file found in package!");
            }

            await base.Add(filename, metadata);
        }
Example #3
0
        private async Task <ProjectPackage> LoadItem(string packageId, string version)
        {
            var packageMgr = PhotonServer.Instance.ProjectPackages;

            if (!packageMgr.TryGet(packageId, version, out var filename))
            {
                throw new ApplicationException($"Package '{packageId}' version '{version}' not found!");
            }

            return(await ProjectPackageTools.GetMetadataAsync(filename));
        }
Example #4
0
        private void PackageClient_OnPushProjectPackage(string filename, RemoteTaskCompletionSource taskHandle)
        {
            Task.Run(async() => {
                var metadata = await ProjectPackageTools.GetMetadataAsync(filename);
                if (metadata == null)
                {
                    throw new ApplicationException($"Invalid Project Package '{filename}'! No metadata found.");
                }

                await projectPackages.Add(filename);
                PushedProjectPackageList.Add(new PackageReference(metadata.Id, metadata.Version));
            }).ContinueWith(taskHandle.FromTask);
        }
Example #5
0
        private async Task CreateProjectPackage(string version, CancellationToken token)
        {
            var projectPath    = Path.Combine(Context.ContentDirectory, "Jenkins.Net.Publishing");
            var packageDefFile = Path.Combine(projectPath, "Jenkins.Net.Publishing.json");
            var output         = Path.Combine(Context.ContentDirectory, "PublishPackage", "Jenkins.Net.zip");

            try {
                Context.WriteTagLine("Creating project package...", ConsoleColor.White);

                var packageDef = ProjectPackageTools.LoadDefinition(packageDefFile);

                await ProjectPackageTools.CreatePackage(
                    definition : packageDef,
                    rootPath : projectPath,
                    version : version,
                    outputFilename : output);

                Context.WriteTagLine("Created project package successfully.", ConsoleColor.White);
            }
            catch (Exception error) {
                Context.WriteErrorBlock("Failed to create project package!", error.UnfoldMessages());
                throw;
            }

            try {
                Context.WriteTagLine("Publishing project package...", ConsoleColor.White);

                await Context.Packages.PushProjectPackageAsync(output, token);

                Context.WriteTagLine("Published project package successfully.", ConsoleColor.White);
            }
            catch (Exception error) {
                Context.WriteErrorBlock("Failed to publish project package!", error.UnfoldMessages());
                throw;
            }
        }
Example #6
0
        public override async Task <HttpHandlerResult> PostAsync(CancellationToken token)
        {
            var qProjectId            = GetQuery("project");
            var projectPackageId      = GetQuery("package");
            var projectPackageVersion = GetQuery("version");
            var environmentName       = GetQuery("env");

            if (string.IsNullOrWhiteSpace(projectPackageId))
            {
                return(Response.BadRequest().SetText("'package' is undefined!"));
            }

            if (string.IsNullOrWhiteSpace(projectPackageVersion))
            {
                return(Response.BadRequest().SetText("'version' is undefined!"));
            }

            try {
                if (!PhotonServer.Instance.ProjectPackages.TryGet(projectPackageId, projectPackageVersion, out var packageFilename))
                {
                    return(Response.BadRequest().SetText($"Project Package '{projectPackageId}.{projectPackageVersion}' was not found!"));
                }

                var metadata = await ProjectPackageTools.GetMetadataAsync(packageFilename);

                var projectId = metadata.ProjectId;

                if (!string.IsNullOrEmpty(qProjectId))
                {
                    projectId = qProjectId;
                }

                if (string.IsNullOrEmpty(projectId))
                {
                    throw new ApplicationException("'project' is undefined!");
                }

                if (!PhotonServer.Instance.Projects.TryGet(projectId, out var project))
                {
                    return(Response.BadRequest().SetText($"Project '{projectId}' was not found!"));
                }

                var deployment = await project.StartNewDeployment();

                deployment.PackageId       = projectPackageId;
                deployment.PackageVersion  = projectPackageVersion;
                deployment.EnvironmentName = environmentName;
                //deployment.ScriptName = ?;

                var session = new ServerDeploySession {
                    Project                = project.Description,
                    Deployment             = deployment,
                    ProjectPackageId       = projectPackageId,
                    ProjectPackageVersion  = projectPackageVersion,
                    ProjectPackageFilename = packageFilename,
                    EnvironmentName        = environmentName,
                };

                deployment.ServerSessionId = session.SessionId;

                PhotonServer.Instance.Sessions.BeginSession(session);
                PhotonServer.Instance.Queue.Add(session);

                var response = new HttpDeployStartResponse {
                    SessionId = session.SessionId,
                };

                return(Response.Json(response));
            }
            catch (Exception error) {
                Log.Error($"Deployment of Project Package '{projectPackageId}.{projectPackageVersion}' has failed!", error);
                return(Response.Exception(error));
            }
        }
Example #7
0
 public async Task Run()
 {
     var rootPath = Path.GetDirectoryName(MetadataFilename);
     var metadata = ProjectPackageTools.LoadDefinition(MetadataFilename);
     await ProjectPackageTools.CreatePackage(metadata, rootPath, PackageVersion, PackageFilename);
 }
Example #8
0
 public async Task Run()
 {
     await ProjectPackageTools.CreatePackage(MetadataFilename, PackageVersion, PackageFilename);
 }