Announcement

Collapse
No announcement yet.

CI/CD Pipeline Sharing?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • CI/CD Pipeline Sharing?

    Is anyone willing to share their CI/CD structure for their plugins? I'm trying to wrap my head around the package install structure and then the package updater structure and they are so far apart and the whole installer/updater just seems archaic and is not very intuitive.

    I'm trying to see if there's a way I can setup a build process so when I build I can produce an installer artifact and an updater artifact and it just doesn't seem easily possible without writing a whole app to do it and generating the install file and the updater_override file.

    Maybe it's just me... but I don't think this part of plugins should feel this hard.

  • #2
    I would not distract yourself overly with the updater.txt format file, if you use the HS developer portal (when you ask for an updater submission HS should send you a link to it) it provides a GUI to submit updates to and you just send them the zip file and they sort out the rest.

    The install.txt file I agree is a bit of a pain however in the main I have only found that I include a large number of files when I am shipping something with many graphics. A lot of functionality is legacy stuff from HS1/HS2 when it was likely that you might have a number of third party DLL files (perhaps non .net) that you need to deploy. That being normal I think has moved on a bit and you might only need to deploy with your main executable, perhaps a JSON library or something and a couple of images. When doing that it is just as easy to edit the file manually, writing an app to do it I doubt you would see a ROI unless you were developing many many plugins.
    My Plugins:

    Pushover 3P | DoorBird 3P | Current Cost 3P | Velleman K8055 3P | LAMetric 3P | Garadget 3P | Hive 3P |
    Yeelight 3P | Nanoleaf 3P

    Comment


    • #3
      Originally posted by mrhappy View Post
      I would not distract yourself overly with the updater.txt format file, if you use the HS developer portal (when you ask for an updater submission HS should send you a link to it) it provides a GUI to submit updates to and you just send them the zip file and they sort out the rest.

      The install.txt file I agree is a bit of a pain however in the main I have only found that I include a large number of files when I am shipping something with many graphics. A lot of functionality is legacy stuff from HS1/HS2 when it was likely that you might have a number of third party DLL files (perhaps non .net) that you need to deploy. That being normal I think has moved on a bit and you might only need to deploy with your main executable, perhaps a JSON library or something and a couple of images. When doing that it is just as easy to edit the file manually, writing an app to do it I doubt you would see a ROI unless you were developing many many plugins.
      So I don't have to maintain an updater package with a contorted different install.txt like is necessary for the updater_override? That is s good to know.

      Once the install.txt for initial package is written then it's not all that bad. But I don't have a way of actually testing it locally without submitting to the portal and waiting...and waiting.... So I was trying to use the updater_override and that is a vastly different package and install.txt and it just isn't the same for testing the package.

      Is there a way to "test" and deploy a install package locally or is the updater_override the only way?

      Comment


      • #4
        Originally posted by jeubanks View Post
        So I don't have to maintain an updater package with a contorted different install.txt like is necessary for the updater_override? That is s good to know.

        Once the install.txt for initial package is written then it's not all that bad. But I don't have a way of actually testing it locally without submitting to the portal and waiting...and waiting.... So I was trying to use the updater_override and that is a vastly different package and install.txt and it just isn't the same for testing the package.

        Is there a way to "test" and deploy a install package locally or is the updater_override the only way?
        HS are now handling the updater so the updater line (that you either host yourself or HS did) is no longer your concern unless you wish to manually distribute it for testing. The only thing you need to worry about is the install.txt file inside the zip file that just tells the updater what to do with all of the files in it.

        The updater_override is the way to locally check your plugin installation is working, all you need is a single line in there and you can indeed leave most of it the same no matter what plugin you are installing.

        Code:
        'Name,  			Updater version, 	File version, 	Notices version
        HomeSeer Updates File,		3.0.0.5,		87,		1
        homeseer.com,anonymous,user@updates,updates3,,,0.0.0.0
        
        
        %<HS TYPE=SUBCAT>Test Plugin
        ' -------------------------------------------------------------
        Nanoleaf 3P,HSPI_NANOLEAF3P.exe, ,0.0.0.4, 63, 2, pluginhost.co.uk,/plugins, Nanoleaf_0_0_0_2.zip, 4, Free, My Name, My Plugin Name, http://www.google.com, http://www.google.com,,
        Some of those fields are ignored because it will be grabbing it from the HS zips directory anyway (it won't be downloading it). You probably only need to change the names of the executable for HS to find it. The others (name, OS version, version number, developers name, icon string) are just used in the updater UI so unless you were testing that bit they could stay the same whatever plugin you were testing.
        My Plugins:

        Pushover 3P | DoorBird 3P | Current Cost 3P | Velleman K8055 3P | LAMetric 3P | Garadget 3P | Hive 3P |
        Yeelight 3P | Nanoleaf 3P

        Comment


        • #5
          Originally posted by mrhappy View Post
          HS are now handling the updater so the updater line (that you either host yourself or HS did) is no longer your concern unless you wish to manually distribute it for testing. The only thing you need to worry about is the install.txt file inside the zip file that just tells the updater what to do with all of the files in it.

          The updater_override is the way to locally check your plugin installation is working, all you need is a single line in there and you can indeed leave most of it the same no matter what plugin you are installing.

          Code:
          'Name,  			Updater version, 	File version, 	Notices version
          HomeSeer Updates File,		3.0.0.5,		87,		1
          homeseer.com,anonymous,user@updates,updates3,,,0.0.0.0
          
          
          %<HS TYPE=SUBCAT>Test Plugin
          ' -------------------------------------------------------------
          Nanoleaf 3P,HSPI_NANOLEAF3P.exe, ,0.0.0.4, 63, 2, pluginhost.co.uk,/plugins, Nanoleaf_0_0_0_2.zip, 4, Free, My Name, My Plugin Name, http://www.google.com, http://www.google.com,,
          Some of those fields are ignored because it will be grabbing it from the HS zips directory anyway (it won't be downloading it). You probably only need to change the names of the executable for HS to find it. The others (name, OS version, version number, developers name, icon string) are just used in the updater UI so unless you were testing that bit they could stay the same whatever plugin you were testing.
          So far the issue I'm having is with doing a local install for testing. If I use the install.txt and normal zip package as-is like for the portal and I add the updater_override.txt then I get a failure during the install. When I put the original install files inside zip and change the install.txt to an UNZIPOVER then everything works. But then I'm dealing really with two different packages.

          I think I may have found the problem. As I sit here writing this and testing. Now to dig through the docs once more and see if I can find the overwrite bit.

          Comment


          • #6
            Originally posted by jeubanks View Post
            So far the issue I'm having is with doing a local install for testing. If I use the install.txt and normal zip package as-is like for the portal and I add the updater_override.txt then I get a failure during the install. When I put the original install files inside zip and change the install.txt to an UNZIPOVER then everything works. But then I'm dealing really with two different packages.

            I think I may have found the problem. As I sit here writing this and testing. Now to dig through the docs once more and see if I can find the overwrite bit.
            You might be jumping two steps ahead - it will unzip the base zip file without specifying any additional commands. I think that the other options are probably for additional zip files inside the main zip file. If it helps this is an example of mine for a simple plugin. As you can see the file will install the .exe and .exe.config in the main HS3 directory and then the NewtonSoft file in the \Bin\Yeelight directory.
            Attached Files
            My Plugins:

            Pushover 3P | DoorBird 3P | Current Cost 3P | Velleman K8055 3P | LAMetric 3P | Garadget 3P | Hive 3P |
            Yeelight 3P | Nanoleaf 3P

            Comment


            • #7
              Originally posted by mrhappy View Post
              You might be jumping two steps ahead - it will unzip the base zip file without specifying any additional commands. I think that the other options are probably for additional zip files inside the main zip file. If it helps this is an example of mine for a simple plugin. As you can see the file will install the .exe and .exe.config in the main HS3 directory and then the NewtonSoft file in the \Bin\Yeelight directory.
              So I back tracked and I was ahead of myself. So I'm on the right path now. However I'm still stuck on why one line in the install.txt is not processing as expected. Here's my install.txt

              Code:
              HSPI_Life360.exe,.,0
              HSPI_Life360.exe.config,.,0
              bin/life360,./bin,0
              html/images/life360,./html/images,0
              Everything BUT the images are copied into the correct location. I've tried adjusting the path but there's no change.

              Scratch that. It also seems like bin now is not working. I need to keep track of my changes better

              Comment


              • #8
                One thing I can see different and I'm dreading if this is right.

                So I can't do a directory copy? I have to list out each filename explicitly?

                Comment


                • #9
                  Originally posted by jeubanks View Post
                  One thing I can see different and I'm dreading if this is right.

                  So I can't do a directory copy? I have to list out each filename explicitly?
                  Indeed this is the terrible thing and about the only issue if you have lots of images, unless I have missed it (I guess you might be able to zip the images then extract them all into the html images directory?? I've never tried it) you can't just copy a directory. This is what I ended up doing but I just named the files relatively consistently so I just had to change a couple of numbers.

                  Code:
                  hive.css,.\html\css,0
                  HiveSetPoint_5.png,.\html\images\Hive,0
                  HiveSetPoint_5_5.png,.\html\images\Hive,0
                  HiveSetPoint_6_0.png,.\html\images\Hive,0
                  HiveSetPoint_6_5.png,.\html\images\Hive,0
                  HiveSetPoint_7_0.png,.\html\images\Hive,0
                  HiveSetPoint_7_5.png,.\html\images\Hive,0
                  HiveSetPoint_8_0.png,.\html\images\Hive,0
                  HiveSetPoint_8_5.png,.\html\images\Hive,0
                  HiveSetPoint_9_0.png,.\html\images\Hive,0
                  HiveSetPoint_9_5.png,.\html\images\Hive,0
                  HiveSetPoint_10_0.png,.\html\images\Hive,0
                  HiveSetPoint_10_5.png,.\html\images\Hive,0
                  HiveSetPoint_11_0.png,.\html\images\Hive,0
                  HiveSetPoint_11_5.png,.\html\images\Hive,0
                  HiveSetPoint_12_0.png,.\html\images\Hive,0
                  HiveSetPoint_12_5.png,.\html\images\Hive,0
                  HiveSetPoint_13_0.png,.\html\images\Hive,0
                  HiveSetPoint_13_5.png,.\html\images\Hive,0
                  HiveSetPoint_14_0.png,.\html\images\Hive,0
                  HiveSetPoint_14_5.png,.\html\images\Hive,0
                  HiveSetPoint_15_0.png,.\html\images\Hive,0
                  HiveSetPoint_15_5.png,.\html\images\Hive,0
                  HiveSetPoint_16_0.png,.\html\images\Hive,0
                  HiveSetPoint_16_5.png,.\html\images\Hive,0
                  HiveSetPoint_17_0.png,.\html\images\Hive,0
                  HiveSetPoint_17_5.png,.\html\images\Hive,0
                  HiveSetPoint_18_0.png,.\html\images\Hive,0
                  HiveSetPoint_18_5.png,.\html\images\Hive,0
                  HiveSetPoint_19_0.png,.\html\images\Hive,0
                  HiveSetPoint_19_5.png,.\html\images\Hive,0
                  HiveSetPoint_20_0.png,.\html\images\Hive,0
                  HiveSetPoint_20_5.png,.\html\images\Hive,0
                  HiveSetPoint_21_0.png,.\html\images\Hive,0
                  HiveSetPoint_21_5.png,.\html\images\Hive,0
                  HiveSetPoint_22_0.png,.\html\images\Hive,0
                  HiveSetPoint_22_5.png,.\html\images\Hive,0
                  HiveSetPoint_23_0.png,.\html\images\Hive,0
                  HiveSetPoint_23_5.png,.\html\images\Hive,0
                  HiveSetPoint_24_0.png,.\html\images\Hive,0
                  HiveSetPoint_24_5.png,.\html\images\Hive,0
                  HiveSetPoint_25_0.png,.\html\images\Hive,0
                  HiveSetPoint_25_5.png,.\html\images\Hive,0
                  HiveSetPoint_26_0.png,.\html\images\Hive,0
                  HiveSetPoint_27_5.png,.\html\images\Hive,0
                  HiveSetPoint_28_0.png,.\html\images\Hive,0
                  HiveSetPoint_28_5.png,.\html\images\Hive,0
                  HiveSetPoint_29_0.png,.\html\images\Hive,0
                  HiveSetPoint_29_5.png,.\html\images\Hive,0
                  HiveSetPoint_30_0.png,.\html\images\Hive,0
                  HiveSetPoint_30_5.png,.\html\images\Hive,0
                  HiveSetPoint_31_0.png,.\html\images\Hive,0
                  HiveSetPoint_31_5.png,.\html\images\Hive,0
                  HiveSetPoint_32_0.png,.\html\images\Hive,0
                  HiveSetPoint_32_5.png,.\html\images\Hive,0
                  HeatingOff.png,.\html\images\HomeSeer\contemporary,0
                  My Plugins:

                  Pushover 3P | DoorBird 3P | Current Cost 3P | Velleman K8055 3P | LAMetric 3P | Garadget 3P | Hive 3P |
                  Yeelight 3P | Nanoleaf 3P

                  Comment


                  • #10
                    Originally posted by mrhappy View Post
                    Indeed this is the terrible thing and about the only issue if you have lots of images, unless I have missed it (I guess you might be able to zip the images then extract them all into the html images directory?? I've never tried it) you can't just copy a directory. This is what I ended up doing but I just named the files relatively consistently so I just had to change a couple of numbers.

                    Code:
                    hive.css,.\html\css,0
                    HiveSetPoint_5.png,.\html\images\Hive,0
                    HiveSetPoint_5_5.png,.\html\images\Hive,0
                    HiveSetPoint_6_0.png,.\html\images\Hive,0
                    HiveSetPoint_6_5.png,.\html\images\Hive,0
                    HiveSetPoint_7_0.png,.\html\images\Hive,0
                    HiveSetPoint_7_5.png,.\html\images\Hive,0
                    HiveSetPoint_8_0.png,.\html\images\Hive,0
                    HiveSetPoint_8_5.png,.\html\images\Hive,0
                    HiveSetPoint_9_0.png,.\html\images\Hive,0
                    HiveSetPoint_9_5.png,.\html\images\Hive,0
                    HiveSetPoint_10_0.png,.\html\images\Hive,0
                    HiveSetPoint_10_5.png,.\html\images\Hive,0
                    HiveSetPoint_11_0.png,.\html\images\Hive,0
                    HiveSetPoint_11_5.png,.\html\images\Hive,0
                    HiveSetPoint_12_0.png,.\html\images\Hive,0
                    HiveSetPoint_12_5.png,.\html\images\Hive,0
                    HiveSetPoint_13_0.png,.\html\images\Hive,0
                    HiveSetPoint_13_5.png,.\html\images\Hive,0
                    HiveSetPoint_14_0.png,.\html\images\Hive,0
                    HiveSetPoint_14_5.png,.\html\images\Hive,0
                    HiveSetPoint_15_0.png,.\html\images\Hive,0
                    HiveSetPoint_15_5.png,.\html\images\Hive,0
                    HiveSetPoint_16_0.png,.\html\images\Hive,0
                    HiveSetPoint_16_5.png,.\html\images\Hive,0
                    HiveSetPoint_17_0.png,.\html\images\Hive,0
                    HiveSetPoint_17_5.png,.\html\images\Hive,0
                    HiveSetPoint_18_0.png,.\html\images\Hive,0
                    HiveSetPoint_18_5.png,.\html\images\Hive,0
                    HiveSetPoint_19_0.png,.\html\images\Hive,0
                    HiveSetPoint_19_5.png,.\html\images\Hive,0
                    HiveSetPoint_20_0.png,.\html\images\Hive,0
                    HiveSetPoint_20_5.png,.\html\images\Hive,0
                    HiveSetPoint_21_0.png,.\html\images\Hive,0
                    HiveSetPoint_21_5.png,.\html\images\Hive,0
                    HiveSetPoint_22_0.png,.\html\images\Hive,0
                    HiveSetPoint_22_5.png,.\html\images\Hive,0
                    HiveSetPoint_23_0.png,.\html\images\Hive,0
                    HiveSetPoint_23_5.png,.\html\images\Hive,0
                    HiveSetPoint_24_0.png,.\html\images\Hive,0
                    HiveSetPoint_24_5.png,.\html\images\Hive,0
                    HiveSetPoint_25_0.png,.\html\images\Hive,0
                    HiveSetPoint_25_5.png,.\html\images\Hive,0
                    HiveSetPoint_26_0.png,.\html\images\Hive,0
                    HiveSetPoint_27_5.png,.\html\images\Hive,0
                    HiveSetPoint_28_0.png,.\html\images\Hive,0
                    HiveSetPoint_28_5.png,.\html\images\Hive,0
                    HiveSetPoint_29_0.png,.\html\images\Hive,0
                    HiveSetPoint_29_5.png,.\html\images\Hive,0
                    HiveSetPoint_30_0.png,.\html\images\Hive,0
                    HiveSetPoint_30_5.png,.\html\images\Hive,0
                    HiveSetPoint_31_0.png,.\html\images\Hive,0
                    HiveSetPoint_31_5.png,.\html\images\Hive,0
                    HiveSetPoint_32_0.png,.\html\images\Hive,0
                    HiveSetPoint_32_5.png,.\html\images\Hive,0
                    HeatingOff.png,.\html\images\HomeSeer\contemporary,0

                    Yeah that's been my problem all along... banging my head around an issue trying to do something.... yeah know "modern" . Not bashing but I was reading through another thread on this same thing and yeah, this is very reminiscent of Windows 3.1 and Win95 days. Here I am just a Unix geek trying to do things the Unix way and I need to go back to DOS

                    I went in and changed the install.txt and included every image in a single line and it all works. I was hoping to avoid that but... it is what it is I suppose.

                    Well at least I can use the same package for the portal site and for doing local install testing.

                    Comment

                    Working...
                    X