<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Disha Meswania</title>
    <description>The latest articles on Forem by Disha Meswania (@dishameswania).</description>
    <link>https://forem.com/dishameswania</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F291116%2Fb4b50fd7-17e0-46a3-a1c6-ccaab67f9381.jpg</url>
      <title>Forem: Disha Meswania</title>
      <link>https://forem.com/dishameswania</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dishameswania"/>
    <language>en</language>
    <item>
      <title>JFrog Platform - Distribution automation using Pipelines</title>
      <dc:creator>Disha Meswania</dc:creator>
      <pubDate>Tue, 02 Jun 2020 09:30:49 +0000</pubDate>
      <link>https://forem.com/jfrog/jfrog-platform-distribution-automation-using-pipelines-2j49</link>
      <guid>https://forem.com/jfrog/jfrog-platform-distribution-automation-using-pipelines-2j49</guid>
      <description>&lt;p&gt;Several organizations that are looking forward to adopting complete DevOps, need a one-stop solution for their CI/CD processes. With the newest addition of JFrog Pipelines, the JFrog platform provides end-to-end automation of your DevOps workflow. &lt;/p&gt;

&lt;p&gt;As Continuous integrations with JFrog Pipelines is a major amendment for many organizations - modifying the build processes can be a slow and gradual process. However, the Continuous delivery process can be automated easily with the one-stop solution of the &lt;a href="https://www.jfrog.com/confluence/display/JFROG/JFrog+Pipelines" rel="noopener noreferrer"&gt;JFrog Platform&lt;/a&gt; using Distribution and Pipelines. &lt;/p&gt;

&lt;p&gt;In this blog, we will be focusing on the step-by-step configuration of the JFrog Pipeline to automate the Distribution flow to various Edge nodes.&lt;/p&gt;

&lt;p&gt;Pre-requisites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.jfrog.com/confluence/display/JFROG/JFrog+Distribution" rel="noopener noreferrer"&gt;JFrog Distribution&lt;/a&gt; - Installed and configured with the &lt;a href="https://www.jfrog.com/confluence/display/JFROG/Configuring+Distribution+Assets" rel="noopener noreferrer"&gt;required assets&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;JFrog Pipelines - Installed and &lt;a href="https://www.jfrog.com/confluence/display/JFROG/Pipelines+Step-By-Step#PipelinesStep-By-Step-add-pipeline-sourceAddaPipelineSource" rel="noopener noreferrer"&gt;Pipeline source&lt;/a&gt;, &lt;a href="https://www.jfrog.com/confluence/display/JFROG/Pipelines+Step-By-Step#PipelinesStep-By-Step-CreateaNodePool" rel="noopener noreferrer"&gt;Node pools&lt;/a&gt; defined&lt;/li&gt;
&lt;li&gt;JFrog Pipelines - &lt;a href="https://www.jfrog.com/confluence/display/JFROG/Artifactory+Integration" rel="noopener noreferrer"&gt;Artifactory Integration&lt;/a&gt; and &lt;a href="https://www.jfrog.com/confluence/display/JFROG/Distribution+Integration" rel="noopener noreferrer"&gt;Distribution Integration&lt;/a&gt; defined&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Step1:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.jfrog.com/confluence/display/JFROG/CreateReleaseBundle" rel="noopener noreferrer"&gt;Creating a release bundle&lt;/a&gt; in Distribution using Pipeline native steps and resources&lt;/p&gt;

&lt;p&gt;For Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      - name: Create_ReleaseBundle
        type: CreateReleaseBundle
        configuration:
          releaseBundleName:        Demo_RB
          releaseBundleVersion:     V1.2.${run_number}
          inputResources:
            - name:                final_docker_gradleBuild_Info
            - name:                final_docker_npmBuild_Info 
          outputResources:
            - name:                New_ReleaseBundle
          description:              Release Bundle of gradle and npm 
          releaseNotes:
            syntax:                 markdown
            content: |
              ## Heading
                * Bullet
                * Points
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Please note; the &lt;em&gt;inputResources&lt;/em&gt; here are defined as &lt;a href="https://www.jfrog.com/confluence/display/JFROG/BuildInfo" rel="noopener noreferrer"&gt;build info resources&lt;/a&gt; in this Pipeline)&lt;/p&gt;

