<?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: T "@tnir" N</title>
    <description>The latest articles on DEV Community by T "@tnir" N (@tnir).</description>
    <link>https://dev.to/tnir</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%2F46862%2F0b098a05-4555-40c5-98e9-b0741c28a2dd.jpeg</url>
      <title>DEV Community: T "@tnir" N</title>
      <link>https://dev.to/tnir</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tnir"/>
    <language>en</language>
    <item>
      <title>Explain why we need .ruby-version file but no ruby DSL method in Gemfile in Rails apps</title>
      <dc:creator>T "@tnir" N</dc:creator>
      <pubDate>Mon, 17 Feb 2025 06:58:00 +0000</pubDate>
      <link>https://dev.to/tnir/explain-why-we-need-ruby-version-file-but-no-ruby-dsl-method-in-gemfile-in-rails-apps-468b</link>
      <guid>https://dev.to/tnir/explain-why-we-need-ruby-version-file-but-no-ruby-dsl-method-in-gemfile-in-rails-apps-468b</guid>
      <description>&lt;p&gt;We tend to have both &lt;code&gt;.ruby-version&lt;/code&gt; file &lt;em&gt;and&lt;/em&gt; a &lt;code&gt;ruby&lt;/code&gt; directive in your &lt;code&gt;Gemfile&lt;/code&gt;, and when you might choose one over the other, or even use both.  This gets to the heart of how Ruby version management works in a Rails project, and it involves understanding the roles of different tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tl;dr:&lt;/strong&gt; Between Ruby on Rails 5.2 (2017) and 7.1 (2024), we had both &lt;code&gt;.ruby-version&lt;/code&gt; and &lt;code&gt;ruby&lt;/code&gt; directive in &lt;code&gt;Gemfile&lt;/code&gt;, but since 7.2 (2024) we should no more have &lt;code&gt;ruby&lt;/code&gt; directive in &lt;code&gt;Gemfile&lt;/code&gt;. We should manage the Ruby version only in &lt;code&gt;.ruby-version&lt;/code&gt; for your Rails applications even if you want to add contstraints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Role of &lt;code&gt;.ruby-version&lt;/code&gt; (and version managers)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Interpreter Selection:&lt;/strong&gt; The primary purpose of &lt;code&gt;.ruby-version&lt;/code&gt; is to tell Ruby version managers (like &lt;code&gt;rbenv&lt;/code&gt;, &lt;code&gt;chruby&lt;/code&gt;, &lt;code&gt;asdf&lt;/code&gt;) &lt;em&gt;which&lt;/em&gt; Ruby installation to use when you're in a project directory.  It's the mechanism that &lt;em&gt;activates&lt;/em&gt; a specific Ruby.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  When you &lt;code&gt;cd&lt;/code&gt; into a directory containing a &lt;code&gt;.ruby-version&lt;/code&gt; file, and you're using a version manager, the version manager reads the file.&lt;/li&gt;
