TeamCity and Rails deployment - ruby-on-rails-3

Can anyone please point me to a documentation/demo on how to deploy a Ruby on Rails web app using Teamcity once build passed? The scenario is to: deploy the web app, by starting the web server on the build machine and then firing UI functional tests. (Note: Would like to know if all these steps can be automated using Teamcity?)

You can use Capistrano to deploy with TeamCity. Capistrano is great for deploying Rails apps, you can automate it reasonably easily so that TeamCity simply fires your Capistrano job.
More on Capistrano https://github.com/capistrano/capistrano/wiki/
You probably want to use RVM with TC too.

Related

How to run rspec (or any other) tests in Kubernetes cluster

I changed my dev workflow to mainly develop in Kubernetes (with Tilt.dev). All dependencies are running, file changes are syncing etc..
Now I stuck in the rSpec test process:
How do you run your tests in a Kubernetes cluster?
How do you deal the dev dependencies, the production image does not contain the required dependencies?
How do you kickoff the tests rspec spec?
Are you installing gems subsequently?
Are you creating a extra "test" image for that case?
I didn't found any bootstrap code. I am totally lost.

Codeship with Testim.io - Am I testing my latest version?

Sorry for the dumb question but I could not find an answer for that.
Codeship + Testim.io + Heroku.
In my Staging env - I use Testim.io to test the app once it deployed.
The following tutorial is guiding me how to invoke my tests - but I see the tests are being invoked BEFORE the new app has been deployed - so isn't it testing one version before my latest?
I expected the tests to run after the deploy.
Probably I am missing here something.
In that tutorial - the tests aren't supposed to run against your deployed version they are supposed to run against the version being tested.
The flow is:
You set up a local environment - for example by checking out your code and running npm start. If it's containerized then do that.
You run the Testim CLI and point its base url to local how testim --token ... --project ... --suite ... --base-url=localhost:PORT.
After the tests pass, you deploy.
If you test the version after you deploy you can't be sure the version deployed actually passes your tests.
An alternative flow would be to lean into Heroku's deployment model. Note this isn't actually specific to them and there are similar alternatives in aws/azure/gcp/whatever:
In your CI, you set up a staging environment in heroku heroku create --remote staging-BRANCH-NAME-<COMMIT-NAME>
You deploy there.
You run the tests against that enviroment (by passing --base-url to the Testim CLI, navigating there in your test or using a config file)
When tests pass you deploy to master

Run Selenium tests against a .NET Core web app

I have a .NET Core web app that connects to a .NET Core API and I want to run Selenium UI tests against it. However, the Webdriver can only connect to the web app if I first run the web app and API in IISExpress. What's the best way to run them without having to explicitly start them in IIS? I've tried to create a new Process to use 'dotnet' to run the web app (and API) for me but it won't run. Has anyone had a similar problem?
You'll first want to figure out how to get your application running before trying to test it with Selenium. This post might help you with that. After you figure that part out, you'll want your web application with its server running before you run your Selenium tests against it. This can be accomplished in a number of ways:
Get your server hosted non-locally
Manually starting your server locally and running it prior to running the test
Have your test application build and run your server with a Process instance
If you decide to go with the third option, you'll of course need to find out how to properly get your server running. In my experience, the dotnet build and dotnet run commands usually do the trick. The dotnet build command takes in a SLN or CSPROJ file, then compiles your server's source files and outputs a DLL. You can then specify this DLL in the dotnet run <DLL> command.

GitLab CI / CD: do I need docker for ASP.NET Core - Angular application

I am having self-hosted GitLab-EE. I want to enable CI / CD. I already have gitlab-runner on windows and it is activated for my project.
I also have custom server for hosting my ASP.NET Core 2.0 with Angular 5.0 application.
My final idea is when commit is made to GitLab, build and deploy (to custom server) is executed. Deploy path would be different if commit to master was made or any other branch (from merge request) conditional by Git Tag.
Almost all tutorials use docker, but I couldn't found why? What are the cons using docker?
I thought I only need msbuild (I can also install Visual Studio) on machine where GitLab-runner is running. It would build and deploy application. I found this configuration file which doesn't use docker, but question remains. Do I need docker and why?
A docker image would contain all the msbuild dependencies and build tools needed to build your application with out you going through the trouble of manually installing them on your server.
So basically docker helps you to manage dependencies of you application more efficiently.

How to Test a Deployment in Octopus Deploy

I am working on automating our ASP.Net projects' release, using Octopus Deploy. While creating release in Octopus, I am performing following testing completely manually:
I am checking if release is deploying
Everything expected
In the expected places
All required services or web services were restarted
All Pre/Post deploy scripts ran successfully
This means going to different servers and reading release log generated by Octopus Deploy. It leaves risk of introducing mistakes and any future change can make deployment unstable.
Is there any tool to perform a kind of integration testing for Octopus Deploy Release or automate the process mentioned above. I am also open to writing a quick tool automating my testing but then I was wondering what will be the best way to go about it.
Thanks!
For Octopus 2.0 we're building a powerful API that gives you access to everything in Octopus. Using the API you'll be able to create and deploy a release, as well as read the activity logs and see what was deployed. You could hook this up to an automated test (which is what we're doing internally for end-to-end automated testing).