&lt;p&gt;Once the bundle is created, we can view it in JFrog Distribution as below;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjlj5v40marqf3rag06ba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjlj5v40marqf3rag06ba.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Step2:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.jfrog.com/confluence/display/JFROG/SignReleaseBundle" rel="noopener noreferrer"&gt;Sign the release bundle&lt;/a&gt; (Can be done with the above step by adding the &lt;em&gt;sign&lt;/em&gt; parameter as &lt;em&gt;‘true’&lt;/em&gt;)&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   - name: Sign_ReleaseBundle
     type: SignReleaseBundle
     configuration:
     inputResources:
       - name:    New_ReleaseBundle
         trigger: true
     outputResources:
       - name:  Signed_ReleaseBundle
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Step3:&lt;/strong&gt;&lt;br&gt;
Creating the &lt;a href="https://www.jfrog.com/confluence/display/JFROG/DistributionRule" rel="noopener noreferrer"&gt;Distribution rule resource&lt;/a&gt; to define the &lt;a href="https://www.jfrog.com/confluence/display/JFROG/JFrog+Artifactory+Edge" rel="noopener noreferrer"&gt;Edge nodes&lt;/a&gt; where we want to distribute our releases&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   - name:           Distribution_Rule
     type:           DistributionRule
     configuration:
       sourceDistribution:   distribution
       serviceName:          edge-jpd
       siteName:             "edge-jpd"
       cityName:             "*"
       countryCodes:
         - "*"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Step4:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.jfrog.com/confluence/display/JFROG/DistributeReleaseBundle" rel="noopener noreferrer"&gt;Distributing the release bundle&lt;/a&gt; by using the input resources - Release bundle + Distribution rule created in the above steps&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   - name: Distribute_ReleaseBundle
     type: DistributeReleaseBundle
     configuration:
       dryRun: false
       inputResources:
         - name: Signed_ReleaseBundle
           trigger: true
         - name: Distribution_Rule
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the Distribution is complete - we can view the release bundle completion in JFrog UI of both Source and Destination Edge nodes as below:&lt;/p&gt;

&lt;p&gt;In Source - Distribution tracking&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy3y23fnh2j4epehgyff4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fy3y23fnh2j4epehgyff4.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Edge node - Available packages that were Distributed&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd78rk4ayvphs3hj28k4c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fd78rk4ayvphs3hj28k4c.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Thus, in some simple steps - we can automate the whole process of distribution using JFrog Pipelines. &lt;/p&gt;

&lt;p&gt;In other words, our continuous delivery processes can be streamlined along with our Continuous integration processes and we are able to have an end-to-end CI/CD implementation.&lt;/p&gt;

&lt;p&gt;Wishing you fast and healthy software deliveries! &lt;br&gt;
&lt;em&gt;The JFrog Platform&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>continuousdelivery</category>
      <category>pipelines</category>
      <category>distribution</category>
    </item>
    <item>
      <title>Unified Permissions Model</title>
      <dc:creator>Disha Meswania</dc:creator>
      <pubDate>Wed, 18 Mar 2020 14:24:10 +0000</pubDate>
      <link>https://forem.com/jfrog/unified-permissions-model-1bgm</link>
      <guid>https://forem.com/jfrog/unified-permissions-model-1bgm</guid>
      <description>&lt;p&gt;In today’s DevOps world, developers like you are compelled to work with several bits and pieces of different software to put CI/CD processes together. What if I told you an end-to-end DevOps set of solutions -- &lt;a href="https://www.jfrog.com/confluence/display/JFROG/Get+Started"&gt;The JFrog Platform&lt;/a&gt; -- enables you to have all these components together in a single unified software experience. &lt;/p&gt;

&lt;p&gt;To create this, we at JFrog have unified our installers, the file-structures, the administration functions, the metadata from different parts as well as the UI and permissions. &lt;/p&gt;

&lt;p&gt;I would like to focus here on the unification of permissions. Specifically, why we did it and how this actuates the permissions model for our end-to-end platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHY UNIFY PERMISSIONS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An inevitable part of administering the DevOps workflow is to have a mechanism for managing user permissions to different resources in an efficient manner. With different resources, i.e. parts of different DevOps tools, working independently, administrators need to ensure this mechanism is in place for CRUD (Create, Read, Update and Delete) permissions for each resource. Unifying user permissions is an important benefit to administrators for ease of use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HOW THIS ENABLES THE PLATFORM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We identified each resource that can be qualified for a different level of access and enabled them to have role-based permissions for these resources in a &lt;a href="https://www.jfrog.com/confluence/display/JFROG/Permissions"&gt;single module&lt;/a&gt;. Here’s how;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identifying the resources: All you need to do is add relevant resources such as Repositories and Builds (from Artifactory), Release bundles (from Distribution), Destinations (Edge nodes) and Pipeline Sources (From JFrog Pipelines) to a single Permission target.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_EpThXqr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zfmg7aspvanmq89v47u6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_EpThXqr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zfmg7aspvanmq89v47u6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Selecting Users/Groups and defining CRUD permissions for each role: When selecting several users or groups,  you can simply select an entity to allocate necessary permissions to them as shown below:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sZuzDCuC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w67yeg90h21vuv9y6urx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sZuzDCuC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w67yeg90h21vuv9y6urx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These permissions define &lt;a href="https://www.jfrog.com/confluence/display/JFROG/Permissions#Permissions-GlobalPermissions"&gt;various action items&lt;/a&gt; that are available for the resources selected. &lt;br&gt;
Briefly, they are CRUD permissions + Xray Metadata permissions for Artifactory resources such as Repositories, Builds and Release bundles. Additionally, Distribute and Trigger permissions are specifically for Distribution and JFrog Pipelines. &lt;/p&gt;