&lt;li&gt;  It then modifies your shell's &lt;code&gt;PATH&lt;/code&gt; environment variable (and potentially other environment variables) to point to the binaries (like &lt;code&gt;ruby&lt;/code&gt;, &lt;code&gt;gem&lt;/code&gt;, &lt;code&gt;bundle&lt;/code&gt;, &lt;code&gt;rails&lt;/code&gt;) of the specified Ruby version.&lt;/li&gt;
&lt;li&gt;  This ensures that when you run &lt;code&gt;ruby -v&lt;/code&gt;, you see the version specified in &lt;code&gt;.ruby-version&lt;/code&gt;, &lt;em&gt;and&lt;/em&gt; that any commands you execute (like &lt;code&gt;bundle install&lt;/code&gt;) will use that specific Ruby installation.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;System-Wide vs. Project-Specific:&lt;/strong&gt; Version managers are designed to allow you to have multiple Ruby versions installed on your system &lt;em&gt;simultaneously&lt;/em&gt;.  &lt;code&gt;.ruby-version&lt;/code&gt; provides a &lt;em&gt;project-specific&lt;/em&gt; override.  You might have a system-wide default Ruby, but each project can specify its own requirement.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Outside of Bundler's Scope:&lt;/strong&gt;  Crucially, &lt;code&gt;.ruby-version&lt;/code&gt; is primarily handled by &lt;em&gt;external&lt;/em&gt; tools (the version managers). Bundler doesn't directly &lt;em&gt;interpret&lt;/em&gt; or &lt;em&gt;enforce&lt;/em&gt; &lt;code&gt;.ruby-version&lt;/code&gt; in the same way it enforces the &lt;code&gt;ruby&lt;/code&gt; directive in the &lt;code&gt;Gemfile&lt;/code&gt;.  Bundler &lt;em&gt;sees&lt;/em&gt; the result (the active Ruby version), but it doesn't &lt;em&gt;set&lt;/em&gt; it.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. The Role of the &lt;code&gt;ruby&lt;/code&gt; Directive in &lt;code&gt;Gemfile&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dependency Constraint and Compatibility:&lt;/strong&gt; The &lt;code&gt;ruby&lt;/code&gt; directive in &lt;code&gt;Gemfile&lt;/code&gt; serves a different purpose. It's a &lt;em&gt;constraint&lt;/em&gt; that Bundler uses during dependency resolution.  It tells Bundler:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  "This project &lt;em&gt;requires&lt;/em&gt; at least this version of Ruby."&lt;/li&gt;
&lt;li&gt;  "When resolving gem dependencies, consider only gem versions that are compatible with this specified Ruby version."&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Bundler's Responsibility:&lt;/strong&gt; Bundler &lt;em&gt;enforces&lt;/em&gt; this constraint. If you try to &lt;code&gt;bundle install&lt;/code&gt; with an incompatible Ruby version (one that doesn't meet the requirement in the &lt;code&gt;Gemfile&lt;/code&gt;), Bundler will raise an error and refuse to proceed.&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Gemfile&lt;/span&gt;
&lt;span class="n"&gt;ruby&lt;/span&gt; &lt;span class="s2"&gt;"3.4.2"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;If you were to run &lt;code&gt;bundle install&lt;/code&gt; with Ruby 3.4.1 active, Bundler would error out.&lt;/p&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Platform-Specific Rubies (Optional):&lt;/strong&gt; The &lt;code&gt;ruby&lt;/code&gt; directive can also be used to specify platform-specific Ruby implementations:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Gemfile&lt;/span&gt;
&lt;span class="n"&gt;ruby&lt;/span&gt; &lt;span class="s2"&gt;"3.1.6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;engine: &lt;/span&gt;&lt;span class="s2"&gt;"jruby"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;engine_version: &lt;/span&gt;&lt;span class="s2"&gt;"9.4.12.0"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;This tells Bundler that the project requires JRuby 9.4.12.0, which is compatible with Ruby 3.1.6 (actually &lt;a href="https://www.jruby.org/2025/02/11/jruby-9-4-12-0.html" rel="noopener noreferrer"&gt;Ruby 3.1&lt;/a&gt;).&lt;/p&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Doesn't &lt;em&gt;Activate&lt;/em&gt; a Ruby:&lt;/strong&gt;  The &lt;code&gt;ruby&lt;/code&gt; directive in &lt;code&gt;Gemfile&lt;/code&gt; &lt;em&gt;doesn't&lt;/em&gt; change your active Ruby version.  It's a declaration of a requirement, not a command to switch interpreters.  This is the key difference from &lt;code&gt;.ruby-version&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Why Both Might Be Used (and When)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's a breakdown of common scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scenario 1: &lt;code&gt;.ruby-version&lt;/code&gt; Only (Common in older projects or simpler setups)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;How it works:&lt;/strong&gt; You rely solely on the version manager and &lt;code&gt;.ruby-version&lt;/code&gt; to set the correct Ruby. You don't explicitly state the Ruby version in the &lt;code&gt;Gemfile&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Pros:&lt;/strong&gt; Simpler setup, especially if you consistently use a version manager.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Cons:&lt;/strong&gt; Less explicit.  Someone working on the project &lt;em&gt;without&lt;/em&gt; a version manager might accidentally use the wrong Ruby and not realize it until runtime errors occur.  Bundler won't warn them.  Less portable to environments without the same version manager setup.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Scenario 2: &lt;code&gt;ruby&lt;/code&gt; in &lt;code&gt;Gemfile&lt;/code&gt; Only (Less Common)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;How it works:&lt;/strong&gt;  You rely on the &lt;code&gt;ruby&lt;/code&gt; directive in &lt;code&gt;Gemfile&lt;/code&gt; to enforce the Ruby version. You &lt;em&gt;don't&lt;/em&gt; use a &lt;code&gt;.ruby-version&lt;/code&gt; file.  You might manually switch Ruby versions (perhaps with your OS's package manager) or rely on a system-wide default Ruby that happens to match the &lt;code&gt;Gemfile&lt;/code&gt; requirement.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Pros:&lt;/strong&gt;  Bundler will always enforce the Ruby version.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Cons:&lt;/strong&gt;  Very inconvenient.  You have to manually ensure the correct Ruby is active &lt;em&gt;before&lt;/em&gt; running any commands.  Prone to errors if you forget.  Not suitable for projects requiring different Ruby versions.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Scenario 3: Both &lt;code&gt;.ruby-version&lt;/code&gt; and &lt;code&gt;ruby&lt;/code&gt; in &lt;code&gt;Gemfile&lt;/code&gt; (Best Practice, and now the Rails default)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;How it works:&lt;/strong&gt;  This &lt;strong&gt;was&lt;/strong&gt; the recommended approach, and it's how Rails 5.2 through 7.1 generates new projects.  You used to use &lt;em&gt;both&lt;/em&gt; files.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Pros:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Best of both worlds:&lt;/strong&gt;  &lt;code&gt;.ruby-version&lt;/code&gt; handles the automatic switching of Ruby versions, making development convenient.  The &lt;code&gt;ruby&lt;/code&gt; directive in &lt;code&gt;Gemfile&lt;/code&gt; acts as a safety net and ensures Bundler only resolves compatible dependencies.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Explicit and Enforced:&lt;/strong&gt; The required Ruby version is clearly stated in &lt;em&gt;two&lt;/em&gt; places, reducing ambiguity.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Portable:&lt;/strong&gt;  The &lt;code&gt;Gemfile&lt;/code&gt; constraint works regardless of whether a version manager is used.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Consistency:&lt;/strong&gt; This combination helps ensure consistency between development, testing, and production environments.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  &lt;strong&gt;Cons:&lt;/strong&gt;  Slightly more complex setup (but the complexity is justified by the benefits).  You need to keep the versions in both files in sync.  (Rails 7.2+'s &lt;code&gt;--skip-ruby-version&lt;/code&gt; option for &lt;code&gt;rails new&lt;/code&gt; can help in specific cases like using Devcontainers, where &lt;code&gt;.ruby-version&lt;/code&gt; might be redundant).&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Scenario 4: .ruby-version file is present, and the ruby directive within the Gemfile is not used. However, a .gemspec file exists, specifying the required_ruby_version.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it Works:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;.ruby-version&lt;/code&gt;: Manages the active Ruby version as described before.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;.gemspec&lt;/code&gt;:  If your project is also intended to be packaged as a gem (even if it's primarily an application), the &lt;code&gt;.gemspec&lt;/code&gt; file can include a &lt;code&gt;required_ruby_version&lt;/code&gt; setting.  This is similar to the &lt;code&gt;ruby&lt;/code&gt; directive in the &lt;code&gt;Gemfile&lt;/code&gt;, but it applies when your project is installed &lt;em&gt;as a gem&lt;/em&gt; into another project.&lt;/li&gt;
&lt;li&gt;  Bundler respects &lt;code&gt;required_ruby_version&lt;/code&gt; from a &lt;code&gt;.gemspec&lt;/code&gt;: When you run &lt;code&gt;bundle install&lt;/code&gt;, Bundler will check the &lt;code&gt;required_ruby_version&lt;/code&gt; in your &lt;code&gt;.gemspec&lt;/code&gt; (if it exists) and ensure the currently active Ruby version satisfies that requirement. It acts like a &lt;code&gt;ruby&lt;/code&gt; directive in the &lt;code&gt;Gemfile&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt; &lt;strong&gt;Pros&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt; Good practice if your project could potentially be used as a gem by others. Ensures compatibility when installed as a dependency.&lt;/li&gt;
&lt;li&gt; Avoids redundancy: If the version is already accurately specified in the &lt;code&gt;.gemspec&lt;/code&gt;, there's less need to duplicate it in the &lt;code&gt;Gemfile&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  &lt;strong&gt;Cons:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;  Slightly less explicit &lt;em&gt;within the Gemfile&lt;/em&gt; itself. A developer looking only at the &lt;code&gt;Gemfile&lt;/code&gt; might not immediately see the Ruby version constraint.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;.gemspec&lt;/code&gt; is primarily for gem packaging; if your project is &lt;em&gt;only&lt;/em&gt; an application and never intended to be a gem, it might feel a bit out of place to use &lt;code&gt;.gemspec&lt;/code&gt; for this.&lt;/li&gt;
&lt;li&gt;  This scenario is acceptable, though generally scenario 3 is preferred.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Set Ruby version in Gemfile and .ruby-version by default rails/rails#30016
&lt;/h2&gt;

