I too, have been curiously looking for CI/CD solutions.
In my opinion, GitLab offers a compelling solution. (You can still host your code repository elsewhere, and just link it for CI/CD) It stores the configuration simply in a '.gitlab-ci.yml' file that is kept at the repository root folder.
Here the official information: <a class="postlink" href="https://about.gitlab.com/features/gitlab-ci-cd/">https://about.gitlab.com/features/gitlab-ci-cd/</a> <a class="postlink" href="https://docs.gitlab.com/ee/ci/quick_start/">https://docs.gitlab.com/ee/ci/quick_start/</a>
There isn't official examples for angular or dotnet core applications, but I found these: <a class="postlink" href="https://kimsereyblog.blogspot.com/2018/06/setup-cicd-pipeline-with-gitlab-for.html">https://kimsereyblog.blogspot.com/2018/ ... b-for.html</a> <a class="postlink" href="https://www.youtube.com/watch?v=yqm8Qlun_Wk">https://www.youtube.com/watch?v=yqm8Qlun_Wk</a>
I am not experienced with making scripts, but I definitely think there is something to be explored here. You pointed out the PowerShell scripts, maybe they can be used in the '.gitlab-ci.yml' file.
I also want to keep my application up to date, and I'm considering this upgrade process.
I'd be stuck with the namespace for all template files: MyCompanyName.AbpZeroTemplate But most of my files I will keep in separate projects (modules) that uses my namespace.
Because I revoked team access, then this fork shouldn't be able to be accessed by other volosoft customers, correct? So I shouldn't appear on this list (maybe?): <a class="postlink" href="https://github.com/aspnetzero/aspnet-zero-core/network/members">https://github.com/aspnetzero/aspnet-ze ... rk/members</a> And this should be inaccessible (except to me): <a class="postlink" href="https://github.com/saasygreene/aspnet-zero-core">https://github.com/saasygreene/aspnet-zero-core</a>
Is this all correct? Anything I haven't considered?
If it affects anything: I am using .Net Framework, not .NET Core
I was successful in creating a project on my local machine, rather than the server I remote into. It may be specific to settings on my windows server.
EDIT: There was something wrong with my existing node modules. To fix my issues, I manually deleted the node modules folder, and got a fresh copy of packages.json. And I ran npm install again.
Problem solved. It was not related to windows server os.
I downloaded the latest release version of ASP.NET Core & Angular 2. I have node, npm, and typescript installed globally. node v6.9.4 npm v3.10.10 tsc v2.1.4
I also tried it after installing angular-cli globally. angular-cli: 1.0.0-beta.24
Using visual studio 2015 and vs code on windows server 2012 R2. The node_module folder is not appearing after I run npm install, and I get these warnings:
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\angular-cli\node_modules\webpack\node_modules\watchpack\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\angular-cli\node_modules\webpack-dev-server\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\karma\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN @ngtools/[email protected] requires a peer of @angular/tsc-wrapped@^0.5.0 but none was installed.
npm WARN @ngtools/[email protected] requires a peer of reflect-metadata@^0.1.8 but none was installed.
I believe the last two warning are the cause of the issue.
EDIT: node_modules folder actually does appear, just it was hidden in vs code. If I try to run with npm start, I get this error:
Cannot find module 'reflect-metadata'
Here's the full npm-debug.log
0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files (x86)\\nodejs\\node.exe',
1 verbose cli 'C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'start' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle [email protected]~prestart: [email protected]
6 silly lifecycle [email protected]~prestart: no script for prestart, continuing
7 info lifecycle [email protected]~start: [email protected]
8 verbose lifecycle [email protected]~start: unsafe-perm in lifecycle true
9 verbose lifecycle [email protected]~start: PATH: C:\Program Files (x86)\nodejs\node_modules\npm\bin\node-gyp-bin;C:\Users\JMiller\Documents\Visual Studio 2015\Projects\ASP.NET Core Zero\Tektiles\Client\node_modules\.bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\Git\cmd;C:\Program Files\dotnet\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Microsoft Emulator Manager\1.0\;C:\Program Files (x86)\nodejs\;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\JMiller\AppData\Roaming\npm
10 verbose lifecycle [email protected]~start: CWD: C:\Users\JMiller\Documents\Visual Studio 2015\Projects\ASP.NET Core Zero\Tektiles\Client
11 silly lifecycle [email protected]~start: Args: [ '/d /s /c',
11 silly lifecycle 'ng serve --host 0.0.0.0 --port 4200 --live-reload-port 4201' ]
12 silly lifecycle [email protected]~start: Returned: code: 1 signal: null
13 info lifecycle [email protected]~start: Failed to exec start script
14 verbose stack Error: [email protected] start: `ng serve --host 0.0.0.0 --port 4200 --live-reload-port 4201`
14 verbose stack Exit status 1
14 verbose stack at EventEmitter.<anonymous> (C:\Program Files (x86)\nodejs\node_modules\npm\lib\utils\lifecycle.js:255:16)
14 verbose stack at emitTwo (events.js:106:13)
14 verbose stack at EventEmitter.emit (events.js:191:7)
14 verbose stack at ChildProcess.<anonymous> (C:\Program Files (x86)\nodejs\node_modules\npm\lib\utils\spawn.js:40:14)
14 verbose stack at emitTwo (events.js:106:13)
14 verbose stack at ChildProcess.emit (events.js:191:7)
14 verbose stack at maybeClose (internal/child_process.js:877:16)
14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
15 verbose pkgid [email protected]
16 verbose cwd C:\Users\JMiller\Documents\Visual Studio 2015\Projects\ASP.NET Core Zero\Tektiles\Client
17 error Windows_NT 6.3.9600
18 error argv "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start"
19 error node v6.9.4
20 error npm v3.10.10
21 error code ELIFECYCLE
22 error [email protected] start: `ng serve --host 0.0.0.0 --port 4200 --live-reload-port 4201`
22 error Exit status 1
23 error Failed at the [email protected] start script 'ng serve --host 0.0.0.0 --port 4200 --live-reload-port 4201'.
23 error Make sure you have the latest version of node.js and npm installed.
23 error If you do, this is most likely a problem with the abp-zero-template package,
23 error not with npm itself.
23 error Tell the author that this fails on your system:
23 error ng serve --host 0.0.0.0 --port 4200 --live-reload-port 4201
23 error You can get information on how to open an issue for this project with:
23 error npm bugs abp-zero-template
23 error Or if that isn't available, you can get their info via:
23 error npm owner ls abp-zero-template
23 error There is likely additional logging output above.
24 verbose exit [ 1, true ]
Thanks!
Am I understanding transient correctly? That it means everywhere it is injected is a new instance. Maybe I am looking for something like a ITenantSingletonDependency...
We are using a singleton periodic background worker to collect data from web services for all the tenants. I was wondering if anyone has tried making a tenant background workers using transient dependency. This would allow each tenant's background worker to complete it's requests in it's own time, with it's own timer, start and stop methods. I have been caching my web service results. I'm considering this because I don't want one tenant to delay another tenant. Any recommendations?
Oops, private constructor. That's why. Problem Solved.
I'm trying to make an application service in the latest template. I had injected dependencies at one point, but I removed them and made the code like a stub, and still get the error. The default application services still work.
Interface
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using GreeneIS.Tektiles.ServiceDesk.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GreeneIS.Tektiles.ServiceDesk
{
public interface IServiceDeskAppService : IApplicationService
{
Task<ListResultOutput<MemberOutput>> GetMembers();
Task Load();
}
}
Class
using Abp.Application.Services.Dto;
using GreeneIS.Tektiles.ServiceDesk.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GreeneIS.Tektiles.ServiceDesk
{
public class ServiceDeskAppService : IServiceDeskAppService
{
ServiceDeskAppService()
{
}
public async Task<ListResultOutput<MemberOutput>> GetMembers()
{
return new ListResultOutput<MemberOutput>();
}
public async Task Load()
{
}
}
}
Dto
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GreeneIS.Tektiles.ServiceDesk.Dto
{
public class MemberOutput
{
public long? UserId;
public string FirstName;
public string LastName;
public string Title;
public string EmailAddress;
}
}
Error when calling any of the functions
{"message":"An error has occurred.","exceptionMessage":"ComponentActivator: could not proxy Abp.WebApi.Controllers.Dynamic.DynamicApiController`1[[GreeneIS.Tektiles.ServiceDesk.IServiceDeskAppService, GreeneIS.Tektiles.Application, Version=1.11.0.0, Culture=neutral, PublicKeyToken=null]]","exceptionType":"Castle.MicroKernel.ComponentActivator.ComponentActivatorException","stackTrace":" at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments)\r\n at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext context)\r\n at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)\r\n at Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context, Burden burden)\r\n at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext context, Boolean trackedExternally)\r\n at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context, IReleasePolicy releasePolicy)\r\n at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)\r\n at Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)\r\n at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)\r\n at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type service, IDictionary additionalArguments, IReleasePolicy policy)\r\n at Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(Type service, IDictionary arguments, IReleasePolicy policy)\r\n at Castle.MicroKernel.DefaultKernel.Resolve(Type service, IDictionary arguments)\r\n at Castle.Windsor.WindsorContainer.Resolve(Type service)\r\n at Abp.Dependency.IocManager.Resolve(Type type) in D:\\Halil\\GitHub\\aspnetboilerplate\\src\\Abp\\Dependency\\IocManager.cs:line 195\r\n at Abp.Dependency.IocResolverExtensions.ResolveAsDisposable[T](IIocResolver iocResolver, Type type) in D:\\Halil\\GitHub\\aspnetboilerplate\\src\\Abp\\Dependency\\IocResolverExtensions.cs:line 32\r\n at Abp.WebApi.Controllers.AbpApiControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType) in D:\\Halil\\GitHub\\aspnetboilerplate\\src\\Abp.Web.Api\\WebApi\\Controllers\\AbpApiControllerActivator.cs:line 24\r\n at System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()","innerException":{"message":"An error has occurred.","exceptionMessage":"ComponentActivator: could not proxy GreeneIS.Tektiles.ServiceDesk.ServiceDeskAppService","exceptionType":"Castle.MicroKernel.ComponentActivator.ComponentActivatorException","stackTrace":" at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments)\r\n at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext context)\r\n at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)\r\n at Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context, Burden burden)\r\n at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext context, Boolean trackedExternally)\r\n at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context, IReleasePolicy releasePolicy)\r\n at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)\r\n at Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)\r\n at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)\r\n at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernelByType(CreationContext context, ComponentModel model, DependencyModel dependency)\r\n at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveFromKernel(CreationContext context, ComponentModel model, DependencyModel dependency)\r\n at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.ResolveCore(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency)\r\n at Castle.MicroKernel.Resolvers.DefaultDependencyResolver.Resolve(CreationContext context, ISubDependencyResolver contextHandlerResolver, ComponentModel model, DependencyModel dependency)\r\n at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateConstructorArguments(ConstructorCandidate constructor, CreationContext context)\r\n at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(CreationContext context)\r\n at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)\r\n at Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context, Burden burden)\r\n at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(CreationContext context, Boolean trackedExternally)\r\n at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context, IReleasePolicy releasePolicy)\r\n at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)\r\n at Castle.MicroKernel.Handlers.DefaultHandler.Resolve(CreationContext context, Boolean instanceRequired)\r\n at Castle.MicroKernel.Handlers.AbstractHandler.Resolve(CreationContext context)\r\n at Castle.Core.InterceptorReference.Castle.MicroKernel.IReference<Castle.DynamicProxy.IInterceptor>.Resolve(IKernel kernel, CreationContext context)\r\n at Castle.Windsor.Proxy.AbstractProxyFactory.ObtainInterceptors(IKernel kernel, ComponentModel model, CreationContext context)\r\n at Castle.Windsor.Proxy.DefaultProxyFactory.Create(IKernel kernel, Object target, ComponentModel model, CreationContext context, Object[] constructorArguments)\r\n at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments)","innerException":{"message":"An error has occurred.","exceptionMessage":"Can not instantiate proxy of class: GreeneIS.Tektiles.ServiceDesk.ServiceDeskAppService.\r\nCould not find a parameterless constructor.","exceptionType":"Castle.DynamicProxy.InvalidProxyConstructorArgumentsException","stackTrace":" at Castle.DynamicProxy.ProxyGenerator.CreateClassProxyInstance(Type proxyType, List`1 proxyArguments, Type classToProxy, Object[] constructorArguments)\r\n at Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type classToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, Object[] constructorArguments, IInterceptor[] interceptors)\r\n at Castle.Windsor.Proxy.DefaultProxyFactory.Create(IKernel kernel, Object target, ComponentModel model, CreationContext context, Object[] constructorArguments)\r\n at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments)"}}}
<cite>maharatha: </cite> Go to your web app and then go to the mobile settings and add the data connection there and name the data connection as Default. Once you do that it automatically appears in the application setting.
Thanks maharatha, it works now!