App Center Builds for multiple project configurations - xamarin.forms

I have setup a number of solution configurations in my Xamarin Forms solution such as Test, Training, Prod. The idea is each configuration represents an app environment that doesn't interfere with the other environments. So users can practically have all the different environments installed on the same device.
For iOS, each configuration has its own unique bundle id and a provisioning profile. This works well and I managed to get the different app environments installed on the same device manually.
The problem is in App Center I need multiple iOS builds targeting the different configurations, but App Center doesn't allow multiple builds per branch.
How do I go about setting this up in App Center without creating a branch for each environment?

Related

Firebase Hosting - Store projectId in git version control

One can select a project to deploy their app to, using firebase use PROJECT_ID.
I've an interesting pattern - I've multiple firebase hosted applications (projects) on the different branches of a git repo, and I often need to switch between them. When I issue firebase deploy, often it picks the wrong project and deploy there.
Is there a way to configure the projectId for firebase hosting within my code, so that when changing branches, the right project is automatically selected for deployment?
Thank you.

How to deploy a solution with two projects to Azure App Service?

I am trying to minimize the cost of running my web app in Azure App Service. I have a Visual Studio 2017 solution with two Web Projects: Web and API (both .NET Core). The entire solution is part of a single GitHub Repo. Before adding the API project, the build and deployment to Azure App Service was automated. My goal is to deploy both projects under the same App Service (to minimize cost) with two subdomains (e.g. www.example.com and api.example.com) and keep everything automated.
Is this something that can be done? Can somebody please help me understand how this can be done? Can those settings be commited?
An Azure App Service Plan can contain multiple web apps. Normally when you use the Azure portal to connect it to source control, Kudu (the tool behind App Service Plans), will create a deployment script for that site.
In case you want to deploy two projects of a single solution (and git repo) to different Web Apps you have to do the following:
Create two web apps under the same App Service Plan
Connect both of them to the same git repo for automated deployments
Modify the deployment parameters
I'm going to suppose you know how to do the first two steps.
To modify the deployment parameters, you could either modify the deployment script by downloading it through Kudu and adapting it or, much simpler, configure it through the portal:
Go the App1 => Application Settings => Add setting PROJECT with value
<path>\<path-to-app1>.csproj
Go the App2 => Application Settings => Add setting PROJECT with value <path>\<path-to-app2>.csproj
Every time you push up a change, both web apps will receive an update, but they will deploy a different part to the web site.
More information can be found here (see last paragraph): https://github.com/projectkudu/kudu/wiki/Customizing-deployments

Can Meteor-based-ios app access data from my own server?

I'm new to Meteor and made a very simple meteor-based ios app for personal use and interest, which read data from MongoDB provided by Meteor. I have a quick question and I just want to make sure that I am not spending time on meaningless work.
What I have done is "meteor run ios-device", and it works pretty well that under the same network (wifi) the app on ios could read data from the localhost:3000 on laptop (Mac). Also, I have learned that it is easy to deploy a meteor app on my own server, just run "meteor build /path/to/buildFile --architecture..." and move the bundle to the server to set up; however, then I got confused about this: after the app is deployed to a server, is it possible that the app on ios also able to access to that server?
In short words, app ios works fine with localhost, so is there a way to make it works fine with web hosting so that the app does not need to connect to the same network as the host?
Note that I didn't purchase Apple developer account that could release app to AppStore, so I can only use "real machine debugging". Will this disallow me to make app on ios access the data from my own server?
Thanks for any advance!
Update:
I have successfully deployed my project on my own OpenShift server so that I could access it within any networks in browsers. So my point is how do I build an ios app for this project so that I can also access it in iPhone within any network. I have tired run "meteor run ios-device --mobile-server=[my own openshift server]:8000", and when I build the app for deploying I ran this "meteor build ~/some/path --server=[my own openshift server]:8000". This seems does not works. Still waiting for advance!
You are describing one of the main use case of Meteor.
Refer to:
Meteor Guide > Mobile > Configuring your server
Meteor Guide > Mobile > Building for production
To summarize:
When building your Meteor project, if you have ios and/or android platform(s), Meteor will require you to specify the --server option with the URL of the server where your Meteor server bundle will be deployed.
That way, your app will know where to connect to.
Note that you may not need to go through Apple App Store, as long as you do not need to distribute your app. You can simply use the Xcode project (generated by meteor build) to install your app directly on your iPhone.

Using Application Insights with multiple deployment slots

I am beginning to implement Application Insights against an ASP.NET web app with multiple deployments; Prod, Staging, Dev, Dev2. Currently the production slot is sitting empty with deployments in staging, dev and dev2.
The application health tile is showing requests made to the home page of Prod but really I want to see the telemetry for staging, dev and dev2. Is it possible to use 1 Application Insights resource for all slots within my Web App or do I have to create a separate Application Insights for each slot?
You can extend your telemetry with custom properties which will indicate your environment, and then slice and dice according to that property, using either Metric Explorer or Analytics.
You can read more here: Application Insights support for Multiple Environments, Stamps and App Versions, specifically the 'Multi Stamp Support'.
I have resolved the issue. I was enabling Application Insights through the portal for an already deployed application, which only seems to enable telemetry collections for what is deployed in the 'main' production slot. In my case this was the default 'This web app has been successfully created' blue landing screen. Despite my 3 other deployment slots having apps deployed, no data was collected for these.
In order to allow collection for all slots, return to Visual Studio and configure Application Insights through there. You can then redeploy the application to whichever deployment slot you wish and the OOTB telemetry collection will happen.

How to Test ASP Application on Domain when Development Environment isn't on Domain?

I'm just about to begin work on a new project and am just attempting to plan a few things out first. The project will be in ASP.NET, and will be using Active Directory for authentication and authorization.
My development environment consists on a development PC, not on any domain, and using Visual Studio 2012. I'll be wanting to do testing using a "dev" domain, running on a virtual machine.
What is the easiest/best/recommended way of doing my testing and debugging? Ideally I'd like to do by debugging directly on my development PC, while utilizing the resources on the virtual development domain.
We did few large deployments of AD with asp.net applications with automatic account provisioning and 50k+ users and the idea was always to abstract the user backstore and have at least two or three implementations:
inmemory repository injected into upper layer services for unit testing them
database implementation convenient for developers as it is persistent, doesn't vanish on restarts
actual ad implementation tested separately in two different testing environments but not directly by developers (devs use the database repository)
Having the logic which relies on abstraction and is conveniently tested with the inmemory repository and then having the ad repository tested separately allows us to just compose these two on the production site.

Resources