&lt;p&gt;rails/rails#30016 introduced &lt;code&gt;ruby "3.4.2"&lt;/code&gt; in &lt;code&gt;Gemfile&lt;/code&gt; file in 2017 targeting for &lt;a href="https://guides.rubyonrails.org/5_2_release_notes.html" rel="noopener noreferrer"&gt;Ruby on Rails 5.2.0&lt;/a&gt;. This is applied only when new Rails applications are created through &lt;code&gt;rails new&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rails/rails/pull/30016" rel="noopener noreferrer"&gt;https://github.com/rails/rails/pull/30016&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;Permanently&lt;/em&gt; remove ruby from Gemfile rails/rails#50914
&lt;/h2&gt;

&lt;p&gt;7 years after its inception in 2017, rails/rails#50914 permanently removed the &lt;code&gt;ruby "3.4.2"&lt;/code&gt; directive from &lt;code&gt;Gemfile&lt;/code&gt; file in 2024 targeting for &lt;a href="https://guides.rubyonrails.org/7_2_release_notes.html" rel="noopener noreferrer"&gt;Ruby on Rails 7.2.0&lt;/a&gt;. This change looks like a so minor problem &lt;/p&gt;

&lt;p&gt;The original commit message was misleading but &lt;a class="mentioned-user" href="https://dev.to/rafaelfranca"&gt;@rafaelfranca&lt;/a&gt; explained correctly as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rails/rails/pull/50914#issuecomment-2529739641" rel="noopener noreferrer"&gt;https://github.com/rails/rails/pull/50914#issuecomment-2529739641&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It is not temporary anymore. We decided to not generate ruby version in the gemfile&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Personally with this change in Feb 2024 I am so glad to get rid of &lt;code&gt;ruby&lt;/code&gt; DSL from &lt;code&gt;Gemfile&lt;/code&gt;, which bothers me and our developers. 🎉🎉🎉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In summary,&lt;/strong&gt; we had to use both &lt;code&gt;.ruby-version&lt;/code&gt; and the &lt;code&gt;ruby&lt;/code&gt; directive in &lt;code&gt;Gemfile&lt;/code&gt; for the best combination of convenience, explicitness, and safety according to &lt;code&gt;rails new&lt;/code&gt; by default. This had ensured that your project uses the correct Ruby interpreter and that Bundler enforces compatibility during dependency resolution. If you are using a devcontainer, you should manage the Ruby version in &lt;code&gt;.ruby-version&lt;/code&gt; and &lt;code&gt;.devcontainer/Dockerfile&lt;/code&gt; files by your own self, by once removing &lt;code&gt;ruby&lt;/code&gt; directive in &lt;code&gt;Gemfile&lt;/code&gt; and the Dockerfile to manage the Ruby version. Since then, you are free from these constraints with the balanced configurations. Thanks Rails team for these long-term improvements ❤️❤️❤️&lt;/p&gt;

