<?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: Davide 'CoderDave' Benvegnù</title>
    <description>The latest articles on Forem by Davide 'CoderDave' Benvegnù (@n3wt0n).</description>
    <link>https://forem.com/n3wt0n</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%2F215856%2Fd2a3ead9-230c-45cc-9472-f39931f53871.png</url>
      <title>Forem: Davide 'CoderDave' Benvegnù</title>
      <link>https://forem.com/n3wt0n</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/n3wt0n"/>
    <language>en</language>
    <item>
      <title>Security Best Practices For GitHub Actions Secrets</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Tue, 26 Sep 2023 03:01:10 +0000</pubDate>
      <link>https://forem.com/n3wt0n/security-best-practices-for-github-actions-secrets-jka</link>
      <guid>https://forem.com/n3wt0n/security-best-practices-for-github-actions-secrets-jka</guid>
      <description>&lt;p&gt;Today we talk about security in GitHub, and specifically about how to properly use and configure GitHub Actions Secrets. &lt;/p&gt;

&lt;p&gt;This article is part of a new GitHub Security Hardening series, so stay tuned for new articles about this topic.&lt;/p&gt;

&lt;p&gt;Also, if you are new to GitHub Actions, I recommend you to check the &lt;a href="https://youtu.be/msCWg2F4sck" rel="noopener noreferrer"&gt;intro video I made&lt;/a&gt; about the topic, there I cover all you can do with GitHub Actions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;As usual, if you are a &lt;strong&gt;visual learner&lt;/strong&gt;, or simply prefer to watch and listen instead of reading, here you have &lt;strong&gt;the video with the whole explanation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/2yHRq7aWDKM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/2yHRq7aWDKM" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/2yHRq7aWDKM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you rather prefer reading, well... let's just continue :)&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's Talk About Secrets
&lt;/h3&gt;

&lt;p&gt;We hopefully all agree that sensitive values should &lt;strong&gt;never be stored as plain text&lt;/strong&gt; in workflow files, but rather as secrets.&lt;/p&gt;

&lt;p&gt;Secrets can be configured at the enterprise, organization, repository, or environment level, allowing you to store sensitive information in GitHub, as I explained in &lt;a href="https://youtu.be/tXv_npAP90k" rel="noopener noreferrer"&gt;this video&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Storing these secrets is not a problem as everything is safely managed by GitHub. They are even &lt;strong&gt;encrypted on the client side&lt;/strong&gt; before reaching GitHub! However, using them can be problematic.&lt;/p&gt;

