<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Vaishnavi-Asawale on Launchpad Blog</title>
    <link>https://blog.launchpad.net/authors/vaishnavi-asawale/</link>
    <description>News and updates from the Launchpad team</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 28 Oct 2025 11:31:12 +0000</lastBuildDate>
    <atom:link href="https://blog.launchpad.net/feed/authors/vaishnavi-asawale/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Make fetch service opt-in</title>
      <link>https://blog.launchpad.net/general/make-fetch-service-opt-in/</link>
      <pubDate>Tue, 28 Oct 2025 11:31:12 +0000</pubDate>
      <dc:creator>Vaishnavi Asawale</dc:creator>
      <guid isPermaLink="false">https://blog.launchpad.net/?p=4492</guid>
      <description>&lt;p&gt;Launchpad Builders do not have direct access to the Internet. To reach external resources, they must acquire an authentication token that allows access to a restricted set of URLs via a proxy. This can either be a custom authenticated builder proxy or the fetch service.&lt;/p&gt;
&lt;p&gt;The fetch service is a custom sophisticated context-aware forward proxy. Whereas the builder proxy allows requests to allowlisted URLs, the fetch service also keeps track of requests and dependencies for a build.&lt;/p&gt;
&lt;p&gt;Users can now opt-in to use the fetch service while building snaps, charms, rocks and sourcecraft packages. You can read more about the fetch service &lt;a href=&#34;https://documentation.ubuntu.com/launchpad/developer/reference/services/fetch-service/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why is the fetch service important?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To achieve traceability and reproducibility, artifact dependencies retrieved during a build must be identified. The fetch service mediates network access between the build host and the outside world, examining the request protocol, creating a manifest of the downloaded artifacts, and keeping a copy of the artifacts for archival and metadata extraction for each package build.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to use the fetch service?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To be able to use the fetch service, users must opt-in. For snaps, charms, rocks and sourcecraft packages, the &lt;code&gt;use_fetch_service&lt;/code&gt; flag should be set to &lt;code&gt;true&lt;/code&gt; in the API. For snaps and charms, this setting is also available in the &lt;em&gt;Edit Recipe&lt;/em&gt; UI page.&lt;/p&gt;
&lt;p&gt;The fetch service can be run in two modes, &amp;ldquo;strict&amp;rdquo; and &amp;ldquo;permissive&amp;rdquo;, where it defaults to the former. Both modes only allow certain resources and formats, as defined by inspectors which are responsible for inspecting the requests and the various downloads that are made during the build, ensuring that the requests are permitted.&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;strict&amp;rdquo; mode errors out if any restrictions are violated. The &amp;ldquo;permissive&amp;rdquo; mode works similarly, but only logs a warning when encountering any violations. The mode can be configured using the &lt;code&gt;fetch_service_policy&lt;/code&gt; option via the API. For snaps and charms, the mode can also be selected from a dropdown on the &lt;em&gt;Edit Recipe&lt;/em&gt; UI page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When to use the fetch service?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Use the fetch service when you need to keep track of requests and dependencies for a build, e.g., when you need to verify that the artifacts belong to secure, trusted sources.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