</description>
      <category>rails</category>
      <category>ruby</category>
    </item>
    <item>
      <title>Update Hugo with its theme</title>
      <dc:creator>T "@tnir" N</dc:creator>
      <pubDate>Wed, 17 Aug 2022 07:29:00 +0000</pubDate>
      <link>https://dev.to/tnir/update-hugo-with-its-theme-260f</link>
      <guid>https://dev.to/tnir/update-hugo-with-its-theme-260f</guid>
      <description>&lt;p&gt;I used to use &lt;a href="https://github.com/digitalcraftsman/hugo-cactus-theme" rel="noopener noreferrer"&gt;hugo-cactus-theme (Cactus Theme)&lt;/a&gt; as the Hugo theme for &lt;code&gt;https://tnir.gitlab.io&lt;/code&gt; since its inception in 2017.&lt;br&gt;
At that time I could not take time to choose the theme carefully and neither have I until this week.&lt;/p&gt;

&lt;p&gt;I found the theme I chose was deprecated and have used Hugo 0.62.2 to build the site.&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%2F2f3adfviils9i7o3hzlt.jpeg" 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%2F2f3adfviils9i7o3hzlt.jpeg" alt="Pathway to healthy build system" width="557" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As some breaking changes happened in Hugo 0.93, I was not able to directly update it to the latest and I needed to update the system to the latest (Hugo 0.101.0) in this way 😭&lt;/p&gt;