&lt;p&gt;The permissions as mentioned above can be assigned to users/groups that can be linked to any identity provider that is synchronized with Artifactory with &lt;a href="https://www.jfrog.com/confluence/display/JFROG/Security"&gt;simple integrations&lt;/a&gt; such as LDAP/SAML. &lt;/p&gt;

&lt;p&gt;The process of managing the whole permissions model thus becomes simpler and complete for the admins. Enjoy the unification and &lt;a href="https://jfrog.com/platform/free-trial/"&gt;try out the whole new platform&lt;/a&gt; yourself!&lt;/p&gt;

</description>
      <category>devops</category>
      <category>security</category>
    </item>
    <item>
      <title>Managing your Public and Private Container Registries</title>
      <dc:creator>Disha Meswania</dc:creator>
      <pubDate>Thu, 12 Dec 2019 16:27:12 +0000</pubDate>
      <link>https://forem.com/dishameswania/managing-your-public-and-private-container-registries-1jf2</link>
      <guid>https://forem.com/dishameswania/managing-your-public-and-private-container-registries-1jf2</guid>
      <description>&lt;p&gt;Container registries have become an essential part of our (work) lives with the increasing usage of various containers, and container management tools, used in our CI/CD processes. As developer and DevOps enthusiasts, we surely find the need to have a registry that can be robust and scalable according to our needs. It is also requisite that the access to these registries is in accordance with our business use cases.  &lt;/p&gt;

&lt;p&gt;Using the &lt;a href="https://jfrog.com/container-registry/"&gt;JFrog Container registry&lt;/a&gt;, here’s how we can have our public and private repositories segregated and managed using the basic permissions model. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public repositories&lt;/strong&gt;&lt;br&gt;
The public repositories are the ones that can be accessed by anyone in our organization regardless of the team they belong to. To make them public, all we need to do is to enable anonymous access generally (Under Admin-&amp;gt; Security Configuration) and give the user ‘anonymous’ appropriate permissions to these repositories or builds that use these public repositories.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 1: Enabling anonymous access to the instance&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c1n0Qqbk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3qz43yesmf6oeh2a9bs4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c1n0Qqbk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3qz43yesmf6oeh2a9bs4.png" alt="Alt Text"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 2: Allocating appropriate resources (repositories/builds)&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yuNSLDZR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4n5f2opag9qm3k1eeild.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yuNSLDZR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4n5f2opag9qm3k1eeild.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 3: Giving the user ‘anonymous’ required permissions to the resources&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NPJ9VQ3j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/x49co8zejf2z1j23hnoj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NPJ9VQ3j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/x49co8zejf2z1j23hnoj.png" alt="Alt Text"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private repositories&lt;/strong&gt;&lt;br&gt;
The private repositories are the ones that are being utilized by a particular user/team or a group of teams in your organization. The access to these repositories can be based on the teams - groups, or users.   &lt;/p&gt;

&lt;p&gt;To give pertinent role-based access control to these repositories, we just need to allocate users or groups apt permissions to these resources (repositories/builds) based on the use cases.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 1:Include the relevant resources (Private repositories/Builds) in a Permission Target&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XjFkRdqT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/jtfiuq5brxz8tldes2ll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XjFkRdqT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/jtfiuq5brxz8tldes2ll.png" alt="Alt Text"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 2: Give apt permissions based on the Business use cases (Team-based permissions)&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jyHuxzTO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/72hj8g3qohyxxi0q168g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jyHuxzTO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/72hj8g3qohyxxi0q168g.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, the users of a registry can authenticate using &lt;a href="https://www.jfrog.com/confluence/display/RTF/Managing+Security+with+LDAP"&gt;LDAP integration&lt;/a&gt; as the JFrog Container Registry is powered by Artifactory. These users can then be set up to have different permissions/groups in the Registry instance based on the Permissions model of the organization.&lt;/p&gt;

&lt;p&gt;In this way, managing all of your public, as well as private registries, can be easy and secure with a Container Registry that you can always trust.&lt;/p&gt;

</description>
      <category>containers</category>
      <category>registry</category>
      <category>devops</category>
      <category>security</category>
    </item>
  </channel>
</rss>
