4

Sorry if title isn't correct. I'm trying to figure out what to search for on this matter.

I'm looking for the easiest way to automatically have my semantic versioning and commits visible on my site when commits / releases happen.

I recently started using Git, GitHub, GitFlow, Axosoft, and GitKraken. Are there any options, plugins, or RSS type feeds in those products that do this already or is this something I would have to create using Git webhooks which would call my site and insert into my DB?

I can handle the PHP/MySQL. I'm just looking for recommendations on how to setup the communication between the products I listed above so that I can create a PHP page showing this to my customers...

  • [timestamp] - RELEASE v2.1.1
  • [timestamp] - [axof: 2] ENHANCED XYZ [...a sentence or two of details...]
  • [timestamp] - RELEASE v2.0.1
  • [timestamp] - [axof: 1] BUG ABC FIXED [...a sentence or two of details...]
4
  • 1
    What is your question? How to manage semantic versioning or CI? For CI you need a service like AppVeyor, Bitbucket, Travis, VSTS just to name a few (in alpha order) or a tool like Bamboo, Jenkins, TeamCity, TFS (in alpha order). Recently hosting services and cloud provider offers such a capability for public (and sometime private) Git repositories. Jan 16, 2018 at 16:48
  • Thanks. I'll look into those services. Sorry if the OP wasn't clear, retry... After I finish a programming task I do GitFlow->Finish feature. I would like for that new feature to automatically be visible on my site for customers to see ([timestamp] - [version] - [commit comments]). So this would be an always up-to-date version of release notes that I don't have to manually maintain. I am familiar with GitHub webhooks so I could write my own process but I'm wondering if there is any service/plugin that already does something like this. I don't care if it has to be purchased. Thanks!
    – gfrobenius
    Jan 16, 2018 at 17:04
  • 1
    All the services I listed support GitHub and there are many more, you can still do-it-yourself but I find it exaggerate in your scenario Jan 16, 2018 at 17:08
  • 1
    I think I would just use the GitHub API... it sounds like anything else is over-complicating it.
    – Tim Malone
    Jun 24, 2018 at 19:54

3 Answers 3

1

We did have a similar situation and did try out a few options. Let me suggest them and you can choose if they suit your need.
We had Jira for User Story (requirements), Bitbucket for SCM, Jenkins for CI orchestration, to name a few. Am not going into the other components since they may not be relevant from what I understand based on the description.
So, to start with, Jira would hold our (developer) user stories, and the developers start analysis based on that. Once they are clear, they pull the relevant code base from Bitbucket straight into the IDE (Eclipse) using git plugins, complete the work and push code back into Bitbucket. Two things were needed to be followed 'as part of the comment given during commit':

  1. The Jira ID for the user story for which the change is being made
  2. The actual comments for the change
    E.g., [JIR-BBA]:: Code updated to pull correct URL from database.

Then, in the Jenkins job, we strip down the same into 'JIR-BBA', i.e. Jira ID, and the comment. The Jira ID would then be fed into the Bitbucket plugin which would directly update the corresponding Jira story. And this would also provide a hyperlink in Bitbucket which would directly take you to the job run in Jenkins, thus providing a 2-way communication.

Now the other part in your question, about the status of the build. For this we followed the below steps:

  1. Created a Python script that would connect to Jira and can be run from the command prompt. This is easily available if you search for those 2 terms. The script would take in 4 parameters: i. Jira URL, ii. Jira credential, iii. Jira ID, iv. Comments
  2. In Jenkins, we called the python script which would connect to Jira using the above credentials, and update the correct Jira task with the comments the developer provided (from the build job) and the job completion status (from SIT Deploy, SIT Test, UAT Deploy, etc.)
  3. Now, inside Jira, once you go to the task, you shall find comments being updated for each of the jobs like 'Dev done', 'QA done', etc. depending on how you would want to get it update for each of the Jenkins jobs. That way, you are maintaining a traceability for each of the requirements so that you know which stage each of them are deployed into or test failed.

    Thus you do not need to go into Jenkins each time for the status as the latest is already available in Jira.
3
  • Could you please provide the reason for downvote? Not sure if the answer was unclear or did not address the specificity of the question. Aug 2, 2018 at 14:33
  • thanks for your answer. I didn't downvote it. I got pulled off on some other tasks so I will come back to all these answers later and try them out.
    – gfrobenius
    Sep 25, 2018 at 14:51
  • @KarthikVenkatesan Don't worry too much about downvotes without related comments. Instead just ignore them (since you cannot "learn" from such votes about how to improve your post, right?). Moreover, if you care about the -2 rep related to a downvote, just remember 1 upvote compensates for 5 downvotes. So please keep trying and answering!
    – Pierre.Vriens
    Oct 24, 2019 at 19:30
0

If we are talking about Continuous Deployment then you need to focus on the following steps:

  1. store continuously updated code
  2. run quality assessments
  3. run security assessments
  4. prepare release
  5. finish release -> bump up development version
  6. deploy release to customer's environment

You use GitHub to store the code. That's great. All next steps might be covered with Travis CI or other CI available:

  • quality & security assessment - separate build step with unit tests, test coverage reports, code quality check or external tool integration such as CoverityScan, XRay etc.
  • releases - common functionality in TravisCI as you can see here
  • code base versioning - might be covered using additional scripts based on GitFlow
  • deployment - if you use Heroku as PHP runtime then deployment from Travis CI would be nice and clean (for others you would probably configure more details)

Good example can be found here but you need to change it in order to support PHP instead of Nodejs. Based on GitFlow btw.

As for the page for your customers with software versions you can use GitHub Pages with Repository Metadata plugin. More info here.

0

There is a hub utility from GitHub which extend your git with extra features and commands. This includes creating the releases on the GitHub.

$ hub release --help
usage: git release
   or: git release create [-d] [-p] [-a <ASSETS_FILE>] [-m <MESSAGE>|-f <FILE>] <TAG>
Retrieves releases from GitHub for the project that the "origin" remote points to.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.