&lt;p&gt;Choose your theme for website very carefully and create your own if you can 🍀&lt;/p&gt;

</description>
      <category>hugo</category>
      <category>webdev</category>
      <category>staticsite</category>
    </item>
    <item>
      <title>GitLab diff color system</title>
      <dc:creator>T "@tnir" N</dc:creator>
      <pubDate>Wed, 13 Jul 2022 22:45:56 +0000</pubDate>
      <link>https://dev.to/tnir/gitlab-diff-color-system-50ki</link>
      <guid>https://dev.to/tnir/gitlab-diff-color-system-50ki</guid>
      <description>&lt;p&gt;GitLab recently allows every user to modify colors in diff.&lt;/p&gt;

&lt;p&gt;I have used the default values with Monokai syntax highlight for 7 years at &lt;code&gt;GitLab.com&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%2Fh66pe4djl00j3qdkjsc4.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%2Fh66pe4djl00j3qdkjsc4.png" alt="My preference on GitLab.com used for 7 years" width="800" height="820"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, today I found these are not perfectly configured and so I need to change it soon.&lt;/p&gt;

&lt;h3&gt;
  
  
  What color have used for it for 7 years?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;deletion: &lt;code&gt;#c87872&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;addition: &lt;code&gt;#678528&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What color should I use for it from today?
&lt;/h3&gt;

&lt;p&gt;For light theme, I can choose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deletion: &lt;code&gt;#FFEBE9&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;addition: &lt;code&gt;#E6FFEC&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why?
&lt;/h3&gt;

&lt;p&gt;As I use GitHub as well as GitLab, the colors in both should be the same if possible.&lt;/p&gt;

&lt;p&gt;Ciao! 👋&lt;/p&gt;

&lt;h3&gt;
  
  
  References from GitHub (as of 2022-07-13)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;--color-diff-blob-addition-num-bg&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;#CCFFD8&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;--color-diff-blob-addition-line-bg&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;#E6FFEC&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;--color-diff-blob-addition-word-bg&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;#ABF2BC&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;--color-diff-blob-deletion-num-bg&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;#FFD7D5&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;--color-diff-blob-deletion-line-bg&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;#FFEBE9&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;--color-diff-blob-deletion-word-bg&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;rgba&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;255&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="err"&gt;129&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="err"&gt;130&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;4&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  GitHub's diff color as of 2014
&lt;/h3&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%2F6crn03as7tofq038fsfl.gif" 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%2F6crn03as7tofq038fsfl.gif" alt="Image description" width="800" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/78281" rel="noopener noreferrer"&gt;Add user preferences to customize Diffs colors (gitlab-org/gitlab!78281 by @wwwjon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://about.gitlab.com/releases/2022/04/22/gitlab-14-10-released/" rel="noopener noreferrer"&gt;GitLab 14.10 released with individual compliance violation reporting and a UI for streaming audit events (APR 22, 2022)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;primer/css source code: &lt;a href="https://github.com/primer/css/blob/6f7726a97e8aebe7620c93d6746a16147f7b80d7/src/support/mixins/color-modes.scss" rel="noopener noreferrer"&gt;https://github.com/primer/css/blob/6f7726a97e8aebe7620c93d6746a16147f7b80d7/src/support/mixins/color-modes.scss&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Image courtesy of GitHub: &lt;a href="https://github.blog/2014-09-04-better-word-highlighting-in-diffs/" rel="noopener noreferrer"&gt;https://github.blog/2014-09-04-better-word-highlighting-in-diffs/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gitlab</category>
      <category>sourcecodemanagement</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>tig blame online</title>
      <dc:creator>T "@tnir" N</dc:creator>
      <pubDate>Wed, 22 Jun 2022 02:38:07 +0000</pubDate>
      <link>https://dev.to/tnir/tig-blame-online-3ahj</link>
      <guid>https://dev.to/tnir/tig-blame-online-3ahj</guid>
      <description>&lt;h2&gt;
  
  
  tig
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;tig blame&lt;/code&gt; looks like having been loved for a while in CLI environments when looking into Git history.&lt;/p&gt;

&lt;p&gt;But where can we find &lt;code&gt;tig blame&lt;/code&gt; online?&lt;/p&gt;

