Unable to get IIS Express server running in Jenkins - selenium

I'm trying to run Selenium tests utilizing an IISExpress server. I'm using the VSTest plugin to run my tests. Everything works fine locally in Visual Studio but when I run the tests in Jenkins the IISExpress process never starts. I even tried adding a Windows Batch Command step in Jenkins specifically for loading up the server, but even that doesn't seem to do anything. When I run Jenkins as a service that can interact with the desktop and I watch what its doing, I can see that Selenium loads up the browser but IISExpress just never starts. Any thoughts on this?

You should be able to launch IIS Express through command prompt by either
Explicitly providing the /path:"#PATH" and /port:"#PORT" command line arguments, and then invoking an asynchronous call to the IIS Express executable.
Your command in Jenkins should be something along the lines of:
start "YOUR_IIS_EXPRESS_EXE" /path:"PATH_TO_YOUR_APPLICATION" /port:"YOUR_APPLICATION_PORT"
Or by
Providing a value for the /config command line argument.
Whilst using this technique however, ensure that your application is the first entry in the application host.config file.
The Jenkins command should then be something similar to:
start "YOUR_IIS_EXPRESS_EXE" /config:"PATH_TO_YOUR_APPLICATIONHOST.CONFIG_FILE"

Related

SSIS Execute Process Task Hangs

I have an SSIS package that uses the Execute Process Task to run an application. Running on my local visual studio has no issues. Running it on the server as a job, from the logs, I can see that it just hangs on the EPT step. It never errors or stops.
The old version of the application runs from the same directory as part of a job on a server with no issue. I'm simply just running a new version of the application. It does pass arguments slightly different though.
I log into the server as the SQL Agent service account and run the executable commands from CMD the same as the SSIS package runs it, and it runs fine.
The task is configured with default configurations except for the window is hidden, the same as the old version that works.
I've seen many people have this issue and have tried everything..
I'm assuming that it's prompting me something when it runs on the server. Is there any way to see what it's prompting if I am logged into the server running the job?

Run a batch job from Jenkins with the user who triggered the build

We are using Jenkins to start a C# program using parameters. The job is started manually from Jenkins. It's run from a Jenkins node on another server.
The problem is the C# program is started with the login specified on the node. I want it to run with the user who triggered the build.
I tried to use the Authorize Project plugin but with no luck. The node still uses it's own login when running the C# program.
I have seen other posts on this topic with a suggestion to make a node with the specified login. This won't help me since I want it to run with the user who triggered the build.
I found out that I needed only the user name in the C# program. So instead of starting it with the logged-in user I just passed the current Jenkin user as a parameter. To get the user name as an environment variable I installed the build user vars plugin.
The command in the Jenkins configuration was then set to:
program_name.exe %BUILD_USER%
This doesn't answer the question directly, but it solved my problem.

Continuous Integration on Gitlab with a Console App

I am developing a simple console application with .NET Core 2.
Its purpose is to clean up a Database once per day.
This means the application does never stop after once started.
This application is part of Solution where also a .NET Core Rest API lives, to access the same database so its also part of the same Gitlab repository.
Now i want to publish and start the console app via the existing Continuous Integration pipelines of the repo. (CI pipeline is working perfectly for the REST Api project)
Building, testing and publishing works perfectly, the only problem is running the console application.
I tried a few attempts by now, the outcome is always, that the pipeline gets stuck after the application startet. I guess it is like that because it waits till the app finishes, what never happens.
I tried by now:
starting the app directly in the gitlab_ci.yml
gitlab_ci.yml:
-cd C:\publishFolder
-DB_Cleaner.exe
-> The application is executed directly in the Runner console
gitlab_ci.yml:
-cd C:\publishFolder
-start cmd.exe /k DB_Cleaner.exe
-> The runner is stuck till it got canceled by timeout
Running a bash or powershell script to run the application
gitlab_ci.yml:
-cd C:\ScriptFolder
-runDBCleaner.cmd
runDBCleaner.cmd:
-cd C:\publishFolder
-start cmd.exe /k DB_Cleaner.exe
-> The runner is stuck till it got canceled by timeout
Runner is running on a Win-64 virtual machine.
Is there a way to start the application to run Independent from the gitlab-CI-Runner?
See This Forum. It is working for me using this script:
- 'powershell.exe D:\app\CiTest.exe'
The CiTest.exe is a .Net 4.8 console app.

Microsoft Access automated build hangs at creation of .ACCDE

I'm attempting to automate the build of a source controlled MS Access application (it's only the front-end, the back-end is SQL Server). The Access client is published to the users via a simple C# console app via ClickOnce... It's in that console project that I'm also building the MS Access application via a custom msbuild tasks from this CodePlex library: https://buildmsaccessdb.codeplex.com/ (which is also mentinoed in another StackOverflow post on the subject). On my machine, it all works fine. The Access source code is compiled into an ACCDB, which is then converted into an ACCDE which is what gets included in the published app.
However, when I make it an automated build in TFS, it always stalls at the step where it converts the ACCDB to an ACCDE. I've tried a variety of ways for executing the "Make ACCDE" (SysCmd 603) command. I've tried it in powershell scripts, in VBA, etc... but it always seems to stall. Is that because the automated build process is not an interactive process and maybe the the SysCmd 603 needs to be ran interactively? If I stop the build and take a look at the ACCDB, everything is good. It compiles and can be manually compiled into an ACCDE... so it's not that the ACCDB isn't compilable.
I'd like to test it as an interactive TFS service but I don't control the service account it's running under.
Any tips on suggestions are welcome and thanks in advance! We have this whole automated build and release process up and nearly working except for this one piece!
I don't know much about the MSBuild task library, but from a quick look at the source it looks like it opens Access to run the tasks and interacts with a dialog box at one point. If that's the case you'll definitely need to run the build in interactive mode.
The fact that your build is hanging and not erroring out would also indicate this is the case.
Even though you don't control the service account, I would presume there's someone else in your organisation that does. I'd suggest you work with them and to try the build in interactive mode and ensure it works. If needed you could always set up a second build machine that runs in interactive mode, with the current build server remaining in "run as a service" mode.

How to track the error log on running devices using robotium?

I'm not running robotium test case using command prompt, instead i am navigating to Dev Tools and finding the suite on that and running it and it is working fine for me on the Emulator.
But in case if it is failure, it is exiting the app. I just wanted to know that how to collect the logs to verify that which test case is failed.
The same way i need to know that is there anyway, i can run the suite from devices without connecting to PC (like how i am running on emulator using Dev tools)
Thanks
If you change your instrumentationtest runner to something like:
http://code.google.com/p/the-missing-android-xml-junit-test-runner/
then an xml file will be created containing all your test runs. This will also be useful as it is in standard junit xml format so you can put it into any CI system and it should work.