Our firm provide a web based product which is deployed onto multiple brands (customers) in a different data centers. Due to regulation concern we cannot multi-tenant architecture with our services.
Our code base is identical for all brands and we deploy each version to all brands in a lag of few hours up to a week (i.e we may deploy version V to brand A at 8:00AM, to brand B at 10:00AM and to brand C a week later).
We use Jira OnDemand as our task management system. The problem I'm trying to solve is that Jira supports only one release date for a version but since we release each version multiple times we should know somehow what date each version was release on (besides of course using a spreadsheet).
I appreciate any idea that can make my life easier.
Thanks,
Gil
I would start by imagining how you would do it with a spreadsheet. For the same version name V you would have a column named something like "Deployment Date and Time". I'd do the same in JIRA - create a custom Date and Time picker field and when a specific customer is updated, set the custom field to the date and time.
I'd try to create multiple versions for the different brands and have those multiple versions assigned to a single Jira item. The versions can then be released independently. So for example my version list would look like this:
Brand1-0.9
Brand1-1.0
Brand2-0.9
Brand2-1.0
Brand3-0.9
Brand3-1.0
This is a bit of effort, but I think it should solve your problem. It would also keep you flexible, different release dates for different brands are no problem this way.
Related
Today we had to do a website upgrade from 1.4 to 1.7 included all the existing products. Due to time constraints we bought a commercial solution that charges over quantity. Now that the problem is solved I am thinking of working in a solution for the future should the need arise. What is the table relationship for orders, products and customers from 1.4 to 1.6 and then from 1.6 to 1.7? I have been searching for the documentation on the database structures but haven't been able to find it yet. Any ideas?
I think you can purchase a migrate module and create a new test site, after that you transfer all of the data in the current site to the test site.
Ater you upgrade the current site to the latest version, you just re-transfer data from the test site to the live site. One module you can use many times :D
The cost of a migrate module cheaper than you hire a developer to work for you.
If you only want to transfer product, you just choose a free version module: https://www.prestashop.com/forums/topic/820013-migrate-or-upgrade-prestashop-16-or-other-versions-to-17-%E2%80%93-free-module/
Or more, you can buy a premium module ( you can transfer: customer, product, order, categories... all of the data on your site): Upgrade PrestaShop to 1.7
I am trying to upgrade my app from GAE 1.8.1 to 1.9.3, apparently there is one major issue with retrieving child records in any one to many relationship I have.
In the old version I was using datanucleus JDO version 1 and everything worked fine. Now I am using version 2.
After the upgrade I can only retrieve parent objects (the child are nulls), although when I create new data it seems to be working fine.
I checked how the new data looks like in the database viewer, and it seems that the one-to-many column in the class of the old data is labeled as "missing".
If I create new data the data is filled with some index information.
I will appreciate any help
Update
Apparently datanucleus JDO version 2 is not fully backward compatible to version 1. If you're going to consider an upgrade verified the data relationships were not broken (like mine did)
My current solution is to stay with version 1 and use the newest GAE SDK (which seems to be working well)
Apparently datanucleus JDO version 2 is not fully backward compatible to version 1. If you're going to consider an upgrade verified the data relationships were not broken (like mine did)
My current solution is to stay with version 1 and use the newest GAE SDK (which seems to be working well)
A recent question in the Codename One discussion forum raised a question I often face when I'm waiting for a fix.
Sometimes the Codename One team indicates a fix would be coming in a couple of weeks and other times they indicate that its already fixed. Some of that opacity obviously relates to the update of the cloud servers but its unclear for me whether its just the cloud server & the plugin or is there something that I'm missing. Why isn't there a single update process?
I'd really like a more definitive answer like How does Codename One work?
for this.
Codename One is comprised of several different pieces and an update usually means we update only one of them. At a high level there are really just 2 major types of updates: libraries & servers.
We update libraries once every 3-5 weeks we update servers all the time (sometimes more than once per day sometimes ever 3-4 days).
Here is a slightly more accurate overview of what it means to update Codename One:
Plugin & related tools - the plugin itself provides the project properties, server connectivity and designer/gui builder tools. It updates as part of the native IDE update process once every 3-5 weeks. You need to explicitly accept an update prompt from the IDE in order to get this update. Bugs in the plugin itself or features for the designer/GUI builder need to go thru that process...
Build.xml - this is technically a part of the plugin update but you need to actually accept changes that we make to the build.xml to get some functionality. On occasion a new feature (e.g. the new GUI builder) needs to update the build.xml code but this will only happen if you go into project properties, click OK and accept the prompt to update the build.xml (if such an update exists).
Client libraries - these are the API's you use when writing Codename One code (typically CodenameOne.jar and related ports). We usually issue an update to those once every 3-5 weeks together with the plugin update. The plugin ships with these but they are only applied to new projects... When you send a build we implicitly update your libraries to the latest version using a separate update process, you can also use "Update Client Libs" within the Codename One preference to update these manually without sending a build.
Device libraries - when you send a build to the servers we use the latest version of the client libraries that might be newer than what you see in the client libs but might not be the latest git master. This allows us to rapidly deploy & test device fixes. This also allows you to work with the code and use newer features that weren't pushed to the Client Libraries. The process of updating the servers is a bit adhoc so there is some opacity around that, we are looking at making this more transparent.
VM & builders - The builder code and VM relate to the server side scripts that generate the code. When you have a compilation error on the servers or need an enhancement there we need to deploy it in a process similar to the device libraries deployment.
Certificate wizard update - this tool is updated in a completely separate update process despite shipping in the plugin. We had a lot of concerns about Apple changing things suddenly when initially creating this so we decided to allow this to update instantly.
I am working on Adobe CQ. I created 2-3 versions(1.2,1.2,1.3) for a particular page in my author instance. Now I tried to package my content page and installed it in another instance. I couldn't see the versions of the page which I installed in another instance.
Can anyone help me out doing this?? I want to migrate my content pages along with their versions from one CQ instance to another??
We are in the same situation. You can extract prior version details using the packaging approach, but you will be precluded from reloading them in due to the new Oak security model. The next issue is that you would need to extract and transform the data, and then reinsert due to the node ID's potentially differing, especially if you are using partial data sets to extract.
Where we have gotten to, and are proving now, is to use the new migration tool to move content from instance to instance, which purportedly has a version extract tool. I will update details here when we get our results back.
UPDATE:
We have tested the CRX2OAK migration tool, and it indeed does move versions across. Using the tool, you can specify filters to only migrate a subset of content, which will then drag the version details across as well.
It seems this approach works quite well for both single tenancy and multi tenancy approaches as it used to using a package for content.
Unfortunately, it can't be used as a portable backup system, as it is an instance to instance solution. It does, however, work well for blue/green deployment strategies.
Versions are stored by path '/jcr:system/jcr:versionStorage' in AEM.
To transfer pages with their versions just create a package with filters for content which you want to move and the version storage path as well, download package and install in other AEM.
If anyone comes across this question like me, here is the summarised answer:
You can use crx2oak utility available from link below to migrate pages and page version across instances:
https://repo.adobe.com/nexus/content/groups/public/com/adobe/granite/crx2oak/
This is a powerful utility with multiple uses (especially in upgrades) as documented in links below:
https://docs.adobe.com/docs/en/aem/6-2/deploy/upgrade/using-crx2oak.html
https://jackrabbit.apache.org/oak/docs/migration.html
The source and destination repositories need to be offline while running this utility so best to plan ahead for this type of migration.
HTH
The internal application which my team works on is currently on a version 10.y.z.build_number.
During a discussion if the next release is significant enough for 10.y+1.z.build_number or it should be 10.y.z+1.build_number I suggested that we could keep it simple and align the version numbers with the calendar.
For example the next release would be 13.8.1.build_number which stands for the 1st release for August 2013. The September one would be 13.9.1.build_number.
The idea has been discarded for now.
For a paid application I can imagine that having the 1st number is useful to easily distinguish between releases with free upgrades and major releases which require paid update. x+1.y.z would be paid and x.y+1.z would be free.
After a quick search I found Jeff Attwood's What's In a Version Number, Anyway?.
However for an unpaid internal application I cannot think of weak points for the calendar-aligned version numbers and the beauty of simplicity speaks to me. As one of the comments on Jeff Atwood's post says: Microsoft Office 2003 is a far more meaningful name than Microsoft Office 11.
The question:
Is my vision clouded by enthusiasm and are there known issues for calendar-aligned version numbers?
For an internal application, the information that the version needs to convey is the revision or commit of the sources from which said app is built.
Since you have access to the VCS managing that app sources, the version can help bug reporting like: "found in revision xxx".
That is far more valuable that a date-based tag, which can be subject to interpretation in order to find the exact version of the sources exhibiting a bug that need to be reporting.
You can combine that with any version policy you want, with tags: git, for instance, can generate a unique version number based on SHA1 + a tag. See:
"Deriving application build version from git describe - how to get a relatively straightforward string?"
"Simulating a global revision number with git"
But the idea remains: date is a metadata managed by a VCS or a build scheduler like Jenkins/Hudson/TeamCity... It doesn't have to be in the public version number of the app.
What need to be in that version number is an info allowing to get the exact sources from which that app was built.