&lt;h2&gt;
  
  
  Candidates I can imagine
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;vscode.dev extension (VSCode for Web)

&lt;ul&gt;
&lt;li&gt;for GitLens &lt;a href="https://gitlens.amod.io/" rel="noopener noreferrer"&gt;https://gitlens.amod.io/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Resource
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;tig: &lt;a href="https://github.com/jonas/tig" rel="noopener noreferrer"&gt;https://github.com/jonas/tig&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/sobolevn/using-better-clis-6o8"&gt;https://dev.to/sobolevn/using-better-clis-6o8&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>tig</category>
      <category>productivity</category>
    </item>
    <item>
      <title>When I am pushing to remote Git repo, the push was rejected because...</title>
      <dc:creator>T "@tnir" N</dc:creator>
      <pubDate>Fri, 15 Apr 2022 02:54:20 +0000</pubDate>
      <link>https://dev.to/tnir/when-i-am-pushing-to-remote-git-repo-the-push-was-rejected-because-22e3</link>
      <guid>https://dev.to/tnir/when-i-am-pushing-to-remote-git-repo-the-push-was-rejected-because-22e3</guid>
      <description>&lt;p&gt;&lt;a href="https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks" rel="noopener noreferrer"&gt;Git' &lt;code&gt;pre-push&lt;/code&gt; hook&lt;/a&gt; can be configured in repo by repo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gitlab.com/gitlab-org/gitlab" rel="noopener noreferrer"&gt;gitlab-org/gitlab&lt;/a&gt; repo &lt;a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/52106" rel="noopener noreferrer"&gt;introduced it with Lefthook gem&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Due to Ruby packages (via Rubygems), I need to update all the packages corresponding &lt;code&gt;Gemfile&lt;/code&gt;/&lt;code&gt;Gemfile.lock&lt;/code&gt; on &lt;code&gt;HEAD&lt;/code&gt; after:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git checkout master (or main) &amp;amp;&amp;amp; git pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While I just wanted to modify some Markdown, why need to update all Ruby packages?&lt;/p&gt;

&lt;p&gt;Here is the trouble I had this morning when just docs are to be updated, which demotivate me for a while:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git push origin HEAD
Lefthook v0.7.5
RUNNING HOOKS GROUP: pre-push

eslint (SKIP. NO FILES FOR INSPECTION)

graphql_docs (SKIP. NO FILES FOR INSPECTION)

  EXECUTE &amp;gt; docs-metadata
Documentation metadata found in 1 documentation files.


docs-deprecations (SKIP. NO FILES FOR INSPECTION)

haml-lint (SKIP. NO FILES FOR INSPECTION)

docs-removals (SKIP. NO FILES FOR INSPECTION)

  EXECUTE &amp;gt; vale
✔ 0 errors, 0 warnings and 0 suggestions in 1 file.


  EXECUTE &amp;gt; markdownlint
yarn run v1.22.17
$ markdownlint --config .markdownlint.yml doc/install/requirements.md
Done in 0.38s.


stylelint (SKIP. NO FILES FOR INSPECTION)

prettier (SKIP. NO FILES FOR INSPECTION)

rubocop (SKIP. NO FILES FOR INSPECTION)

gettext (SKIP BY SETTINGS)

  EXECUTE &amp;gt; danger
 Could not find omniauth-alicloud-1.0.1 in any of the sources
Run `bundle install` to install missing gems.


SUMMARY: (done in 2.59 seconds)
✔️  docs-metadata
✔️  vale
✔️  markdownlint
🥊  danger
error: failed to push some refs to 'https://gitlab.com/gitlab-org/gitlab.git'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For long time, it has been that independency from Ruby looks better to me in these cases (for Git hooks).&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%2Funsplash.com%2Fphotos%2FZV_64LdGoao%2Fdownload%3Fixid%3DMnwxMjA3fDB8MXxzZWFyY2h8NHx8Z2l0fGVufDB8fHx8MTY0OTk5MTE2Nw%26force%3Dtrue%26w%3D320" 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%2Funsplash.com%2Fphotos%2FZV_64LdGoao%2Fdownload%3Fixid%3DMnwxMjA3fDB8MXxzZWFyY2h8NHx8Z2l0fGVufDB8fHx8MTY0OTk5MTE2Nw%26force%3Dtrue%26w%3D320" alt="GitLab" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Life is too short for me to understand why it is.&lt;/p&gt;