&lt;p&gt;To help prevent accidental leakages, in fact, GitHub redacts any secrets that appear in run logs and replace their values with stars (&lt;code&gt;***&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiouqofcln97s8ud850zz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiouqofcln97s8ud850zz.png" alt="GitHub replaces secrets with stars in logs" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This redaction looks for &lt;strong&gt;exact matches&lt;/strong&gt; of any configured secrets, as well as &lt;strong&gt;common encodings&lt;/strong&gt; of the values, like for example Base64. There are however multiple ways in which a secret value can be transformed, and because of that this redaction is not 100% guaranteed.&lt;/p&gt;

&lt;p&gt;As a result, there are some things we can proactively do, and good practices we should follow, to help ensure secrets are redacted and to limit other risks associated with secrets.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don't Use Structured Data
&lt;/h3&gt;

&lt;p&gt;First of all, if possible &lt;strong&gt;don’t use structured data as a secret&lt;/strong&gt;. Using structured data can cause secret redaction within logs to fail, as redaction relies on identifying an exact match of the secret value. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cqbd32o9etuqaqa9ydp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cqbd32o9etuqaqa9ydp.png" alt="Structured vs Unstructured secrets" width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, avoid using a blob of JSON, XML, YAML, or similar as secret value, this significantly reduces the probability that the secrets will be properly redacted. &lt;br&gt;
Instead, create &lt;strong&gt;individual secrets for each sensitive value&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Again, this is not always possible, but doing so greatly reduce risks.&lt;/p&gt;
&lt;h3&gt;
  
  
  Register ALL Secrets
&lt;/h3&gt;

&lt;p&gt;Another important step is to register all secrets used within workflows. If a secret is used to generate another sensitive value within a workflow, that &lt;strong&gt;generated value should be formally registered as a secret&lt;/strong&gt;. This ensures that the value will be redacted if it ever appears in the logs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjki32zzmdu47kukw5f9h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjki32zzmdu47kukw5f9h.png" alt="Use Secrets in GitHub Actions" width="800" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, when using a private key to generate a signed JWT for accessing a web API, it's important to register that JWT as a secret. Otherwise, the JWT won't be redacted if it ever enters the log output.&lt;/p&gt;

&lt;p&gt;It's important to note that registering secrets also applies to &lt;strong&gt;any sort of transformation or encoding&lt;/strong&gt;. If your secret is transformed in any way (for example with Base64 or URL encoding), be sure to register the new value as a secret as well.&lt;/p&gt;

&lt;p&gt;Let me know in the comments down below if you like me to produce an article and/or a video on how to register anything as a secret in GitHub Actions.&lt;/p&gt;
&lt;h3&gt;
  
  
  Audit How Secrets Are Handled
&lt;/h3&gt;

&lt;p&gt;In addition, it is important to audit how secrets are handled. This involves reviewing how secrets are used to ensure they are being handled properly. &lt;/p&gt;

&lt;p&gt;To do this, you can review the source code of the repository executing the workflow and check any actions used in the workflow. For example, make sure that secrets are not sent to unintended hosts or explicitly printed to log output.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl4uk0vn58u2ka0ss2lr9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl4uk0vn58u2ka0ss2lr9.png" alt="Source Code of a GitHub Action handling secrets" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After testing valid and invalid inputs, view the run logs for your workflow and confirm that secrets are properly redacted or not shown. It is not always clear how a command or tool you are invoking will send errors to &lt;code&gt;STDOUT&lt;/code&gt; and &lt;code&gt;STDERR&lt;/code&gt;, and secrets may end up in error logs. Therefore, it is good practice to manually review the workflow logs to ensure that secrets are properly handled.&lt;/p&gt;
&lt;h3&gt;
  
  
  Use Minimally Scoped Credentials
&lt;/h3&gt;

&lt;p&gt;Next, it’s a good practice, and not only for GitHub Actions Secrets, using &lt;strong&gt;credentials that are minimally scoped&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ensure that the credentials used in workflows have the minimum privileges required. Keep in mind that any user with write access to your repository also has read access to all the secrets configured in it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fel6vnletkksxtb461i09.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fel6vnletkksxtb461i09.png" alt="Setting the proper permissions for the GITHUB_TOKEN" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Actions can access the &lt;code&gt;GITHUB_TOKEN&lt;/code&gt; from the &lt;code&gt;github.token&lt;/code&gt; context and you should ensure that this token is only granted the minimum required permissions. It is good security practice to set the default permission for &lt;code&gt;GITHUB_TOKEN&lt;/code&gt; to read access only for repository contents. &lt;br&gt;
The permissions can then be increased for individual jobs within the workflow file, as required.&lt;/p&gt;
&lt;h3&gt;
  
  
  Audit and Rotate Registered Secrets
&lt;/h3&gt;

&lt;p&gt;Another thing we should all do when working with secrets is to &lt;strong&gt;audit and rotate&lt;/strong&gt; registered secrets. &lt;/p&gt;

&lt;p&gt;For example, we can periodically review the registered secrets to confirm they are still required and remove those that are no longer needed. I personally set this as a recurrent task for my team so every months we have a review of all secrets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59oiwzb0ibn3figgkfh9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59oiwzb0ibn3figgkfh9.png" alt="Security audit task in Jira" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We should also &lt;strong&gt;rotate secrets periodically&lt;/strong&gt; to reduce the window of time during which a compromised secret is valid.&lt;/p&gt;
&lt;h3&gt;
  
  
  Require Approval for Accessing Secrets
&lt;/h3&gt;

&lt;p&gt;And final good practice, consider requiring &lt;strong&gt;review for access to secrets&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not everyone may be aware of this, but you can use required reviewers to protect environment secrets. A workflow job cannot access environment secrets until a reviewer grants approval. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmx2xpyomlkryjez62bi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmx2xpyomlkryjez62bi.png" alt="Secrets access with approval in GitHub Actions" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is of course only available in GitHub Enterprise or on public repositories, but it is something &lt;strong&gt;you should definitely do&lt;/strong&gt; if you can.&lt;/p&gt;
&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;Let me know in the comments below if you have any other tip and best practices when working with GitHub Secrets. &lt;/p&gt;

&lt;p&gt;Also, check out &lt;a href="https://youtu.be/tXv_npAP90k" rel="noopener noreferrer"&gt;this video&lt;/a&gt;, in which I explain how to properly store Secrets in GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;🆘 &lt;a href="https://geni.us/cdconsult" rel="noopener noreferrer"&gt;Get Help With DevOps&lt;/a&gt;&lt;br&gt;
📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/2yHRq7aWDKM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>github</category>
      <category>security</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>GitHub: Composite Actions vs Reusable Workflows [Updated 2023]</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Tue, 12 Sep 2023 08:27:39 +0000</pubDate>
      <link>https://forem.com/n3wt0n/github-composite-actions-vs-reusable-workflows-updated-2023-bl8</link>
      <guid>https://forem.com/n3wt0n/github-composite-actions-vs-reusable-workflows-updated-2023-bl8</guid>
      <description>&lt;p&gt;Understanding the differences between Composite Actions and Reusable Workflows in GitHub Actions can be more complex than you think… especially after the latest changes GitHub made.&lt;/p&gt;

&lt;p&gt;But hey, I’m here for you. Let’s find out together what those 2 features have in common, what the differences are, and when you should use one instead of the other.&lt;/p&gt;

&lt;h3&gt;
  
  
  Into
&lt;/h3&gt;

&lt;p&gt;I’ve already written an &lt;a href="https://dev.to/n3wt0n/composite-actions-vs-reusable-workflows-what-is-the-difference-github-actions-11kd"&gt;article&lt;/a&gt; and made a &lt;a href="https://youtu.be/4lH_7b5lmjo" rel="noopener noreferrer"&gt;video&lt;/a&gt; on this subject before, however that was almost 1 and a half years ago and, as many pointed out in the comments , GitHub has substantially changed the featureset since… so it’s time for an updated comparison.&lt;/p&gt;

&lt;p&gt;Btw if you want to have a deep dive into either Composite Actions or Reusable Workflows, be sure to check the in-depth videos I made about them (&lt;a href="https://youtu.be/4lH_7b5lmjo" rel="noopener noreferrer"&gt;here&lt;/a&gt; and &lt;a href="https://youtu.be/lRypYtmbKMs" rel="noopener noreferrer"&gt;here&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;As usual, if you are a &lt;strong&gt;visual learner&lt;/strong&gt;, or simply prefer to watch and listen instead of reading, here you have &lt;strong&gt;the video with the whole explanation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zc19mR3O4a4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/zc19mR3O4a4" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/zc19mR3O4a4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you rather prefer reading, well... let's just continue :)&lt;/p&gt;

&lt;h3&gt;
  
  
  About Composite Actins and Reusable Workflows
&lt;/h3&gt;

&lt;p&gt;In general, &lt;strong&gt;Reusable Workflows&lt;/strong&gt; are a way to avoid duplication as you can reuse the same workflow in multiple other workflows, and perhaps create a library of proven and effective workflows that can be centrally maintained.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Composite Actions&lt;/strong&gt;, instead, allows you to combine multiple steps within one action. For example, you can use this feature to bundle together multiple run commands into an action, and then have a workflow that executes the bundled commands as a single step using that action.&lt;/p&gt;

&lt;p&gt;And this brings me to the first difference between the 2: Visibility and Logging.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Visibility and Logging
&lt;/h3&gt;

&lt;p&gt;I think this point is &lt;strong&gt;pretty important&lt;/strong&gt; but often overlooked. &lt;/p&gt;

&lt;p&gt;With Reusable Workflows you have a &lt;strong&gt;very rich log&lt;/strong&gt; of what is happening, and every single job and step is logged independently in real time as you can see below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzxl2e30bs806z7myo098.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzxl2e30bs806z7myo098.png" alt="Reusable Workflows Logs" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This specific workflow has 2 jobs in it, and each job is logged together with its steps. All clear and organized.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkgtnwp0ligtx0auwj1qo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkgtnwp0ligtx0auwj1qo.png" alt="Composite Actions Logs" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is not the case, however, with Composite Actions. As we have just seen, Composite Actions are a way to &lt;em&gt;group&lt;/em&gt; multiple steps in one… this also means that when executing that step you don’t have visibility on all of the parts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkl7hrc3amerl4orjrd5x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkl7hrc3amerl4orjrd5x.png" alt="Multiple Jobs" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All you have is a &lt;strong&gt;single log&lt;/strong&gt; of a single step... even if it contains multiple steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Jobs
&lt;/h3&gt;

&lt;p&gt;Another difference, which is the &lt;strong&gt;biggest difference&lt;/strong&gt; in my opinion, is about Jobs.&lt;/p&gt;

&lt;p&gt;As we have said before, Composite Actions allow you to only have a flat list of steps. Therefore, you &lt;strong&gt;cannot have multiple jobs&lt;/strong&gt; in a single Composite Action. &lt;/p&gt;

&lt;p&gt;In fact, a Composite Action doesn’t even specify a &lt;code&gt;job&lt;/code&gt; keyword, but uses &lt;code&gt;runs&lt;/code&gt; instead, and can only be consumed from within a job in the caller repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjslsko9fkfy33way3daw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjslsko9fkfy33way3daw.png" alt="No Jobs in Composite Actions" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because of this, you can see a Composite Action basically like any other action you have on the marketplace.&lt;/p&gt;

&lt;p&gt;The story is different, however, for Reusable Workflows.&lt;/p&gt;

&lt;p&gt;They do &lt;strong&gt;define jobs&lt;/strong&gt; inside them, and because of that you can have as many jobs as you want in a single Reusable Workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8jrmt9jj5dxbkltayt8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8jrmt9jj5dxbkltayt8.png" alt="Jobs in Reusable Workflows" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And since they do use jobs, and you have to specify where the job will run, we can take this a little further: if your job needs to run on a specific runner or machine, you need to use Reusable Workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Calling them
&lt;/h3&gt;

&lt;p&gt;Next, and actually last, difference between Composite Actions and Reusable Workflows is &lt;strong&gt;how you call them&lt;/strong&gt;, and this tightly relates to what we have seen previously.&lt;/p&gt;

&lt;p&gt;Reusable workflows are called &lt;strong&gt;directly within a job definition&lt;/strong&gt;, and not from within a job step. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05civa9bq8gjxxrkvnev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05civa9bq8gjxxrkvnev.png" alt="Calling a Reusable Workflow" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You cannot, therefore, use &lt;code&gt;GITHUB_ENV&lt;/code&gt; to pass values to job steps in the caller workflow. And, more importantly, you cannot add additional steps to the job which calls the reusable workflow.&lt;/p&gt;

&lt;p&gt;Composite Actions, instead, can exclusively be called and used as a step in a job, which also means there could be (and that is usually the case) other steps in the job before and or after the Composite Action.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8fvmk8ct8ow9b7vrbybh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8fvmk8ct8ow9b7vrbybh.png" alt="Calling a Composite Action" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure to keep this difference in mind when designing your Actions Workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;There used to be many more differences between Composite Actions and Reusable Workflow, but as of recording this video, the only ones still standing are the 3 differences we have just seen.&lt;/p&gt;

&lt;p&gt;So, to recap, Reusable Workflows make it simpler to spin up new repositories and projects and immediately start using automation and CI/CD workflows with GitHub Actions that you know will work, and to reduce code duplication. &lt;/p&gt;

&lt;p&gt;Composite Actions, on the other hand, allow you to pack multiple tasks and operations in a single step, to be reused inside a job.&lt;/p&gt;

&lt;p&gt;Let me know in the comments below if you noticed any other point in which those 2 features differ, and if you prefer using Composite Actions, or Reusable Workflows… or both 😉&lt;/p&gt;

&lt;p&gt;Also, check out &lt;a href="https://youtu.be/lTAkB7P1qV0" rel="noopener noreferrer"&gt;this video&lt;/a&gt;, in which I talk about the new GitHub Actions Larger Runners and how to use them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;🆘 &lt;a href="https://geni.us/cdconsult" rel="noopener noreferrer"&gt;Get Help With DevOps&lt;/a&gt;&lt;br&gt;
📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zc19mR3O4a4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>github</category>
      <category>githubactions</category>
      <category>cicd</category>
    </item>
    <item>
      <title>Azure Boards? Here's WHY!</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Wed, 05 Jul 2023 04:01:45 +0000</pubDate>
      <link>https://forem.com/n3wt0n/azure-boards-heres-why-ik0</link>
      <guid>https://forem.com/n3wt0n/azure-boards-heres-why-ik0</guid>
      <description>&lt;p&gt;Do you need a tool to help you organize your work and don’t know which one to use? Or are you thinking of using Azure Boards but you’re not quite convinced yet? Let me tell you why you should start using Azure Boards right now. Even if you are not hosting your code in Azure DevOps!&lt;/p&gt;

&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;As usual, if you are a &lt;strong&gt;visual learner&lt;/strong&gt;, or simply prefer to watch and listen instead of reading, here you have &lt;strong&gt;the video with the whole explanation and demo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/T3_UNAA8onw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/T3_UNAA8onw" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/T3_UNAA8onw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you rather prefer reading, well... let's just continue :)&lt;/p&gt;

&lt;h3&gt;
  
  
  Intro to Azure Boards
&lt;/h3&gt;

&lt;p&gt;Azure Boards is a &lt;strong&gt;standalone&lt;/strong&gt; service within the Azure DevOps suite that helps teams plan, track, and discuss work across the entire software development process. It provides a &lt;strong&gt;flexible, customizable platform for managing work&lt;/strong&gt; items, such as user stories, bugs, tasks, and issues, so you can track your work item's progress throughout the development lifecycle.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6d6sqvbgxj5vyotmvrtk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6d6sqvbgxj5vyotmvrtk.png" alt="Azure Boards" width="800" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure Boards &lt;strong&gt;supports agile methodologies&lt;/strong&gt;, including Scrum and Kanban, and provides a range of features and integrations to help teams collaborate and stay organized with dashboards, reports, and notifications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fydb5yi3uzk93r5kyihqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fydb5yi3uzk93r5kyihqm.png" alt="Dashboard Example in Azure DevOps" width="800" height="139"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last but not least, Azure Boards &lt;strong&gt;doesn’t require you to have your code in Azure Repos&lt;/strong&gt; or use Azure Pipelines for CI/CD… even tho of course it works even better if you do :)&lt;/p&gt;

&lt;h3&gt;
  
  
  11 Reasons to Start Using Azure Boards
&lt;/h3&gt;

&lt;p&gt;Now that we have a basic understanding of what Azure Boards is and does, why should you use it?&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 1: Start Simply, Scale as you grow
&lt;/h4&gt;

&lt;p&gt;First of all, it is &lt;strong&gt;very easy to start&lt;/strong&gt; with it and allows you to scale as you grow.&lt;/p&gt;

&lt;p&gt;Azure Boards offers predefined work item types for tracking features, user stories, bugs, and tasks, making it easy to start using your product backlog or Kanban board. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffnb8ffng6fkz0d6t2ach.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffnb8ffng6fkz0d6t2ach.png" alt="Azure Boards Backlog" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As mentioned before, it supports different &lt;strong&gt;Agile&lt;/strong&gt; methods, so you can implement the one which suits you best. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqv9qpt29d22epcqkpe83.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqv9qpt29d22epcqkpe83.png" alt="Agile support in Azure Boards" width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, you can add &lt;strong&gt;teams&lt;/strong&gt; as your organization grows to give them the autonomy to track their work as they see fit.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 2: Use visual, interactive tools
&lt;/h4&gt;

&lt;p&gt;Next reason is that Azure Boards has plenty of visual tools to help teams quickly &lt;strong&gt;see and share progress&lt;/strong&gt;. As we have seen, you can use Kanban boards, which provide an intuitive and visual way to manage your projects, track work items, and collaborate with your team effectively, and product backlogs, which correspond to your project plan, the roadmap for what your team plans to deliver and include users stories, requirements and backlog items.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsp6ghwhme5wmzbumul1t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsp6ghwhme5wmzbumul1t.png" alt="Kanban in Azure Boards" width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also use the built-in scrum boards and planning tools, and finally &lt;strong&gt;delivery plans&lt;/strong&gt;, which allow to review the schedule of stories or features that your teams plan to deliver by showing the scheduled work items by sprint (iteration path) of selected teams against a calendar view.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 3: Customize easily
&lt;/h4&gt;

&lt;p&gt;Third reason to start using Azure Boards is that it is very easily to &lt;strong&gt;configure and customize&lt;/strong&gt; all its parts through the user interface. &lt;/p&gt;

&lt;p&gt;You can make your own versions of Kanban boards, taskboards, and delivery plans , as well as add custom fields, work item types, and portfolio backlogs. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dr9pljy9sm5ibbc5vtj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dr9pljy9sm5ibbc5vtj.png" alt="Custom Work Item Field" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will make sure &lt;strong&gt;the tool adapts to your needs and processes&lt;/strong&gt;, and won’t instead require you to adapt to the tool.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 4: Use built-in social tools and communication
&lt;/h4&gt;

&lt;p&gt;Another reason, the fourth, is the &lt;strong&gt;ease of communication&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Work item forms provide built-in discussions that you can use to &lt;strong&gt;capture questions, notes, and communication&lt;/strong&gt; as they occur. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvh346gx7ty7vzq66qtu5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvh346gx7ty7vzq66qtu5.png" alt="Communication in Azure Boards" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this feature, you can maintain a &lt;strong&gt;history&lt;/strong&gt; of what a team decides on any particular work item. An dyou can quickly bring a team member or an entire team into the conversation by using &lt;code&gt;@name&lt;/code&gt; mentions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 5: Capture information, generous cloud storage
&lt;/h4&gt;

&lt;p&gt;Fifth reason on my list to use Azure Boards is something we take for granted but in fact it’s not always the case: information and storage.&lt;/p&gt;

&lt;p&gt;As I’ve mentioned before, work items are designed to &lt;strong&gt;track all the information&lt;/strong&gt; you need to track. And this doesn’t stop to text. You can in fact edit in rich text, drag and drop inline images, and add larger attachments. You can add attachments up to 60 MB and as many as 100 attachments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sqrzrtf1cflnuy778f3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sqrzrtf1cflnuy778f3.png" alt="Linking work items in Azure Boards" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, you can &lt;strong&gt;link work items&lt;/strong&gt; within a hierarchy or by simple related links. Each work item maintains a history of changes, so you can review what changed, who made the change, and when.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 6: Find what you need quickly and get notified of changes
&lt;/h4&gt;

&lt;p&gt;Sixth reason to start using the service is that Azure Boards provides easy-to-use tools to help you quickly &lt;strong&gt;find specific work items&lt;/strong&gt; as your project grows. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xp0jxy0p4erj9ylndok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xp0jxy0p4erj9ylndok.png" alt="Follow a work item" width="421" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can &lt;strong&gt;follow&lt;/strong&gt; work items to monitor updates and changes, use pivot views to show work items assigned to you, use the &lt;strong&gt;query engine&lt;/strong&gt; to filter work items based on any field, and use ad-hoc search with quick inline filters. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flv1alcpi98jizk3roi7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flv1alcpi98jizk3roi7o.png" alt="Azure Boards Queries" width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also personalize your alerts for work items that are assigned to you or have been changed.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 7:  Monitor status and progress with built-in dashboards and analytics
&lt;/h4&gt;

&lt;p&gt;Seventh, with Azure Boards you gain access to many tools to &lt;strong&gt;generate reports&lt;/strong&gt; and to support &lt;strong&gt;tracking&lt;/strong&gt; status and trends. &lt;/p&gt;

&lt;p&gt;By using configurable dashboards, you can add one or more widgets to display the information and data you want, such as the bug burndown widget. Along with dashboards, you have access to the Analytics service. This service is optimized for fast read-access and server-based aggregations. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffndhkbshgs6v8ydcolty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffndhkbshgs6v8ydcolty.png" alt="Azure Boards configurable dashboards" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By using &lt;strong&gt;Analytics views and Power BI&lt;/strong&gt;, you can create highly sophisticated reports on the project data of interest.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 8: Integrate with Office
&lt;/h4&gt;

&lt;p&gt;And if that wasn’t enough, eighth reason, Project managers who want to use familiar tools can &lt;strong&gt;import and export work&lt;/strong&gt; item queries to and from Microsoft Office Excel or import and export work items using .csv files. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85ckb3ymja1vn5hxyyrk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85ckb3ymja1vn5hxyyrk.png" alt="Azure Boards Excel integration" width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Excel supports adding work items, updating existing work items, adding links and attachments to multiple work items, and more. You can also use native Excel features to support other actions, such as summing a column, copy-and-paste rows, fill down data into cells, and more.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 9: Extend functionality
&lt;/h4&gt;

&lt;p&gt;You can gain even greater functionality by adding Marketplace &lt;strong&gt;extensions&lt;/strong&gt;, many of which are free, and this is my reason number 9. &lt;/p&gt;

&lt;p&gt;An extension is an installable plugin that adds capabilities to Azure DevOps and of course Azure Boards. You can find extensions within these products or in the Visual Studio Marketplace, under the Azure DevOps tab. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpgrebkutpmgtxui99zzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpgrebkutpmgtxui99zzq.png" alt="Azure DevOps Extensions" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, by using the REST API, you can &lt;strong&gt;create your own extensions or tools&lt;/strong&gt; to integrate with Azure DevOps Services.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 10: Get updates via a mobile browser
&lt;/h4&gt;

&lt;p&gt;Ok all good… but “&lt;em&gt;Dave&lt;/em&gt;”, I hear you say, “I_’m often working in mobility…. I need something I can use everywhere, perhaps even on my phone_”! Well, it’s your lucky day 😄 Tenth on my list is the mobile support. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbw10zxe7h6a8qfym6pnl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbw10zxe7h6a8qfym6pnl.png" alt="Azure Boards on Mobile" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With Azure Boards, it's easy to stay on top of changes as they occur! &lt;/p&gt;

&lt;p&gt;With the &lt;strong&gt;mobile browser&lt;/strong&gt; and work item form, you gain on-the-go features to stay on top of the latest updates made to work tracking. When you click any work item link on your mobile device, it will open a &lt;strong&gt;mobile-friendly version of the work item&lt;/strong&gt;. From there, you can update the work item or access all work items assigned to you or that you're following.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reason 11: Start for free
&lt;/h4&gt;

&lt;p&gt;Ok, what more after all we have seen? Well, last (&lt;em&gt;but definitely not for importance&lt;/em&gt;) reason for me to use Azure Boards is that… well… &lt;strong&gt;you can start absolutely for free&lt;/strong&gt;! And if your team is up to 5 users.. well, you can keep it for &lt;strong&gt;free forever&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Also, anybody in your team with a Visual Studio subscription gains free access to Azure Boards as well. And finally, you can add unlimited stakeholder users to it. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4x6ub2u16s7sjvzzg9qj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4x6ub2u16s7sjvzzg9qj.png" alt="Azure Boards and Azure DevOps pricing" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to know more about the stakeholder users in Azure DevOps check out the &lt;a href="https://youtu.be/B3VCpM9n3Do" rel="noopener noreferrer"&gt;video I made about this subject&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;Alright, those were my 11 reasons to start using Azure Boards. What do you think? Let me know in the comments below if you going to use Azure Boards, or at least you want to give it a try. Also, in case you won’t, let me know why and if there is any feature you think it’s missing from my list.&lt;/p&gt;

&lt;p&gt;Also, check out &lt;a href="https://youtu.be/Ft1JESBVFX8" rel="noopener noreferrer"&gt;this video&lt;/a&gt;, in which I show &lt;a href="https://youtu.be/Ft1JESBVFX8" rel="noopener noreferrer"&gt;some of the features of Azure Boards in action&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/T3_UNAA8onw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>azureboards</category>
      <category>workmanagement</category>
    </item>
    <item>
      <title>GitHub Larger Runners EXPLAINED! - No more limits</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Tue, 27 Jun 2023 02:01:02 +0000</pubDate>
      <link>https://forem.com/n3wt0n/github-larger-runners-explained-no-more-limits-419p</link>
      <guid>https://forem.com/n3wt0n/github-larger-runners-explained-no-more-limits-419p</guid>
      <description>&lt;p&gt;Do you want to build your application with GitHub Actions, but the standard agents are not powerful enough for your needs and at the same time you don’t want to use self hosted runners?&lt;/p&gt;

&lt;p&gt;Well, GitHub has just released the Larger Runners feature and it is exactly what you need.&lt;/p&gt;

&lt;p&gt;Let’s take a look at it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;As usual, if you are a &lt;strong&gt;visual learner&lt;/strong&gt;, or simply prefer to watch and listen instead of reading, here you have &lt;strong&gt;the video with the whole explanation and demo&lt;/strong&gt;, which to be fair is much &lt;strong&gt;&lt;em&gt;more complete&lt;/em&gt;&lt;/strong&gt; than this post.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/lTAkB7P1qV0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/lTAkB7P1qV0" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/lTAkB7P1qV0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you rather prefer reading, well... let's just continue :)&lt;/p&gt;

&lt;h3&gt;
  
  
  About Action Runners
&lt;/h3&gt;

&lt;p&gt;As I’ve mentioned in the intro, today we are going to take a look at the GitHub Larger Runners. We will see them in action (&lt;em&gt;no pun intended&lt;/em&gt;) in a moment, but I think is important to have a bit of context around GitHub Actions runner first. Feel free to skip to the the next part if you know already everything about GitHub Actions.&lt;/p&gt;

&lt;p&gt;First of all, runners are basically the machines that execute jobs in a GitHub Actions workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frtdycxlrfobl3c08ncob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frtdycxlrfobl3c08ncob.png" alt="Runner into screen" width="800" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, a runner can clone your repository locally, install testing software, and then run commands that evaluate your code.&lt;/p&gt;

&lt;p&gt;GitHub provides runners that they maintain and you can use to run your jobs. Each GitHub-hosted runner is a new virtual machine hosted by GitHub with the runner application and other tools preinstalled, and is available with Ubuntu Linux, Windows, or macOS.&lt;/p&gt;

&lt;p&gt;When you use a &lt;strong&gt;GitHub-hosted runner&lt;/strong&gt;, machine maintenance and upgrades are &lt;strong&gt;taken care of&lt;/strong&gt; for you.&lt;/p&gt;

&lt;p&gt;Until now they only had a single size of these runners, with 2 cores and 7Gb of ram for the windows and linux runners, and 3 cores and 14gb of ram for MacOs.&lt;/p&gt;

&lt;p&gt;And this meant that if your application needed more resources to be built or tested, you had to &lt;strong&gt;install your own runners&lt;/strong&gt;, on your own hardware or cloud of choice. While this is not necessarily a huge problem, it comes with 2 downsides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, you need to take care of the installation and upgrade of all the needed tools and libraries yourself,&lt;/li&gt;
&lt;li&gt;and second your own hosted runners are not ephemeral, meaning that all the files, temporary folders, etc from the previous completed jobs are still on the machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And this is where the new GitHub Larger runners come into play. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Larger Runners
&lt;/h3&gt;

&lt;p&gt;We now have the option of allocating &lt;strong&gt;a lot more resources&lt;/strong&gt; to our runners, up to 64 cores and 256 gb of ram, while having them still hosted and &lt;strong&gt;managed by GitHub directly&lt;/strong&gt;! Which means tools installation, maintenance, etc, are all already done. And, the runners are &lt;strong&gt;ephemeral&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There are a couple of other &lt;em&gt;somewhat minor&lt;/em&gt; differences between standard hosted runners and larger runners,  you can check them out all here &lt;a href="https://docs.github.com/en/actions/using-github-hosted-runners/about-larger-runners#additional-features-for-larger-runners" rel="noopener noreferrer"&gt;on the official documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create Larger Runners
&lt;/h3&gt;

&lt;p&gt;So, how can we &lt;strong&gt;enable and use the Larger Runners&lt;/strong&gt;?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://youtu.be/lTAkB7P1qV0?t=151" rel="noopener noreferrer"&gt;Check the demo section of the video to see this in action&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From your organization home page, go to &lt;code&gt;Settings&lt;/code&gt;, scroll down to &lt;code&gt;Actions&lt;/code&gt;, and click on &lt;code&gt;Runners&lt;/code&gt;. Here you have the list of runners already associated to your org.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxu9q081sehzxezusp3l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxu9q081sehzxezusp3l.png" alt="List of Runners" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, click on the &lt;code&gt;New Runner&lt;/code&gt; button, and pick &lt;code&gt;New GitHub-hoster runner&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This takes you to the creation page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwknvxmitdpodqau8rlj7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwknvxmitdpodqau8rlj7.png" alt="New Runner form" width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can give it a name, select Ubuntu Linux or Windows Server as OS (&lt;em&gt;MacOS will be available soon&lt;/em&gt;), and select the size: from 4 cores 16gb of ram all the way to 64 cores and 256gb of ram.&lt;/p&gt;

&lt;p&gt;You can set a maximum concurrency, which means how many runners can be createad and run at the same time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcqqo6yxuevyqjpuwbsxq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcqqo6yxuevyqjpuwbsxq.png" alt="Public IP on Actions Runners" width="800" height="138"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And, if you are on GitHub Enterprise, you can even assign a unique static public IP range for these runners.&lt;/p&gt;

&lt;p&gt;Click &lt;code&gt;Create Runner&lt;/code&gt; and you are done.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use Larger Runners
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://youtu.be/lTAkB7P1qV0?t=203" rel="noopener noreferrer"&gt;Check the demo section of the video to see this in action&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The creation was super easy, but how to use the new runners? It’s no different on how you normally use any other runner.&lt;/p&gt;

&lt;p&gt;Just edit your workflow YAML file and in the &lt;code&gt;runs-on&lt;/code&gt; field use the name of the runner you have created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frah7sndj1v1ymofpw6rl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frah7sndj1v1ymofpw6rl.png" alt="Using Larger Runners" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my case, using "a lot of imagination" I called it &lt;em&gt;mynewrunner&lt;/em&gt; so that is what I am going to use.&lt;/p&gt;

&lt;p&gt;From now on, my workflow will use the new larger runner. Not difficult, right?&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing and Availability
&lt;/h3&gt;

&lt;p&gt;Another important thing is pricing.&lt;/p&gt;

&lt;p&gt;Compared to standard GitHub-hosted runners, larger runners are &lt;strong&gt;billed differently&lt;/strong&gt;. Larger runners are only billed at the per-minute rate for the amount of time workflows are executed on them. There is no cost associated with creating a larger runner that is not being used by a workflow.&lt;/p&gt;

&lt;p&gt;Also, larger runners are &lt;strong&gt;not eligible for the use of entitlement minutes&lt;/strong&gt; on private repositories. For both private and public repositories, when larger runners are in use, they will always be billed at the per-minute rate.&lt;/p&gt;

&lt;p&gt;Last but not least, availability. Larger runners are available for organizations and enterprises using the &lt;strong&gt;GitHub Team or GitHub Enterprise Cloud&lt;/strong&gt; plans.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;Let me know in the comments below what you think about the Larger runners, if you are using or going to use them, and for what specific application or requirement.&lt;/p&gt;

&lt;p&gt;Also, check out &lt;a href="https://youtu.be/msCWg2F4sck" rel="noopener noreferrer"&gt;this video&lt;/a&gt; in which I cover all the &lt;a href="https://youtu.be/msCWg2F4sck" rel="noopener noreferrer"&gt;automation capabilities of GitHub Actions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/lTAkB7P1qV0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>github</category>
      <category>githubactions</category>
      <category>cicd</category>
    </item>
    <item>
      <title>5 Top Reasons to Use GitHub Actions for Your Next Project</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Wed, 22 Mar 2023 01:24:25 +0000</pubDate>
      <link>https://forem.com/n3wt0n/5-top-reasons-to-use-github-actions-for-your-next-project-cga</link>
      <guid>https://forem.com/n3wt0n/5-top-reasons-to-use-github-actions-for-your-next-project-cga</guid>
      <description>&lt;p&gt;A lot of people have been asking me on Twitter, Discord, Facebook, etc, whether they should be using GitHub Actions and why choosing it over other services. So I’ve decided to put together 5 of the most important reasons why I think GitHub Actions is a great service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;As usual, if you are a &lt;strong&gt;visual learner&lt;/strong&gt;, or simply prefer to watch and listen instead of reading, here you have &lt;strong&gt;the video with the whole explanation&lt;/strong&gt;,:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/vNb-NAogQUc"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/vNb-NAogQUc" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/vNb-NAogQUc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you rather prefer reading, well... let's just continue :)&lt;/p&gt;

&lt;h3&gt;
  
  
  Automation
&lt;/h3&gt;

&lt;p&gt;Anyway, why use GitHub Actions? Well, first reason is &lt;strong&gt;Automation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub Actions can automate your workflow, allowing you to build, test, and deploy your code right from GitHub. This can save you a lot of time and effort. For example, you can use GitHub Actions to automatically build and test your code every time you push a commit to GitHub. This ensures that your code is always up-to-date and working as expected. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpi67kyh9lm7z9fjisqk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpi67kyh9lm7z9fjisqk.png" alt="Automation with ProBot" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But it doesn’t stop here. As you may have heard me saying already, you can also use GitHub Actions to automate other tasks, such as sending notifications, running scripts, managing pull requests and issues, and much more.&lt;/p&gt;

&lt;p&gt;I have a whole video about automating stuff with Actions, you have the link up here and in the video description.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customization
&lt;/h3&gt;

&lt;p&gt;Second reason to use the service is &lt;strong&gt;Customization.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub Actions are highly customizable. You can create your own actions or use actions from the GitHub Marketplace to build workflows that meet your specific needs. For example, you can use a pre-built action to deploy your code to a specific cloud provider.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fospff9lu7i0j3uu3mhll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fospff9lu7i0j3uu3mhll.png" alt="A Custom Action Script" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or you can create your own action to run a custom test suite. You can also use environment variables and secrets to customize your workflows even further. If you can think about it, you can do it. There is no limit with GitHub Actions! &lt;/p&gt;

&lt;p&gt;Oh btw, let me know in the comments if you want me to cover the creation of custom actions in a future article/video.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integration
&lt;/h3&gt;

&lt;p&gt;Another reason to use GitHub Actions, the third one, is &lt;strong&gt;Integration.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub Actions integrates seamlessly with other GitHub features, such as pull requests and issues. This makes it easy to manage your entire workflow in one place. For example, you can use GitHub Actions to automatically build and test your code whenever a pull request is opened. &lt;/p&gt;

&lt;p&gt;This ensures that your code is always tested before it’s merged into your main branch. You can also use GitHub Actions to automatically close issues or assign them to specific team members.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8mns92z0lkll2vlplrs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8mns92z0lkll2vlplrs.png" alt="Integration with Jira" width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Furthermore, Actions integrate with the major cloud providers, including Azure, AWS and GCP, and most of the common DevOps and work management tools like Jira, Service Now, Slack, etc, and you can use it even if your code is not in GitHub (like if you are using, for example, GitLab, Azure DevOps, Jenkins, etc)&lt;/p&gt;

&lt;h3&gt;
  
  
  Community
&lt;/h3&gt;

&lt;p&gt;Fourth reason to use GitHub Action? The &lt;strong&gt;Community.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub Actions has a large and active community. And this is a double advantage.&lt;/p&gt;

&lt;p&gt;You can find many pre-built actions in the GitHub Marketplace, and you can also share your own actions with the community. This makes it easy to find and use actions that meet your specific needs. You can also contribute to the community by creating your own actions or improving existing ones.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Funx53a9m6m625l96nsr9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Funx53a9m6m625l96nsr9.png" alt="GitHub Actions Page on SO" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I’ve mentioned there is a second advantage to the large community behind GitHub Actions: the support. You can literally find thousands and thousands of people who have either experienced already your pain points and challenges, and so you have the solutions arleady ready, or you can ask in forums like Stack Overflow or GitHub’s own portal “GitHub Community” and have the answers to your questions in literally minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cost
&lt;/h3&gt;

&lt;p&gt;And if you need one more reason to use GitHub Actions, the fifth and last one of this video, that would be &lt;strong&gt;Cost.&lt;/strong&gt; Or, better, lack thereof*&lt;em&gt;.&lt;/em&gt;*&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp8q9f689kql49pco118.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp8q9f689kql49pco118.png" alt="Cost Comparison for GitHub Actions" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub Actions, in fact, is free for public repositories, and you get 2,000 free minutes of build time per month for private repositories. This makes it an affordable option for developers of all sizes. If you need more build time, you can purchase additional minutes at a reasonable price. You can also use self-hosted runners to run your workflows on your own infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;Let me know in the comments if you have other important reasons why you think someone should use GitHub Actions and, if you want to know more about the service, check out &lt;a href="https://youtu.be/TLB5MY9BBa4" rel="noopener noreferrer"&gt;my complete 1 and a half our GitHub Actions course&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/vNb-NAogQUc"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>github</category>
      <category>githubactions</category>
      <category>cicd</category>
      <category>devops</category>
    </item>
    <item>
      <title>I Let A.I. Do DevOps - This Is What Happened (feat ChatGPT and DALL-E)</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Tue, 03 Jan 2023 03:40:30 +0000</pubDate>
      <link>https://forem.com/n3wt0n/i-let-ai-do-devops-this-is-what-happened-feat-chatgpt-and-dall-e-47mj</link>
      <guid>https://forem.com/n3wt0n/i-let-ai-do-devops-this-is-what-happened-feat-chatgpt-and-dall-e-47mj</guid>
      <description>&lt;p&gt;What happens when AI does DevOps? Is it reliable? And does it make any sense at all?&lt;/p&gt;

&lt;p&gt;I've asked AI about DevOps, and today we will discover what it said...&lt;/p&gt;

&lt;h3&gt;
  
  
  Intro
&lt;/h3&gt;

&lt;p&gt;I’m sure you have probably heard of ChatGPT, the new AI bot from OpenAI. This technology is &lt;em&gt;somewhat mature&lt;/em&gt;, even tho it’s technically still a research preview, and I’ve seen it used in multiple different ways, even for YouTube videos. The problem is that &lt;strong&gt;the results are not always very good&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6674b1c2vtflq0kul6qf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6674b1c2vtflq0kul6qf.png" alt="ChatGPT preview" width="800" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, Kile Hill has used AI to create &lt;a href="https://www.youtube.com/watch?v=cKfnjxMS2RM" rel="noopener noreferrer"&gt;a video about Black Holes&lt;/a&gt;… and yeah, that didn’t make any sense whatsoever.&lt;/p&gt;

&lt;p&gt;On another video tho, Linus from LTT asked ChatGPT to help him &lt;a href="https://www.youtube.com/watch?v=kuTTAuUorsI" rel="noopener noreferrer"&gt;choose the component for a PC and actually assemble it&lt;/a&gt;, and the result was brilliant.&lt;/p&gt;

&lt;p&gt;So today I decided to &lt;strong&gt;try it out for myself&lt;/strong&gt; and have &lt;strong&gt;&lt;em&gt;AI telling me about DevOps&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I have asked A.I. the following 4 questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain DevOps in simple terms&lt;/li&gt;
&lt;li&gt;How to do DevOps?&lt;/li&gt;
&lt;li&gt;Is DevOps beneficial for any company size?&lt;/li&gt;
&lt;li&gt;What is the best way to start with DevOps?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;I've also generated some "DevOps-related" images using OpenAI’s DALL-E service. If you want to see those AI-generated images side-by-side with the AI DevOps, or simply prefer to watch and listen instead of reading, here you have &lt;strong&gt;the video with the whole text an images&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/oic6yQL8myc"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/oic6yQL8myc" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/oic6yQL8myc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you rather prefer reading, well... let's just continue :)&lt;/p&gt;

&lt;h3&gt;
  
  
  DevOps by A.I.
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;What follows is what ChatGPT created for me, word by word.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;DevOps is a software development approach that emphasizes collaboration and communication between developers and operations staff. The goal of DevOps is to improve the speed and quality of software delivery by automating processes, integrating testing and deployment, and fostering a culture of continuous improvement.&lt;/p&gt;

&lt;p&gt;One of the key principles of DevOps is "infrastructure as code," which means that instead of manually configuring and managing servers and other infrastructure components, teams use code and automated tools to define and manage these resources. This enables them to rapidly provision, scale, and update their infrastructure in a consistent and repeatable way.&lt;/p&gt;

&lt;p&gt;Another important aspect of DevOps is the use of agile methodologies, which focus on iterative, incremental development and the ability to quickly respond to change. This allows teams to deliver new features and updates to customers more quickly and efficiently.&lt;/p&gt;

&lt;p&gt;Overall, DevOps aims to improve the collaboration and communication between different teams in an organization, and to streamline and automate the software delivery process.&lt;/p&gt;

&lt;p&gt;There are many ways to practice DevOps, and the specific approaches and tools that a team uses will depend on their specific needs and goals. However, here are some general steps that teams can follow to adopt a DevOps approach:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Establish a culture of collaboration and continuous improvement: One of the key foundations of DevOps is a culture of collaboration and continuous improvement. This means fostering a mindset of shared responsibility and openness to change across all teams, and encouraging regular communication and feedback.&lt;/li&gt;
&lt;li&gt;Automate and standardize processes: Automating and standardizing processes can help teams reduce errors, improve efficiency, and ensure consistent results. This can include automating tasks such as testing, deployment, and infrastructure management.&lt;/li&gt;
&lt;li&gt;Use agile methodologies: Agile methodologies, such as Scrum and Kanban, emphasize iterative, incremental development and the ability to quickly respond to change. Adopting agile practices can help teams deliver new features and updates more quickly and efficiently.&lt;/li&gt;
&lt;li&gt;Implement continuous integration and delivery: Continuous integration and delivery (CI/CD) involves automatically building, testing, and deploying code changes as they are made. This can help teams release new features and updates more quickly and safely.&lt;/li&gt;
&lt;li&gt;Monitor and measure: Monitoring and measuring the performance of systems and processes can help teams identify and fix issues, and track progress towards goals. This can include using tools such as monitoring, logging, and analytics platforms to gather and analyze data.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By following these steps, teams can adopt a DevOps approach and improve the speed and quality of their software delivery. It's important to note that DevOps is not a one-time implementation, but rather a continuous process of improvement and evolution.&lt;/p&gt;

&lt;p&gt;DevOps can be beneficial for companies of any size, although the specific benefits and the ways in which DevOps is implemented may vary depending on the size and complexity of the organization.&lt;/p&gt;

&lt;p&gt;For smaller companies, DevOps can help improve the speed and efficiency of software delivery, allowing them to bring new products and features to market more quickly and respond to customer needs more effectively. DevOps can also help smaller companies reduce the risk of errors and outages, and improve the reliability and performance of their systems.&lt;/p&gt;

&lt;p&gt;For larger companies, DevOps can help streamline and automate complex processes, improving the efficiency and effectiveness of software delivery at scale. DevOps can also help large organizations reduce the risk of errors and outages, and improve the reliability and performance of their systems.&lt;/p&gt;

&lt;p&gt;Overall, DevOps can be beneficial for companies of any size by improving the speed and quality of software delivery, reducing the risk of errors and outages, and improving the reliability and performance of systems. However, it's important to carefully consider the specific needs and goals of the organization and plan an implementation strategy that is appropriate for the company's size and complexity.&lt;/p&gt;

&lt;p&gt;If you are looking to start with DevOps, here are some general steps that you can follow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Establish a clear understanding of the goals and benefits of DevOps: Before starting to implement DevOps, it's important to have a clear understanding of what you hope to achieve and how DevOps can help. This may involve identifying specific pain points or challenges that DevOps can address, as well as the broader benefits that you hope to achieve.&lt;/li&gt;
&lt;li&gt;Build a cross-functional team: DevOps relies on close collaboration and communication between different teams, so it's important to bring together a diverse group of individuals from different departments and functions. This team should include developers, operations staff, and any other relevant stakeholders.&lt;/li&gt;
&lt;li&gt;Identify and prioritize areas for improvement: Once you have established a team, you can begin identifying and prioritizing areas for improvement. This may involve analyzing current processes and identifying bottlenecks or inefficiencies, as well as defining specific goals and metrics for measuring progress.&lt;/li&gt;
&lt;li&gt;Choose tools and technologies: There are many tools and technologies available to support DevOps, and the specific ones that you choose will depend on your specific needs and goals. It's important to carefully evaluate different options and choose tools that will support your goals and workflows.&lt;/li&gt;
&lt;li&gt;Establish a culture of continuous improvement: Building a culture of continuous improvement is key to the success of DevOps. This means fostering a mindset of shared responsibility and openness to change across all teams, and encouraging regular communication and feedback.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By following these steps, you can start to implement DevOps in your organization and begin reaping the benefits of improved collaboration and efficiency. It's important to remember that DevOps is not a one-time implementation, but rather a continuous process of improvement and evolution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;Alright so… as mentioned that was all AI generated. Let me know in the comments below what you think about it. It was not too bad, was it? Actually fairly accurate… few strange things here and there but I’d say not bad.&lt;/p&gt;

&lt;p&gt;The images on the other side… well, let’s say the result is questionable… they didn’t make much sense, and especially the writings on them was on a completely unreadable fake language… nice try OpenAI, nice try…&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://youtu.be/oic6yQL8myc" rel="noopener noreferrer"&gt;Check the video if you want to see the AI-generated images about DevOps&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Anyway, that’s all I have for you today. But before going, check out &lt;a href="https://www.youtube.com/watch?v=OxDtADXeyv8" rel="noopener noreferrer"&gt;this video over here, in which I talk about what, for me, are the real benefits of doing DevOps&lt;/a&gt; 🙂&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/oic6yQL8myc"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>ai</category>
      <category>chatgpt</category>
      <category>experiment</category>
    </item>
    <item>
      <title>A Centralized Control Center for Azure DevOps!</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Wed, 07 Sep 2022 02:00:25 +0000</pubDate>
      <link>https://forem.com/n3wt0n/a-centralized-control-center-for-azure-devops-dbk</link>
      <guid>https://forem.com/n3wt0n/a-centralized-control-center-for-azure-devops-dbk</guid>
      <description>&lt;h3&gt;
  
  
  Enable Observability at Organization Level for Azure DevOps
&lt;/h3&gt;

&lt;p&gt;Discover how to create a &lt;strong&gt;centralized dashboard for managing Azure DevOps&lt;/strong&gt; in your organization. Always wanted to have a central control center that allows you to see the status of all your projects in your Azure DevOps organization?&lt;/p&gt;

&lt;p&gt;In this Live with Vinicius Moura (DevOps MVP) we see how to achieve exactly that! For &lt;strong&gt;FREE&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/VkoZLw56bhw"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;a href="https://youtu.be/VkoZLw56bhw" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/VkoZLw56bhw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to know more, &lt;strong&gt;post your questions down below&lt;/strong&gt; so I can address them.&lt;/p&gt;

&lt;p&gt;Thanks so very much again for your support!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/VkoZLw56bhw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>azuredevops</category>
      <category>observability</category>
      <category>live</category>
    </item>
    <item>
      <title>Create a New GitHub Repo in 1 CLICK from VSCode</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Tue, 16 Aug 2022 06:00:00 +0000</pubDate>
      <link>https://forem.com/n3wt0n/create-a-new-github-repo-in-1-click-vscode-29ae</link>
      <guid>https://forem.com/n3wt0n/create-a-new-github-repo-in-1-click-vscode-29ae</guid>
      <description>&lt;p&gt;Do you have some code in VSCode and want to take it to GitHub, without having to write a single command in the CLI? Today I’m gonna show you how to do that, how to publish your code to a new GitHub repo, all from VSCode.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;I already have &lt;a href="https://dev.to/n3wt0n/how-to-use-github-with-visual-studio-code-1p7d"&gt;an article&lt;/a&gt; and &lt;a href="https://youtu.be/aUhl3B6ZweQ" rel="noopener noreferrer"&gt;a video&lt;/a&gt; talking about how to use VSCode with GitHub, but, as someone has pointed out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc1cg1ycata4mbt6tgbt4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc1cg1ycata4mbt6tgbt4.png" alt="Comment from YouTube" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That content assumed you already had your code on GitHub. But what if you don’t? Let’s do it now.&lt;/p&gt;

&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;As usual, if you are a &lt;strong&gt;visual learner&lt;/strong&gt;, or simply prefer to watch and listen instead of reading, here you have &lt;strong&gt;the video with the whole explanation and demo&lt;/strong&gt;, which to be fair is much &lt;strong&gt;&lt;em&gt;more complete&lt;/em&gt;&lt;/strong&gt; than this post.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/shP-3p-2m6g"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/shP-3p-2m6g" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/shP-3p-2m6g&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you rather prefer reading, well... let's just continue :)&lt;/p&gt;

&lt;h3&gt;
  
  
  Just one prerequisite
&lt;/h3&gt;

&lt;p&gt;Everything you need to create a new repository in GitHub from VSCode is already present in Visual Studio Code itself. The only thing you need to make sure to do before hand is logging in into VSCode with your GitHub user.&lt;/p&gt;

&lt;p&gt;Your VSCode should look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu33ajdq8t07erwlx511s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu33ajdq8t07erwlx511s.png" alt="VSCode Login" width="309" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course with your username, not mine 😇&lt;/p&gt;

&lt;p&gt;If it is not like this, click on &lt;em&gt;Sign In (GitHub)&lt;/em&gt; and you are good to go.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create the repo
&lt;/h3&gt;

&lt;p&gt;Now that we know we are logged in, creating the repository in GitHub is very easy.&lt;/p&gt;

&lt;p&gt;Just click on the &lt;strong&gt;&lt;em&gt;Git - Source Control&lt;/em&gt;&lt;/strong&gt; icon  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3hib6o52sbjyqi7tv79v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3hib6o52sbjyqi7tv79v.png" alt="SCM VSCode" width="402" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And this will prompt you to either &lt;em&gt;Initialize Repository&lt;/em&gt; or &lt;strong&gt;&lt;em&gt;Publish to GitHub&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnul29cn3pnahgbj9mymj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnul29cn3pnahgbj9mymj.png" alt="New Repo Choice" width="736" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first option does only execute the &lt;em&gt;git init&lt;/em&gt; command, so it does technically create a repository for you but only on the local machine. If you want to have your repo in GitHub, instead, use &lt;strong&gt;Publish to GitHub&lt;/strong&gt;. This will do for you the repo initialization as well, but will also create a new repo in GitHub and push the code to it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp5fjq3evupg7wy481v1a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp5fjq3evupg7wy481v1a.png" alt="Repo Type Selection" width="800" height="121"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you click on &lt;em&gt;Publish to GitHub&lt;/em&gt;, VSCode will ask you what name you want your new repo to have (defaults to the name of the root folder of your project) and you can choose whether you want your new repo to be private or public.&lt;/p&gt;

&lt;p&gt;Last thing you can do is select what files or folders you want to include in your repo (the default is everything, so if that's what you want to do you can just skip this step).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7z0o9ipmomgwa8sijdn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7z0o9ipmomgwa8sijdn.png" alt="Repo File Selection" width="800" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And after that, VSCode will do its magic, create the repo for you in GitHub, set it as the origin on the local folder, and push the code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3zzctr91ahbaphxzl3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3zzctr91ahbaphxzl3g.png" alt="Completed" width="568" height="138"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;Cool right? And you know what would be even cooler? If you could hit the like buttons on the side :)&lt;/p&gt;

&lt;p&gt;Jokes aside, now that your code is on GitHub, go and check &lt;a href="https://youtu.be/aUhl3B6ZweQ" rel="noopener noreferrer"&gt;this other video&lt;/a&gt; I’ve mentioned before to see how you can manage it directly from VSCode as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/shP-3p-2m6g"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>devops</category>
      <category>github</category>
      <category>git</category>
    </item>
    <item>
      <title>Ask Me Anything: DevOps, GitHub and Azure DevOps (10k subs special LIVE)</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Mon, 01 Aug 2022 04:32:31 +0000</pubDate>
      <link>https://forem.com/n3wt0n/ask-me-anything-devops-github-and-azure-devops-10k-subs-special-live-lpe</link>
      <guid>https://forem.com/n3wt0n/ask-me-anything-devops-github-and-azure-devops-10k-subs-special-live-lpe</guid>
      <description>&lt;h3&gt;
  
  
  Got any questions about DevOps, GitHub and/or Azure DevOps?
&lt;/h3&gt;

&lt;p&gt;Join me for this &lt;strong&gt;live Q&amp;amp;A&lt;/strong&gt; and I will try and answer all your questions!&lt;/p&gt;

&lt;p&gt;And we will celebrate the incredible achievement of 10,000 subscribers on &lt;a href="https://www.youtube.com/CoderDave?sub_confirmation=1" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/44PoWwStc7s"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;a href="https://youtu.be/44PoWwStc7s" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/44PoWwStc7s&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prepare your questions, and I hope to see y'all live! And if you can't make it, &lt;strong&gt;post your questions down below&lt;/strong&gt; so I can address them during the live!&lt;/p&gt;

&lt;p&gt;Thanks so very much again for your support!&lt;/p&gt;
&lt;h3&gt;
  
  
  ⏲️ TIME FOR THE LIVE:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Wednesday, August 3rd, 9.30 pm HKT&lt;/li&gt;
&lt;li&gt;Wednesday, August 3rd, 7.00 pm IST&lt;/li&gt;
&lt;li&gt;Wednesday, August 3rd, 1.30 pm UTC&lt;/li&gt;
&lt;li&gt;Wednesday, August 3rd, 9.30 am ET&lt;/li&gt;
&lt;li&gt;Wednesday, August 3rd, 6.30 am PT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/44PoWwStc7s"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>github</category>
      <category>askmeanything</category>
      <category>live</category>
    </item>
    <item>
      <title>Protect and Access you Kubernetes, Servers, Applications and Databases with Teleport</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Tue, 14 Jun 2022 04:46:20 +0000</pubDate>
      <link>https://forem.com/n3wt0n/protect-and-access-you-kubernetes-servers-applications-and-databases-with-teleport-18oc</link>
      <guid>https://forem.com/n3wt0n/protect-and-access-you-kubernetes-servers-applications-and-databases-with-teleport-18oc</guid>
      <description>&lt;p&gt;Today we are protecting and securely connecting to our infrastructure, Kubernetes, and basically any other private resources that we need and want to keep safe.&lt;/p&gt;

&lt;p&gt;And we will do so without the need of VPNs or legacy access management systems... and for free, &lt;strong&gt;thanks to Teleport&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Intro
&lt;/h3&gt;

&lt;p&gt;Finding a tool that allows you to &lt;strong&gt;securely access&lt;/strong&gt; the infrastructure you need without slowing you down is already a challenge in and of itself. But finding a single tool which provides unified access to Linux and Windows servers, Kubernetes clusters, databases and DevOps applications like CI/CD, version control, and monitoring dashboards across all environments is almost impossible. Almost, because we have Teleport for it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Check out Teleport here:&lt;/strong&gt; &lt;a href="https://geni.us/teleport" rel="noopener noreferrer"&gt;https://geni.us/teleport&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;In this video I’m going to show you what we can do with Teleport, and how &lt;strong&gt;easy&lt;/strong&gt; it is to use it to connect to your protected resources, rather than how to install it, also because the documentation does an excellent job on guiding you step-by-step. But let me know in the comments if you wanna see the installation process as well in another video.&lt;/p&gt;

&lt;p&gt;Here you have &lt;strong&gt;the video with the whole explanation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Enjoy the watch :) &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/062Rv1eWKEY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/062Rv1eWKEY" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/062Rv1eWKEY&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📼 &lt;strong&gt;Video Main Sections&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/062Rv1eWKEY" rel="noopener noreferrer"&gt;What is Teleport&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/062Rv1eWKEY?t=113" rel="noopener noreferrer"&gt;What can we do?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/062Rv1eWKEY?t=186" rel="noopener noreferrer"&gt;Teleport Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/062Rv1eWKEY?t=283" rel="noopener noreferrer"&gt;Teleport for Linux Servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/062Rv1eWKEY?t=446" rel="noopener noreferrer"&gt;Teleport CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/062Rv1eWKEY?t=540" rel="noopener noreferrer"&gt;Teleport for Windows Servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/062Rv1eWKEY?t=657" rel="noopener noreferrer"&gt;Teleport for Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/062Rv1eWKEY?t=793" rel="noopener noreferrer"&gt;Teleport for Databases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/062Rv1eWKEY?t=857" rel="noopener noreferrer"&gt;Teleport for Applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;I think you now understand why I’ve decided to make this video about Teleport. I really think it is a &lt;strong&gt;great service&lt;/strong&gt; that allows you to do a lot of things... What we have seen are just few examples, but I hope you can see the full potential of this service.&lt;/p&gt;

&lt;p&gt;If I have to nitpick, I would like for the &lt;em&gt;installation process&lt;/em&gt; for Windows hosts to be a little simpler and more intuitive, it’s the only one that gave me a little trouble. Also, as we have seen some AWS and GCP services are supported out of the box, like the Linux servers and DBs. Being a heavy Azure user as y’all know, &lt;strong&gt;I would love to see Azure supported natively&lt;/strong&gt; as well.&lt;/p&gt;

&lt;p&gt;Let me know in the comments below what you think about Teleport, and if you want to see more use cases, or if you want to know how Teleport works behind the scenes, or yet, as I’ve mentioned before, if you want me to make a video about the installation of this service on the different platforms.&lt;/p&gt;

&lt;p&gt;Also, check out &lt;a href="https://youtu.be/N6IEysLIx6c" rel="noopener noreferrer"&gt;this video&lt;/a&gt;, in which I talk about Pros and Cons of the emerging Civo Kubernetes Cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/062Rv1eWKEY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>security</category>
      <category>teleport</category>
    </item>
    <item>
      <title>Top DevOps Announcement from Microsoft Build 2022</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Fri, 27 May 2022 09:48:18 +0000</pubDate>
      <link>https://forem.com/n3wt0n/top-devops-announcement-from-ms-build-2022-5fcp</link>
      <guid>https://forem.com/n3wt0n/top-devops-announcement-from-ms-build-2022-5fcp</guid>
      <description>&lt;p&gt;Microsoft Build 2022 has just closed its virtual doors, with a lot of new services and features, and this time around a &lt;strong&gt;lot has been said also about DevOps&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Today I’m going to recap all the most important announcements around DevOps made by Microsoft at Build 2002&lt;/p&gt;

&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;As usual, if you are a &lt;strong&gt;visual learner&lt;/strong&gt;, or simply prefer to watch and listen instead of reading, here you have &lt;strong&gt;the video with the whole explanation and demo&lt;/strong&gt;, which to be fair is much &lt;strong&gt;&lt;em&gt;more complete&lt;/em&gt;&lt;/strong&gt; than this post.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Lq0BPwa69C8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a&gt;Link to the video: https://youtu.be/Lq0BPwa69C8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you rather prefer reading, well... let's just continue :)&lt;/p&gt;

&lt;h3&gt;
  
  
  The Great Absent
&lt;/h3&gt;

&lt;p&gt;Let’s start not with an announcement but rather with a lack thereof, with the &lt;strong&gt;great absent at Build 2022&lt;/strong&gt;: I’m talking about Azure DevOps.&lt;/p&gt;

&lt;p&gt;There were in fact a lot of announcements and sessions revolving around GitHub, and that’s to be expected, but &lt;strong&gt;not a single session&lt;/strong&gt;, announcement, feature or demo in which Azure DevOps has been shown or even mentioned.&lt;/p&gt;

&lt;p&gt;I think this is a clear sign for us on what the future for Azure DevOps looks like, but stay tuned because I will have a great guest on my &lt;a href="https://youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube channel&lt;/a&gt; very soon and we will talk exactly about this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fully Managed NGNIX on Azure
&lt;/h3&gt;

&lt;p&gt;Talking about stuff that was actually present at Build 2022, let’s start with one of my favorite announcements: Azure now has a fully managed nginx offering.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkquan26f7wiuemuhr4ve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkquan26f7wiuemuhr4ve.png" alt="NGINX for Azure" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NGINX for Azure, which is currently in preview, is a SaaS solution with advanced traffic management and monitoring. The tight Azure integration enables ease of use with a few clicks for provisioning and configuration though the Azure portal. &lt;/p&gt;

&lt;p&gt;The service offers advanced traffic management features, such as JSON Web Token (JWT) authentication and active health checks, and built-in security integrations like Azure Key Vault for SSL/TLS certificate management. &lt;/p&gt;

&lt;p&gt;NGINX for Azure is offered by Microsoft in partnership with F5, so you can find it through the Azure Marketplace, but you get a unified bill for all services they use on Azure and leverage existing enterprise agreements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzozflsh7i4nk60d100kb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzozflsh7i4nk60d100kb.png" alt="NGINX config" width="800" height="669"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the great thing is that being an Azure service, you can manage all the aspects of it via the Azure portal, including making configurations changes that are then applied to the service directly, and using config files that you may already have from previous deployments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9nclii35kmnz5t7fss5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9nclii35kmnz5t7fss5.png" alt="NGINX CI CD" width="800" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And last but not least, they have developed a GitHub integration that allows you to version control your configuration in a GitHub repo and to apply changes to that configuration via GitHub Actions&lt;/p&gt;

&lt;h3&gt;
  
  
  Microsoft Dev Boxes
&lt;/h3&gt;

&lt;p&gt;We will talk again about containers in a minute, but let me change page and talk about another announcement I quite liked. I’m talking about Microsoft Dev Boxes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fext5lmirycswz8zb0pir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fext5lmirycswz8zb0pir.png" alt="Microsoft Dev Box" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microsoft Dev Boxes, currently in private preview, is a new cloud service that provides developers with secure, ready-to-code developer workstations. This service basically makes it easy for developers to access the tools and resources they need without worrying about workstation configuration and maintenance. &lt;/p&gt;

&lt;p&gt;If it sounds like what GitHub Codespaces does is because, in a way, the two services have the same purpose: make development easier and management of dependencies quicker.&lt;/p&gt;

&lt;p&gt;Dev Boxes, however, goes a step further than Codespaces, because it supports all kinds of development, including desktop and mobile, and it runs on Windows 11 (while codespaces run only on linux). And in fact you can use it from the browser but also using Remote Desktop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycljplcww2tfqd92uh9p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycljplcww2tfqd92uh9p.png" alt="Microsoft Dev Boxes" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dev teams preconfigure Dev Boxes for specific projects and tasks, enabling devs to get started quickly with an environment that’s ready to build and run their app in minutes. At the same time, Microsoft Dev Box ensures unified management, security, and compliance stay in the hands of IT by leveraging Windows 365 to integrate Dev Boxes with Intune and Microsoft Endpoint Manager.&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure Deployment Environments
&lt;/h3&gt;

&lt;p&gt;And when you are ready to test your applications or run them against other services, Azure Deployment Environments, also in private preview, will make it easy for developer teams to quickly spin up app infrastructure with self-service of project-based infrastructure-as-code templates.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkftg8781k49otryz0urs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkftg8781k49otryz0urs.png" alt="Azure Deployment Environments" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will minimize set-up time while maximizing security, compliance, and cost efficiency, and enforcing best practices&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure Load Testing
&lt;/h3&gt;

&lt;p&gt;Let’s move now to the next new service, Azure Load Testing.&lt;/p&gt;

&lt;p&gt;Few years ago, Microsoft had their own Load Testing service integrated in Azure DevOps… actually, at that time it was still called Visual Studio Team Services. But that service has been deprecated for years already, leaving Microsoft and Azure without a proper Load Testing service… well no more.&lt;/p&gt;

&lt;p&gt;Azure Load Testing is a fully managed load-testing service built for and in Azure that makes it easy to generate huge load using Azure resources and identify app performance bottlenecks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6ohmmj46yomc36tohco.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6ohmmj46yomc36tohco.png" alt="Azure Load Testing Metrics" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It enables developers and testers to generate high-scale load and run simulations that reveal actionable insights into app performance, scalability, and capacity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90x78xzmo0s8zs09pk5d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F90x78xzmo0s8zs09pk5d.png" alt="Azure Load Testing Architecture" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The service can use existing Apache JMeter scripts, and you will get recommendations backed by metrics and analytics. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dcx2wxn7fk4wtro4kpn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dcx2wxn7fk4wtro4kpn.png" alt="Azure Load Testing CI CD Integration" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure Load Testing also supports continuous integration and continuous delivery (CI/CD) workflows to give continuous feedback.&lt;/p&gt;

&lt;p&gt;I’m really excited to try this service out, stay tuned because I will for sure have a video in which I’m going to test it and review it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure Container Apps GA
&lt;/h3&gt;

&lt;p&gt;Alright, next up the GA of Azure Container Apps. The service has been in preview for a while, but now it has reached GA which means that it’s stable for production workloads.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fydnzjhor8fslprgmwtms.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fydnzjhor8fslprgmwtms.png" alt="Container Apps Announcement" width="800" height="820"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure Container Apps allows you to run your containerized apps in a serverless manner, but still taking advantages of Kubernetes, Keda for event-driven autoscaling, dapr, and Envoy.&lt;/p&gt;

&lt;p&gt;And all of this is fully managed by Microsoft so you can just focus on the application and not on managing infrastructure&lt;/p&gt;

&lt;p&gt;One of the cool features of this service is that you can scale your pods down to 0 instances and spin up more pods automatically if requests come in. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh1ujt38lko21n1qegj47.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh1ujt38lko21n1qegj47.png" alt="Container Apps CLI" width="800" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if all of this was not enough, during the event Scott Guthrie showed a demo in which with a single command of the Azure CLI he was able to have an application containerized, a container registry create in Azure, some GitHub Actions workflows created and run to build the image of the application, and finally have everything deployed to Azure in a brand new Azure Container App.&lt;/p&gt;

&lt;h3&gt;
  
  
  Draft v2 Integration
&lt;/h3&gt;

&lt;p&gt;And if you are curious about how the app is getting containerized, this is thanks to another new announcement made at Build 2022. I’m talking about the public preview of the support for Draft v2.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0tbvme23x74lccpicqa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0tbvme23x74lccpicqa.png" alt="Draft Project Description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Azure/draft" rel="noopener noreferrer"&gt;Draft&lt;/a&gt; is an open-source project that streamlines Kubernetes development by taking a non-containerized application and generating the Dockerfiles, Kubernetes manifests, Helm charts, Kustomize configurations, and other artifacts associated with a containerized application. Draft can also create a GitHub Action workflow file to quickly build and deploy applications onto any Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;With the public preview just announced, Draft is now integrated with AKS through the Azure CLI, Azure Portal, and Visual Studio Code. And works with Azure Container Apps as well, as we have seen.&lt;/p&gt;

&lt;h3&gt;
  
  
  AKS Web App Routing
&lt;/h3&gt;

&lt;p&gt;And still talking about containers and AKS, there is another interesting feature that has been announced at Build: the preview for Web App Routing.&lt;/p&gt;

&lt;p&gt;I couldn’t find much about this new AKS add-on, and also the part of the session where the announcement has been made was quite short, but what we know from the official website is that&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj9xvogw8xhnuwqnee7sa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj9xvogw8xhnuwqnee7sa.png" alt="Web App Routing Announcement" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Web app routing helps you get your web application up and running in AKS securely while removing the complexity of ingress controller, certificate, and DNS management, and that the service offers a managed ingress controller powered by NGINX that you can use without restrictions and integrates out of the box with open service mesh to secure intra-cluster communications.&lt;/p&gt;

&lt;p&gt;I’m curious to see this in action, let me know in the comments if you have already tried this out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fully Managed Grafana
&lt;/h3&gt;

&lt;p&gt;Next and final announcement that I’m going to cover today is another big one for me. Microsoft announced the public preview of a fully managed Grafana service in Azure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9xbgyfqx4eg1ieqdm59.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9xbgyfqx4eg1ieqdm59.png" alt="Fully Managed Grafana Announcement" width="800" height="846"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I’ve mentioned, Azure Managed Grafana is a fully managed service for analytics and monitoring solutions. And it's supported by Grafana Enterprise, which provides extensible data visualizations.&lt;/p&gt;

&lt;p&gt;You can provision the new Azure Managed Grafana and connect it to your AKS cluster, and with that you can see all the metrics and data provided by container insights, visualized in the familiar interface of Grafana. You can see information like requests per second, the resources that you're using for your pods, and all of the different things you need to run your application successfully.&lt;/p&gt;

&lt;p&gt;And since Grafana is an open-source product, it's available to you in Azure or wherever you want to run it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhhknwfrhirpjh900cob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhhknwfrhirpjh900cob.png" alt="Fully Managed Grafana Dashboard" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And yes, that dashboard you see above is automatically created when you provision Azure Managed Grafana and point it to AKS because the service is optimized for Azure-native data sources from services such as Azure Monitor and Azure Data Explorer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;These were for me the most exciting announcements around DevOps at Build 2022, but Microsoft made a lot more announcements so I’d recommend you to check the Book of News that they published to see them all. You can find the link in the video description.&lt;/p&gt;

&lt;p&gt;Let me know in the comments below what do you think about the services and new features I’ve covered and what your favorite announcement from Build 2022 was.&lt;/p&gt;

&lt;p&gt;Also, check out &lt;a href="https://youtu.be/JsQ6xNSOVqk" rel="noopener noreferrer"&gt;this video here&lt;/a&gt; in which I review a new way to connect to private resources without VPN.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Lq0BPwa69C8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>devops</category>
      <category>news</category>
      <category>build2022</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Azure Artifacts vs Build Artifacts vs Pipeline Artifacts: Difference EXPLAINED!</title>
      <dc:creator>Davide 'CoderDave' Benvegnù</dc:creator>
      <pubDate>Tue, 10 May 2022 08:40:51 +0000</pubDate>
      <link>https://forem.com/n3wt0n/azure-artifacts-vs-build-artifacts-vs-pipeline-artifacts-difference-explained-1k24</link>
      <guid>https://forem.com/n3wt0n/azure-artifacts-vs-build-artifacts-vs-pipeline-artifacts-difference-explained-1k24</guid>
      <description>&lt;p&gt;What are the differences between &lt;strong&gt;Build Artifacts&lt;/strong&gt; and &lt;strong&gt;Pipelines Artifacts&lt;/strong&gt; in Azure Pipelines, and how do they compare to &lt;strong&gt;Azure Artifact&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;With Azure DevOps using similar names for different things, there is quite some confusion between them. And in fact I’ve received many comments and questions about them on my videos about Azure Pipelines... but today we are going to answer these questions once and for all. Let’s dive into it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Video
&lt;/h3&gt;

&lt;p&gt;As usual, if you are a &lt;strong&gt;visual learner&lt;/strong&gt;, or simply prefer to watch and listen instead of reading, here you have &lt;strong&gt;the video with the whole explanation and demo&lt;/strong&gt;, which to be fair is much &lt;strong&gt;&lt;em&gt;more complete&lt;/em&gt;&lt;/strong&gt; than this post.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/WWCmEUCt3Cc"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/WWCmEUCt3Cc" rel="noopener noreferrer"&gt;Link to the video: https://youtu.be/WWCmEUCt3Cc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you rather prefer reading, well... let's just continue :)&lt;/p&gt;

&lt;h3&gt;
  
  
  A Word About Artifacts
&lt;/h3&gt;

&lt;p&gt;So, what are the differences? We will go through them one by one, see what they are used for, and at the end we’ll have a quick recap and some recommendations on what to use when. But first, we need to understand what an artifact is, at least in the context of Azure DevOps.&lt;/p&gt;

&lt;p&gt;Using a simplification, an artifact is &lt;strong&gt;any kind of file&lt;/strong&gt; or files that your build produces, or that you may want to reuse in another build, another job of your build, or a deployment or release pipeline.&lt;/p&gt;

&lt;p&gt;For example, the compiled DLLs that you have as result of your CI can be stored in an artifact to be then deployed by another job. Same thing for the &lt;em&gt;dist&lt;/em&gt; folder of a Node.js application. Or, let’s suppose you want to save some output of one of your pipeline task to then download it and review it later... well, you can package that in an artifact as well. &lt;/p&gt;

&lt;p&gt;Now that we know what artifacts are, let’s see how they differ. &lt;/p&gt;

&lt;h3&gt;
  
  
  Build Artifacts
&lt;/h3&gt;

&lt;p&gt;Build Artifacts have been in Azure DevOps for a long time and are the &lt;strong&gt;built-in artifact storage mechanism&lt;/strong&gt; for Azure Pipelines. &lt;/p&gt;

&lt;p&gt;They can be used in both the Classic Build Pipelines, the one created using the UI, as well as the newer YAML Pipelines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu86xm8lsyb2yxu6k7f9m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu86xm8lsyb2yxu6k7f9m.png" alt="Build Artifacts" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build Artifacts are published via the &lt;code&gt;Publish Build Artifacts&lt;/code&gt; task and can be downloaded with the &lt;code&gt;Download Build Artifact&lt;/code&gt; task. And when you publish them, you can instruct the task to either push the content up to the Azure DevOps cloud or serve, or to copy the files to a local file share instead.&lt;/p&gt;

&lt;p&gt;Build Artifacts can be consumed from other jobs in the same Pipeline, and from other Pipelines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fib74pxdl882pbubgds6p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fib74pxdl882pbubgds6p.png" alt="Release Pipeline" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, Build Pipelines can be used if you want to consume your artifact from a Release Pipeline triggered by the build completion.&lt;/p&gt;

&lt;p&gt;And you can always download your artifacts from the Build run status page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0k40s0lmdf42dj6y3em.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0k40s0lmdf42dj6y3em.png" alt="Explore Artifacts" width="800" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And as you can see in the image above, you can explore the content of your artifact directly in the UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pipeline Artifacts
&lt;/h3&gt;

&lt;p&gt;Alright, let’s talk about &lt;strong&gt;Pipelines Artifacts&lt;/strong&gt; now.&lt;/p&gt;

&lt;p&gt;These are the &lt;strong&gt;newer version&lt;/strong&gt;, if you will, of Build Artifacts, and as such they can be used only from within the YAML Pipelines.&lt;/p&gt;

&lt;p&gt;One of the main benefits of Pipeline Artifacts is that they can &lt;strong&gt;dramatically reduce the time&lt;/strong&gt; it takes to upload and download the artifacts because of the way the files are both uploaded and stored. And this is especially true for large artifacts.&lt;/p&gt;

&lt;p&gt;Until fairly recently, Pipelines Artifacts couldn’t be used in Classic Release Pipelines, or from other Pipelines, but now that limitation is gone so their usage is very similar to Build Artifacts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp311yg9weomo4b4q5nnk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp311yg9weomo4b4q5nnk.png" alt="Pipeline Artifacts" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To publish the Pipelines Artifacts you can use the &lt;code&gt;Publish Pipeline Artifact&lt;/code&gt; task and you can download them using the &lt;code&gt;Download Pipeline Artifact&lt;/code&gt; task.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fir0a4cgf50d3cg37m1m7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fir0a4cgf50d3cg37m1m7.png" alt="Upload Download shortcuts" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alternatively, since this feature is only available in the YAML Pipelines, you can use the &lt;code&gt;publish&lt;/code&gt; keyword and the &lt;code&gt;download&lt;/code&gt; keyword, which are just the abbreviation for the whole tasks.&lt;/p&gt;

&lt;p&gt;And if you publish a Pipeline Artifacts, and you want to use it in a deployment job in the same pipeline, you don’t even have to add the download task because Azure Pipelines will download them automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build vs Pipeline Artifacts
&lt;/h3&gt;

&lt;p&gt;There are few more differences in publishing and downloading the artifacts between Build and Pipeline Artifacts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3d06ofh4bk4aoyzaw7en.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3d06ofh4bk4aoyzaw7en.png" alt="Publish Build vs Pipeline Artifacts" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The publish tasks are virtually identical, with the only differences being that in the Publish Build Artifact task here on the left you can optionally choose to further include your artifact in a Tar file, while this is not present on the right on the Publish Pipeline Artifact Task. This one, instead, allows you to add some custom properties to the artifact. They must be in JSON format, all keys having the prefix &lt;code&gt;user-&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It gets more interesting if we look at the Download tasks&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxlzv1u6boipq2ozguafr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxlzv1u6boipq2ozguafr.png" alt="Downlaod Build vs Pipeline Artifacts" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see in this side by side view, when you download a a Build Artifact (on the left) you can choose if you want to download the whole thing, or just some specific file from the artifact. You can also set some parallelization settings and other parameters. When downloading a Pipeline Artifact, instead, you don’t have that option, as you can see here on the right hand side of the image.&lt;/p&gt;

&lt;p&gt;And if we switch the task to download from a different pipeline or run, instead of from the current one, we have one more difference.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi992gt0dtitwhgwordjm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi992gt0dtitwhgwordjm.png" alt="Downlaod Build vs Pipeline Artifacts 2" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aside from a different positioning of the fields, you can see that when you download a Pipeline Artifact you can choose to do so even if the pipeline run you are targeting has failed&lt;/p&gt;

&lt;p&gt;And that basically covers everything there is to say about Build and Pipeline Artifacts. If you have noticed, I kept comparing the two... but I haven’t mentioned Azure Artifacts yet. Why? Well, because it is a &lt;strong&gt;completely different thing&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What About Azure Artifacts?
&lt;/h3&gt;

&lt;p&gt;So Azure Artifacts... as I was saying it is pretty different from Build and Pipeline Artifacts. Despite the similar name, it’s a &lt;strong&gt;different service which serves a different purpose&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Both Build and Pipeline Artifacts are very generic, you can save whatever you want in them, and what Azure DevOps does is just packaging the files in a zip archive and saving it somewhere. Azure Artifacts, instead, is a &lt;strong&gt;typed package repository&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2n8x7oi8sbauob47hpk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2n8x7oi8sbauob47hpk2.png" alt="Azure Artifacts Package Types" width="800" height="232"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It supports multiple package types such as NuGet, npm, Python, Maven, and Universal Packages... you can basically see it as an alternative to Artifactory, Nexus, GitHub Packages, and services like that.&lt;/p&gt;

&lt;p&gt;You may have seen that Azure Artifacts also supports Universal Packages, and although that is somewhat similar to the other types of artifact we have seen before, it is conceptually different.&lt;/p&gt;

&lt;p&gt;You would use Universal Packages when you want to create an artifact with a lifetime independent of the pipeline that created it. In fact both Build and Pipeline Artifacts are always tied to the Pipelines that created them. As we have seen, you can download Pipeline Artifacts after a pipeline has completed via the artifacts UI - but if you want something that really exists independent of pipeline you would go for Universal Packages.&lt;/p&gt;

&lt;p&gt;Another big difference is about the pricing. Whether you use Build Artifacts or Pipeline Artifacts, you will not have to pay a single cent for them, no matter how many files you store or how big they are. Azure Artifacts, on the other hand, is billed by size.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx31qbl94kfmxojal3a9d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx31qbl94kfmxojal3a9d.png" alt="Azure Artifacts Billing Settings" width="748" height="827"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You have a free grant of 2 Gb for each organization, but once you reach the maximum storage limit, you can no longer upload new artifacts and will need to either delete some of your existing artifacts, or &lt;a href="https://docs.microsoft.com/en-us/azure/devops/organizations/billing/set-up-billing-for-your-organization-vs?view=azure-devops" rel="noopener noreferrer"&gt;set up billing&lt;/a&gt;  to increase your storage limit.&lt;/p&gt;

&lt;p&gt;So, let’s recap and see my recommendations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8bksiaq29vc1lq1hjdk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8bksiaq29vc1lq1hjdk.png" alt="Build Artifacts vs Pipelines Artifacts vs Azure Artifacts Recap" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build Artifacts are the older type of artifacts and can be used in both Classic and YAML Pipelines. They are fairly slow to upload and download, they are tied to a specific Pipeline run and they can be used to trigger a deployment, via Release Pipelines.&lt;/p&gt;

&lt;p&gt;Finally, Build Artifacts cannot be shared, you can use them for storing anything you want, and you don’t pay for the space you use.&lt;/p&gt;

&lt;p&gt;Pipeline Artifacts, on the other hand, are newer and faster, but they can be used only in YAML Pipelines. They are also tied to a specific Pipeline run, they trigger CD in both Multistage Pipelines and Release Pipelines, and cannot be shared. Likewise, they can be used to store anything and they are free.&lt;/p&gt;

&lt;p&gt;Finally, Azure Artifact is a completely different service. Packages stored in Azure Artifacts can be used in both Classic and YAML Pipeline, and their upload and download are as fast as with Pipelines Artifacts because they share the same underlying technology.&lt;/p&gt;

&lt;p&gt;Being a different service, Azure Artifacts are independent from the Pipelines which have publish them, but like the other types can be used to trigger CD.&lt;/p&gt;

&lt;p&gt;Finally, they are the only type of artifact that can be shared with developers even cross-organization, but they can be only typed packages and, last but not least, you get 2gb of space for free but after that it’s a paid service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recommendations
&lt;/h3&gt;

&lt;p&gt;How would I recommend you use the different types of artifacts?&lt;/p&gt;

&lt;p&gt;Use &lt;strong&gt;Build Artifacts&lt;/strong&gt; only if you are using Classic Build Pipelines. There is really no other reason to use them, since they are the older and slower flavor of artifacts.&lt;/p&gt;

&lt;p&gt;Use &lt;strong&gt;Pipelines Artifacts&lt;/strong&gt; if you are on YAML Pipelines, and you don’t need to share the result of your CI with other teams.&lt;/p&gt;

&lt;p&gt;Finally, &lt;strong&gt;Azure Artifacts&lt;/strong&gt; enables developers to share their code efficiently and manage all their packages from one place. Use Azure Artifacts if you need to share packages within the same team, across organizations, or even publicly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusions
&lt;/h3&gt;

&lt;p&gt;Let me know in the comments below if you still have any more questions about Build Artifacts, Pipeline Artifacts, and Azure Artifacts and I will try my best to answer them.&lt;/p&gt;

&lt;p&gt;Also, check out &lt;a href="https://youtu.be/3cGtA__dKUc" rel="noopener noreferrer"&gt;this video&lt;/a&gt; with all you need to know about the differences between Classic Pipelines and YAML Pipelines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Like, share and follow me&lt;/strong&gt; 🚀 for more content:&lt;/p&gt;

&lt;p&gt;📽 &lt;a href="https://www.youtube.com/CoderDave" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;&lt;br&gt;
☕ &lt;a href="https://buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;br&gt;
💖 &lt;a href="https://patreon.com/CoderDave" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;br&gt;
📧 &lt;a href="https://coderdave.io/newsletter" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt;&lt;br&gt;
🌐 &lt;a href="https://coderdave.io" rel="noopener noreferrer"&gt;CoderDave.io Website&lt;/a&gt;&lt;br&gt;
👕 &lt;a href="https://geni.us/cdmerch" rel="noopener noreferrer"&gt;Merch&lt;/a&gt;&lt;br&gt;
👦🏻 &lt;a href="https://www.facebook.com/CoderDaveYT" rel="noopener noreferrer"&gt;Facebook page&lt;/a&gt;&lt;br&gt;
🐱‍💻 &lt;a href="https://github.com/n3wt0n" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;br&gt;
👲🏻 &lt;a href="https://www.twitter.com/davide.benvegnu" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;br&gt;
👴🏻 &lt;a href="https://www.linkedin.com/in/davidebenvegnu/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
🔉 &lt;a href="https://geni.us/cdpodcast" rel="noopener noreferrer"&gt;Podcast&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/CoderDave" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee" width="545" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/WWCmEUCt3Cc"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>azuredevops</category>
      <category>azure</category>
      <category>devops</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
