Is it possible to push updated to multiple config versions using trigger.io reload? - trigger.io

Trigger.io reload allows you to push updates to a specific config version. Can I push the changes (assuming my JS is backwards compatible) to multiple config versions - so "Push Stream" using config A, then change to config B and do push stream again?
It is a pretty common use case, as users have different versions of the app, and hence different config versions.

If you look at the "reload" page in the Trigger Toolkit you should see an option to "Show other built configs"
If you click it you will have the option to "Restore config" for any of your builds and any "Push to stream" operations you do will then be directed to that build config.
A good development workflow is to maintain a branch for each build configuration to make it easier to recall the state of what you've shipped.

Related

iOS / appstoreconnect process for staged application

I am developing an application for the appstore which we currently have two stages for in our backend (dev & prod) and in the future plan to have three, dev, qa and prod.
To build the same via environment variables I managed already within the application in xcode and can switch between those as I want.
My challenge now is to reflect the same in appstoreconnect.
There I am actually only seeing the different versions, which is great, but I am really missing a way or process to reflect that I am using one of the stages (dev, qa, prod). Is there any way to do this?
Or do I have to create an app for every stage to be sure?
there are different approaches that you could follow. In first place I recommend using TestFlight so that you can easily manage/share/test a build with a group of people that you select.
To my mind there are a couple of approaches you could start exploring with:
creating a different target in Xcode for each environment you wanna deploy in TestFlight. To make them visually recognizable, you could bind a different app icon set to the target (Assets_Dev.xcassets, Assets_Prod.xcassets,..) via the “target memberships” ( which will
then show up the list of existing target you previously created in your Xcode project
an extension/alternative way than the previous one, (let’s assume that the only difference between the environments are just the remote endpoints used by your app to connect to your servers), would be that you make a target “non prod” into which the app has maybe a view controller or something that allows you to switch environments programmatically on the fly without having a distinct build for each of them. Such view should not be part of the acutal prod target as its purpose is merely for internal use and not for the end user (so making use of user defined keys which exist maybe only in the non prod target, and checking them with the “#if <YOUR_NON_PROD_USER_DEFINED_KEY … code to show the view for switching envs … #endif”

Xcode Git stop commit personal schemes but keep "default" schemes in repository

I work on an xcode project with multiple people. Every time someone switches between running on device and simulator, this adds a change in xcshareddata/scschemes/{schemename} to the next commit.
It is extremely annoying to have each commit stuffed with those scheme changes. Whilst it is convenient to be able to continue with the scheme that you have just been working on when cloning the repo, a fresh clone is not something you perform numerous times a day so I would much prefer the following situation:
Have a "static" set of schemes in the repo so whenever someone clones the repository they will start out with an {App Name} -> "Any iOS Device" scheme. Once they change this to their personal iPhone or Simulator, Xcode's versioning should ignore that file so it doesn't clutter up commits.
What's a bit annoying about this setup is that you have to select your target device after each clone but again I would rather how to set the target device every once in a while than read through the "changes" in commits and pull requests where 80% of the additions and deletions consist of someone iterating through simulators.
How would I got about setting up our repository/ git/ .gitignore to achieve this state?

'TFS build&release' Is there a way to change workitems' state included in the build when it occurs?

In tfs when automatic release occurs (each night) my team have to change their backlogitems asociated with this build to an state called 'ready for qa' next day, sometimes we forget it, if the build mark those backlogitems as 'ready for qa' when it's success it would be great. Is there a way to configure the automatic release to do that?
I don't believe there is any native way to do this, but the following extension Update Work Item in the VSTS marketplace should work for you.
After installing the extension, you will need to add a task to your Release Definition and configure it to suit your needs. Be sure to enable the "Allow Scripts to Access OAuth Token" setting in your release.
Note: there are some nuances in configuring this task to be sure to read all of the 'help' icons during initial configuration
Personally, I found using TFS Rest API as a good way of updating Work items. The Work items update TFS API is quite simple and easy to use
https://www.visualstudio.com/en-us/docs/integrate/api/wit/updates
The advantage of using it over build task is that you can run and test it locally and is easier to update and maintain

Supervise Project changes within Git

My team leader wants to get notified whenever changes are made to a specific Project.
Is there a possibility within Git to supervise specific Folders or Files and get notifications if the code changes?
If you are just looking for an FYI, you can configure a build job with continuous integration enabled and the 'Path Filters' set to the folders or files you want to supervise. This build definition could be empty as you are not actually trying to build, but rather kick off a notification workflow.
This would create a build each time a file or folder changes that is in the path filter. You then have to decide how you would like to be notified. Here you have a couple options, but 2 fairly easy ones would be as follow:
Use a Send Email task from the VSTS Marketplace, there are a number of options depending on your needs. VSTS Marketplace Email Tasks
Configure a new 'Notification Subscription' under Settings -> Notifications and set this up to send an email to whomever is doing the monitoring any time a build completes for that definition.
Note: if you want to prevent changes to these areas, then you should use branch policies suggested by Daniel Mann.
Note 2: Depending on the volume, if there are tons of changes to these paths, you may overwhelm your build server or consume all your build minutes quickly.
You can configure branch policies for your repository to require a code review; this will trigger a notification.
The branch policy can be limited require review only for certain files or folders.

Xcode Service: Select Git Branch

I started to set up the new Xcode service in Mavericks. I created a new bot - but I wasn't asked for the branch it should build?
How can I select the branch for each bot? I do not only want to build master, but different branches too.
In the current version, when you create the bot in Xcode, it will be linked to the currently active branch. You can easily verify (but not change) it from the web interface, when you navigate to the bot -> Bot settings (when you click the cog wheel in the upper right).
Alternatively you can create the bot via the web interface where you can specify the branch name plain-text.
Assuming you want to change it whenever you want and not recreate bots each time, you can use the script: (pre-trigger)
cd "$XCS_SOURCE_DIR/<repo name here>"
git checkout development
Just change it to whatever branch you want and whatever repo you want. (you can look in the pre trigger logs to see if you mess up the change directory, ie if you misspel the repo name or whatever else. Good luck!
Create a bot for each branch you are interested in testing.
You can create as many bots as you want. Each one will check out whatever branch you specify, and run per the schedule you set individually.
It seems like this is now possible (in Xcode 7.1). However, you only get the option your project actually has more than one branch (makes sense).

Resources