</description>
      <category>git</category>
      <category>prepush</category>
      <category>ruby</category>
    </item>
    <item>
      <title>GitLab architecture 2022</title>
      <dc:creator>T "@tnir" N</dc:creator>
      <pubDate>Mon, 11 Apr 2022 08:17:26 +0000</pubDate>
      <link>https://dev.to/tnir/gitlab-architecture-2022-5552</link>
      <guid>https://dev.to/tnir/gitlab-architecture-2022-5552</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/19R4TP-sbTQ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gitlab.com/gitlab-org/gitlab/-/merge_requests/82573" rel="noopener noreferrer"&gt;docs: revamp simplified architecture diagram&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/tnir" rel="noopener noreferrer"&gt;@tnir&lt;/a&gt; (or &lt;a class="mentioned-user" href="https://dev.to/tnir"&gt;@tnir&lt;/a&gt; on dev.to) improved GitLab simple architecture diagram in March 2022.&lt;/p&gt;

&lt;h2&gt;
  
  
  That has been incorrect since 2018 (for more than 4 years)
&lt;/h2&gt;

&lt;p&gt;As I described in the MR, it has been incorrect since January 2018. For 50 months.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;As gitlab-shell!181 (merged) removed connection between GitLab Shell and Redis since 2018, !80083 (merged) (by @sunjungp) should be updated as so.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why is the simplified architecture important?
&lt;/h2&gt;

&lt;p&gt;This is the full architecture diagram (as of April XX, 2022). This is too complicated for developers (or external contributors so-called as GitLab wider community contributors).&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%2Fpg62h4neherric5a9wsa.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%2Fpg62h4neherric5a9wsa.png" alt="full GitLab architecture" width="800" height="878"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gitlabhq/gitlabhq/blob/c4e79e91d7182ced2802aacfe71f49c8e6f16d4e/doc/development/architecture.md#component-diagram" rel="noopener noreferrer"&gt;https://github.com/gitlabhq/gitlabhq/blob/c4e79e91d7182ced2802aacfe71f49c8e6f16d4e/doc/development/architecture.md#component-diagram&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is the image file name important?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.google.com/search?tbm=isch&amp;amp;q=gitlab+architecture" rel="noopener noreferrer"&gt;https://www.google.com/search?tbm=isch&amp;amp;q=gitlab+architecture&lt;/a&gt; (Image search of "gitlab architecture") will not be updated soon as updated on Git as you can see:&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%2F1bieuoe4n1hgz0iph2bs.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%2F1bieuoe4n1hgz0iph2bs.png" alt="GitLab architecture on Google search" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks &lt;a href="https://gitlab.com/sunjungp" rel="noopener noreferrer"&gt;@sunjungp (Sunjung Park&lt;/a&gt; for clarifying the problem and resolving it sooner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;After &lt;a href="https://www.cnbc.com/2021/10/14/gitlab-jumps-in-nasdaq-debut-after-pricing-ipo-above-expected-range.html" rel="noopener noreferrer"&gt;its IPO of GitLab (company)&lt;/a&gt;, GitLab (team) will still need more numbers of wider community contributions in code. To get code contributions from the wider community, GitLab team (and &lt;a href="https://about.gitlab.com/community/core-team/" rel="noopener noreferrer"&gt;GitLab core&lt;/a&gt;) needs to pay attentions to make new and old developers understand its architecture, which has become heavily complicated for 10 years.&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://contributors.gitlab.com/" rel="noopener noreferrer"&gt;https://contributors.gitlab.com/&lt;/a&gt;. That has been dead after the GitLab team killed &lt;a href="https://gitlab.com/gitlab-com/gitlab-contributors" rel="noopener noreferrer"&gt;https://gitlab.com/gitlab-com/gitlab-contributors&lt;/a&gt; 4 years ago (in 2018).&lt;/p&gt;

