<?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>DEV Community: Sengi Runners</title>
    <description>The latest articles on DEV Community by Sengi Runners (@sengi_runners).</description>
    <link>https://dev.to/sengi_runners</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4180232%2F7b1ab9a0-45b4-4231-a291-3b6239e4c058.png</url>
      <title>DEV Community: Sengi Runners</title>
      <link>https://dev.to/sengi_runners</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sengi_runners"/>
    <language>en</language>
    <item>
      <title>Check GitHub Actions runner compatibility before switching providers</title>
      <dc:creator>Sengi Runners</dc:creator>
      <pubDate>Mon, 12 Oct 2026 19:34:00 +0000</pubDate>
      <link>https://dev.to/sengi_runners/check-github-actions-runner-compatibility-before-switching-providers-3038</link>
      <guid>https://dev.to/sengi_runners/check-github-actions-runner-compatibility-before-switching-providers-3038</guid>
      <description>&lt;p&gt;Disclosure: This guide is from the Sengi team and was written with AI. Sengi is the managed runner service used in the example.&lt;/p&gt;

&lt;p&gt;A runner change can be a small pull request, but a small diff does not mean every job will behave identically. The machine still needs the right operating system, tool versions and container environment.&lt;/p&gt;

&lt;p&gt;Before moving a Linux job, check these assumptions. The goal is a first successful result you can compare with your existing run, not a repository-wide rewrite.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check what the label actually selects
&lt;/h2&gt;

&lt;p&gt;GitHub uses &lt;code&gt;runs-on&lt;/code&gt; to choose a machine. An array is an intersection: the runner must match every listed label. Adding a new provider's label to an old array is not the same as replacing the target. &lt;a href="https://docs.github.com/en/actions/how-tos/write-workflows/choose-where-workflows-run/choose-the-runner-for-a-job" rel="noopener noreferrer"&gt;GitHub explains label matching here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For Sengi, a supported target is a complete label:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sengi-standard-2-ubuntu-2404&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the provider's documented form rather than inventing combinations. If the selection comes from a matrix, an expression or a reusable workflow, inspect where that value is defined before changing it.&lt;/p&gt;

&lt;p&gt;Sengi currently offers Ubuntu 24.04 on x64. Leave Windows, macOS, arm64 and jobs requiring another operating-system image on their existing runners. A job on &lt;code&gt;ubuntu-latest&lt;/code&gt; also needs an image check: switching to a fixed Ubuntu 24.04 target may change an assumption about what “latest” supplies. &lt;a href="https://sengi.run/agent" rel="noopener noreferrer"&gt;Sengi's migration instructions&lt;/a&gt; identify the supported targets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make tool dependencies explicit
&lt;/h2&gt;

&lt;p&gt;A working build can quietly depend on software that happens to be installed on its current runner. Look for commands such as &lt;code&gt;node&lt;/code&gt;, &lt;code&gt;python&lt;/code&gt;, &lt;code&gt;ruby&lt;/code&gt;, &lt;code&gt;java&lt;/code&gt;, &lt;code&gt;docker&lt;/code&gt; and native compilers. For each important dependency, identify how the workflow selects its version.&lt;/p&gt;

&lt;p&gt;Prefer an existing setup step or your project's documented installation procedure over relying on whichever executable appears first in the machine's path. Keep the dependency lockfile and install command unchanged for the first comparison. Otherwise, a runner migration and a dependency upgrade become one experiment that is harder to diagnose.&lt;/p&gt;

&lt;p&gt;If you need a diagnostic step, print only the relevant tool versions. Do not dump the whole environment: CI logs can contain sensitive information, and a version check does not require exposing secrets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat containers as a separate compatibility check
&lt;/h2&gt;

&lt;p&gt;A job-level &lt;code&gt;container:&lt;/code&gt; setting changes where script steps execute. Check the image, registry access and shell assumptions as well as the host runner. GitHub's container documentation notes that the default shell inside a job container is &lt;code&gt;sh&lt;/code&gt;, not &lt;code&gt;bash&lt;/code&gt;; an explicit shell can override it. It also warns that Docker Hub's normal pull limits can affect self-hosted runners. &lt;a href="https://docs.github.com/en/actions/how-tos/write-workflows/choose-where-workflows-run/run-jobs-in-a-container" rel="noopener noreferrer"&gt;Read the container behavior&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Do not remove registry authentication or alter service-container networking merely to make a migration look like a one-line change. Keep those settings intact, then inspect the first result on the chosen runner. A failure while pulling an image and a failure in your test suite need different fixes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate routing trouble from a failed step
&lt;/h2&gt;

&lt;p&gt;If the job never starts, inspect the exact label, repository connection and available capacity. If it starts and fails, inspect the first failing step and compare it with the previous run. Changing five unrelated settings at once usually destroys the useful comparison.&lt;/p&gt;

&lt;p&gt;For Sengi, connect the repository to a project through Connect GitHub before merging its runner-label change. Installing the GitHub App alone is not the complete connection. The current &lt;a href="https://dev.to/sengi_runners/move-a-linux-github-actions-job-to-sengi-without-replacing-your-workflow-3375"&gt;migration guide&lt;/a&gt; walks through that sequence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the first trial reversible
&lt;/h2&gt;