&lt;h2&gt;
  
  
  Refs.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coss.community/tnir" rel="noopener noreferrer"&gt;@tnir @ COSS // coss.community&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mermaid</category>
      <category>gitlab</category>
      <category>seo</category>
      <category>opensource</category>
    </item>
    <item>
      <title>GitHub Actions for GitLab (OSS)</title>
      <dc:creator>T "@tnir" N</dc:creator>
      <pubDate>Thu, 17 Sep 2020 06:55:11 +0000</pubDate>
      <link>https://dev.to/tnir/github-actions-for-gitlab-oss-4m02</link>
      <guid>https://dev.to/tnir/github-actions-for-gitlab-oss-4m02</guid>
      <description>&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%2Fi%2F4z1nr4ljncj6y4y0yowx.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%2Fi%2F4z1nr4ljncj6y4y0yowx.png" alt="mTK4GFK" width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;I implemented GitHub Actions for GitLab Development Kit quality assurance on macOS device, which is available at &lt;a href="https://github.com/tnir/gdk-mac-testing-kit/actions" rel="noopener noreferrer"&gt;https://github.com/tnir/gdk-mac-testing-kit/actions&lt;/a&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%2Fi%2Flkrrgdpxk85uto4s14nz.jpg" 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%2Fi%2Flkrrgdpxk85uto4s14nz.jpg" alt="GitHub" width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Maintainer Must-Haves&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/tnir/gdk-mac-testing-kit/blob/brew/.github/workflows/gdk.yml" rel="noopener noreferrer"&gt;https://github.com/tnir/gdk-mac-testing-kit/blob/brew/.github/workflows/gdk.yml&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;{% github tnir/gdk-mac-testing-kit %}&lt;/code&gt;&lt;br&gt;
&lt;code&gt;{% github https://github.com/tnir/gdk-mac-testing-kit/blob/brew/.github/workflows/gdk.yml %}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gitlab.com/gitlab-org/gitlab-development-kit" rel="noopener noreferrer"&gt;https://gitlab.com/gitlab-org/gitlab-development-kit&lt;/a&gt;&lt;br&gt;
&lt;code&gt;{% gitlab https://gitlab.com/gitlab-org/gitlab-development-kit %}&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/gitlab-org/gitlab-development-kit" rel="noopener noreferrer"&gt;https://gitlab.com/gitlab-org/gitlab-development-kit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Why?
&lt;/h3&gt;

&lt;p&gt;Since early 2018, I have suggested to use GitLab CI/CD for external Git repositories, more specifically one called as GitLab CI/CD for GitHub, simply GitLab CI for GitHub. &lt;a href="https://qiita.com/tnir/items/ee991101a7c948a84f7e" rel="noopener noreferrer"&gt;1&lt;/a&gt;, &lt;a href="https://gitlab.com/tnir/trivy-ci-test/-/pipelines" rel="noopener noreferrer"&gt;2&lt;/a&gt;, &lt;a href="https://twitter.com/tn961ir/status/1042249279488765952" rel="noopener noreferrer"&gt;3&lt;/a&gt;, [unpublished source]&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%2F0blv6eshdlyzlf6veem4.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%2F0blv6eshdlyzlf6veem4.png" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By the end of 2019, at GitHub Universe 2019, &lt;a href="https://github.com/features/actions" rel="noopener noreferrer"&gt;GitHub Actions&lt;/a&gt; went from Beta to General Availability, so I could use this for Linux/Windows and macOS environment.&lt;/p&gt;

&lt;p&gt;As a community (quarterly) Hackathon organizer of GitLab, &lt;a href="https://gitlab.com/gitlab-org/gitlab-development-kit" rel="noopener noreferrer"&gt;GitLab Development Kit (GDK)&lt;/a&gt; is crucial to make hackathons successful. Many developers use macOS on their MacBook's, but the instruction documentation has not been tested continuously.&lt;/p&gt;

&lt;p&gt;As the latest Hackathon was scheduled on 2020-09-02/03, I started to verify the entire document of GDK on GitHub Actions on 2020-08-12. At that time it was still valid through on Actions and my local environment. But a few hours later on it, it was suddenly broken. (...snip... no time to write down everything happened during the Hackathon event)&lt;/p&gt;

&lt;p&gt;So on the Hackathon days, we spent 30 person-hours through the 3 days. If we had fully setup it, this Action would help us save 20-30 hours in total.&lt;/p&gt;

&lt;p&gt;Even after GitHub Actions X Dev Hackathon, I will improve this Actions for the upcoming Hackathon ♥️&lt;/p&gt;




&lt;p&gt;&lt;small&gt;&lt;small&gt;Photo by &lt;a href="https://unsplash.com/@richygreat?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Richy Great&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/github?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/small&gt;&lt;/small&gt;&lt;/p&gt;

</description>
      <category>actionshackathon</category>
      <category>github</category>
      <category>opensource</category>
      <category>gitlab</category>
    </item>
  </channel>
</rss>