&lt;p&gt;Choose one representative build or test job. Review the pull request, let its normal trigger run, then compare the result, artifacts and required checks. Only widen the change once that job behaves as expected.&lt;/p&gt;

&lt;p&gt;Keep the original label in the pull-request diff so rollback is a simple revert. A green first run is useful evidence; it is not proof that every job in a large matrix has the same requirements.&lt;/p&gt;

&lt;p&gt;That is the practical benefit of keeping GitHub Actions while changing execution services: you can test the machine choice without replacing the workflow system. Start small, preserve the comparison, and expand based on actual results.&lt;/p&gt;

</description>
      <category>githubactions</category>
      <category>devops</category>
    </item>
    <item>
      <title>Move a Linux GitHub Actions job to Sengi without replacing your workflow</title>
      <dc:creator>Sengi Runners</dc:creator>
      <pubDate>Mon, 12 Oct 2026 19:05:10 +0000</pubDate>
      <link>https://dev.to/sengi_runners/move-a-linux-github-actions-job-to-sengi-without-replacing-your-workflow-3375</link>
      <guid>https://dev.to/sengi_runners/move-a-linux-github-actions-job-to-sengi-without-replacing-your-workflow-3375</guid>
      <description>&lt;p&gt;Disclosure: I work on Sengi, the runner service used in this walkthrough.&lt;/p&gt;

&lt;p&gt;Changing your CI provider can sound like a rewrite. With GitHub Actions, there is a smaller option: keep Actions for the workflow and use another service for the machine that runs a job.&lt;/p&gt;

&lt;p&gt;Sengi follows that model. You keep reviewing results in GitHub. For a supported job, the workflow change is its runner label. Here is how to try it on one job, see the result, and undo it if it is not a fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pick a job that fits
&lt;/h2&gt;

&lt;p&gt;Start with a straightforward build or test job using Ubuntu 24.04 on x64. Sengi currently offers that platform, not Windows, macOS, arm64 or older Ubuntu images.&lt;/p&gt;

&lt;p&gt;Read the actual job before changing it. A literal runner label is straightforward. A matrix expression, a reusable workflow or a runner group needs closer inspection because the machine selection may happen somewhere else. Keep unrelated jobs unchanged for the first trial.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect the repository first
&lt;/h2&gt;

&lt;p&gt;Create an account at &lt;a href="https://app.sengi.run" rel="noopener noreferrer"&gt;Sengi&lt;/a&gt;, choose Connect GitHub, and select the repository you want to use. This grants the GitHub access and connects the repository to a Sengi project.&lt;/p&gt;

&lt;p&gt;Installing the GitHub App directly is not the same as completing that connection. Confirm the repository appears in your Sengi project before merging a runner change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Change the runner label
&lt;/h2&gt;

&lt;p&gt;For a 2-vCPU runner with 8 GB of RAM, change this line in the chosen job:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-24.04&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sengi-standard-2-ubuntu-2404&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same target can be used for compatible Linux x64 jobs currently on ubuntu-latest. It fixes the image at Ubuntu 24.04, so check any assumptions your job makes about the latest image.&lt;/p&gt;

&lt;p&gt;Leave steps, permissions, secrets and triggers unchanged. Open a pull request and review the diff before merging. If your repository uses actionlint, declare the custom label in its configuration so the lint check recognizes it.&lt;/p&gt;

&lt;p&gt;Prefer a coding agent? The &lt;a href="https://sengi.run/agent" rel="noopener noreferrer"&gt;Sengi migration prompt&lt;/a&gt; inventories workflow files, reports jobs it skips and asks for review before opening a pull request. The repository connection still needs your consent, and you decide what to merge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspect the first result
&lt;/h2&gt;

&lt;p&gt;Use the next workflow run to check whether the selected job starts, completes and produces the expected outputs. Review the GitHub logs and required checks, not just the runner label in the file.&lt;/p&gt;

&lt;p&gt;A queue is not automatically a broken connection. Free accounts share a 12-vCPU concurrency limit. Six 2-vCPU jobs can run together; additional jobs wait for capacity to become available. Once the monthly free allowance is exhausted, new free jobs cannot start, but jobs already running may finish.&lt;/p&gt;

&lt;p&gt;If a step behaves differently, inspect that step's dependencies and image assumptions before migrating the rest of the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understand the allowance
&lt;/h2&gt;

&lt;p&gt;The 2-vCPU size costs $0.003 per execution minute after the applicable free allowance. Each job rounds up separately to a whole minute, and boot and teardown are not billed.&lt;/p&gt;

&lt;p&gt;One account gets 3,000 standard-2-equivalent free minutes each month, without a card to start. The 4-vCPU and 8-vCPU sizes use that same pool at two and four times the rate. These are not three separate allowances. Prices checked October 11, 2026; see &lt;a href="https://sengi.run/#pricing" rel="noopener noreferrer"&gt;current pricing&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the rollback small
&lt;/h2&gt;

&lt;p&gt;To return that job to GitHub-hosted execution, revert the runner-label change. Test one representative job first, then decide whether to move others based on their actual behavior, time and cost.&lt;/p&gt;

</description>
      <category>githubactions</category>
      <category>devops</category>
      <category>tutorial</category>
      <category>cicd</category>
    </item>
  </channel>
</rss>
