<?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: Manuel Vogel</title>
    <description>The latest articles on DEV Community by Manuel Vogel (@mavogel).</description>
    <link>https://dev.to/mavogel</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%2F762698%2F49260465-c38e-4a95-b48c-d02a1fec30d1.png</url>
      <title>DEV Community: Manuel Vogel</title>
      <link>https://dev.to/mavogel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mavogel"/>
    <language>en</language>
    <item>
      <title>Build and release go binaries for Mac and Linux in GitHub Actions using 2 approaches</title>
      <dc:creator>Manuel Vogel</dc:creator>
      <pubDate>Tue, 07 Dec 2021 14:30:22 +0000</pubDate>
      <link>https://dev.to/mavogel/build-and-release-go-binaries-for-mac-and-linux-in-github-actions-using-2-approaches-3f3o</link>
      <guid>https://dev.to/mavogel/build-and-release-go-binaries-for-mac-and-linux-in-github-actions-using-2-approaches-3f3o</guid>
      <description>&lt;p&gt;Ok, let's get started. We choose one of our popular repositories, &lt;code&gt;awsu&lt;/code&gt; &lt;em&gt;(Enhanced account switching for AWS, supports Yubikey as MFA source)&lt;/em&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kreuzwerker" rel="noopener noreferrer"&gt;
        kreuzwerker
      &lt;/a&gt; / &lt;a href="https://github.com/kreuzwerker/awsu" rel="noopener noreferrer"&gt;
        awsu
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Enhanced account switching for AWS, supports Yubikey as MFA source
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Amazon Web Services Switch User (&lt;code&gt;awsu&lt;/code&gt;)&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/kreuzwerker/awsu/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/40e1401d592453adaa66668d0b8bee45349883270f3edfcd121afb5e1b539c4f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6b7265757a7765726b65722f61777375" alt="Release"&gt;&lt;/a&gt;
&lt;a href="https://github.com/kreuzwerker/awsu/actions" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/kreuzwerker/awsu/workflows/build/badge.svg" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="http://godoc.org/github.com/kreuzwerker/awsu" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/42e271394342057b4fa1f70e8cf53bd924052a5175210b9aee092f71998a2340/68747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f6b7265757a7765726b65722f617773753f7374617475732e737667" alt="Documentation"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/github.com/kreuzwerker/awsu" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/257c30b2a452cc0c8bb05cfabfc1b55eb569868d7b6c06efcb04a6145ead4653/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f6b7265757a7765726b65722f61777375" alt="Go Report Card"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;awsu&lt;/code&gt; provides a convenient integration of &lt;a href="https://aws.amazon.com/" rel="nofollow noopener noreferrer"&gt;AWS&lt;/a&gt; virtual &lt;a href="https://aws.amazon.com/iam/details/mfa/" rel="nofollow noopener noreferrer"&gt;MFA devices&lt;/a&gt; into commandline based workflows. It does use &lt;a href="https://www.yubico.com/" rel="nofollow noopener noreferrer"&gt;Yubikeys&lt;/a&gt; to provide the underlying &lt;a href="https://tools.ietf.org/html/rfc6238" rel="nofollow noopener noreferrer"&gt;TOTP&lt;/a&gt; one-time passwords but does not rely on additional external infrastructure such as e.g. federation.&lt;/p&gt;
&lt;p&gt;There is also a high-level video overview from &lt;a href="https://amzn.to/2Tpiv1m" rel="nofollow noopener noreferrer"&gt;This Is My Architecture&lt;/a&gt; Munich:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=4FUqak5E_CA" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cf51fd27680458a770e631ef997e12c29dbb1cd9fdfd4aca42036f3990c20790/68747470733a2f2f696d672e796f75747562652e636f6d2f76692f34465571616b35455f43412f302e6a7067" alt="Video overview"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[ &lt;a href="https://github.com/kreuzwerker/awsu#installation" rel="noopener noreferrer"&gt;Installation&lt;/a&gt; | &lt;a href="https://github.com/kreuzwerker/awsu#usage" rel="noopener noreferrer"&gt;Usage&lt;/a&gt; | &lt;a href="https://github.com/kreuzwerker/awsu#configuration" rel="noopener noreferrer"&gt;Configuration&lt;/a&gt; | &lt;a href="https://github.com/kreuzwerker/awsu#caching" rel="noopener noreferrer"&gt;Caching&lt;/a&gt; | &lt;a href="https://github.com/kreuzwerker/awsu#commands" rel="noopener noreferrer"&gt;Commands&lt;/a&gt; | &lt;a href="https://github.com/kreuzwerker/awsu#general-multifactor-considerations" rel="noopener noreferrer"&gt;General multifactor considerations&lt;/a&gt; ]&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Installation&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Production-ready Mac releases can be installed e.g.through &lt;code&gt;brew&lt;/code&gt; via &lt;a href="https://github.com/kreuzwerker/homebrew-taps" rel="noopener noreferrer"&gt;kreuzwerker/homebrew-taps&lt;/a&gt;:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;brew tap kreuzwerker/taps &amp;amp;&amp;amp; brew install kreuzwerker/taps/awsu
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Linux is only available for download from the release tab. No Windows builds are provided at the moment.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Prequisites&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;awsu&lt;/code&gt; relies on &lt;a href="https://aws.amazon.com/blogs/security/a-new-and-standardized-way-to-manage-credentials-in-the-aws-sdks/" rel="nofollow noopener noreferrer"&gt;shared credentials files&lt;/a&gt; (the same configuration files that other tools such as e.g. the &lt;a href="https://aws.amazon.com/cli/" rel="nofollow noopener noreferrer"&gt;AWS commandline utilities&lt;/a&gt; are also using) being configured. The profiles are used to determine&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;which IAM long-term credentials (&lt;a href="https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys" rel="nofollow noopener noreferrer"&gt;access key pairs&lt;/a&gt;…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kreuzwerker/awsu" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;This tool is written in Golang and still used &lt;a href="https://travis-ci.org/" rel="noopener noreferrer"&gt;travis-ci&lt;/a&gt; as CI. Furthermore, some parts of the release process were still manually, such as uploading the assets to a GitHub release and generating the release notes. We wanted to have this automated.&lt;/p&gt;

&lt;p&gt;We started by defining our goals for the &lt;a href="https://hacktoberfest.digitalocean.com/" rel="noopener noreferrer"&gt;hacktoberfest&lt;/a&gt; session:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use the latest version of &lt;code&gt;Golang&lt;/code&gt; for building, which is &lt;code&gt;1.17&lt;/code&gt; when writing this post. This state implied
bumping the version of &lt;code&gt;Golang&lt;/code&gt; used internally
and also removing deprecated package manager, such as &lt;code&gt;godep&lt;/code&gt; and/or &lt;code&gt;govendor&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;move from &lt;code&gt;travis&lt;/code&gt; to &lt;code&gt;GitHub actions&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;provide a suitable config for &lt;a href="https://goreleaser.com/" rel="noopener noreferrer"&gt;goreleaser&lt;/a&gt; and use it for release. Fortunately, there is already a &lt;a href="https://github.com/goreleaser/goreleaser-action" rel="noopener noreferrer"&gt;GitHub action&lt;/a&gt; for this tool 🚀&lt;/li&gt;
&lt;li&gt;generate a &lt;a href="http://brew.sh" rel="noopener noreferrer"&gt;homebrew&lt;/a&gt; formula pointing to a new release and&lt;/li&gt;
&lt;li&gt;update our &lt;a href="https://github.com/kreuzwerker/homebrew-taps" rel="noopener noreferrer"&gt;homebrew-taps&lt;/a&gt; automatically 🍺 🤖&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The most tricky part was that libraries needed to be installed on the system &lt;code&gt;Linux&lt;/code&gt; system. We realized that beforehand the binaries were built on a Mac (with an Intel chip) before, one native and the other in a docker environment with a &lt;code&gt;debian:stretch&lt;/code&gt; docker image. As GitHub Actions runs on ubuntu runner, we decided to reproduce the build locally in this environment. This enabled us to go with our first iteration. &lt;/p&gt;

&lt;h4&gt;
  
  
  Iteration 1 (using docker)
&lt;/h4&gt;

&lt;p&gt;As GitHub Actions allows us to use &lt;code&gt;macos-latest&lt;/code&gt; runners, install Docker automatically as it does not exist as for example, for the &lt;code&gt;ubuntu-latest&lt;/code&gt; or &lt;code&gt;windows-latest&lt;/code&gt; runners. Therefore we created PoC repository &lt;a href="https://github.com/mavogel/docker-gh-action-test" rel="noopener noreferrer"&gt;docker-gh-action-test&lt;/a&gt; to verify this and provide a stable installation for &lt;code&gt;macos&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;You can see all the changes in this pull request:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/kreuzwerker/awsu/pull/57" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        feat(ci): add linux build
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#57&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/mavogel" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F8409778%3Fv%3D4" alt="mavogel avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/mavogel" rel="noopener noreferrer"&gt;mavogel&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/kreuzwerker/awsu/pull/57" rel="noopener noreferrer"&gt;&lt;time&gt;Nov 25, 2021&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      
&lt;h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;What does this do / why do we need it?&lt;/h2&gt;
&lt;p&gt;Add the automatic release for the &lt;code&gt;linux_amd64&lt;/code&gt; binary&lt;/p&gt;
&lt;h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;How this PR fixes the problem?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;builds the binary in the CI&lt;/li&gt;
&lt;li&gt;adds them as &lt;code&gt;prebuilt&lt;/code&gt; to goreleaser&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;What should your reviewer look out for in this PR?&lt;/h2&gt;
&lt;p&gt;{Please write here}&lt;/p&gt;
&lt;h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Check lists&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[x] Test passed&lt;/li&gt;
&lt;li&gt;[x] Coding style (indentation, etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Which issue(s) does this PR fix?&lt;/h2&gt;
&lt;p&gt;fixes #56&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kreuzwerker/awsu/pull/57" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;We were happy as it worked as expected. However, our build time was with &lt;code&gt;11m9s&lt;/code&gt; very long. So we explored other options are ended with trying the &lt;a href="https://docs.github.com/en/actions/advanced-guides/storing-workflow-data-as-artifacts" rel="noopener noreferrer"&gt;artifacts&lt;/a&gt; feature, which we will talk about &lt;br&gt;
in the second iteration coming now.&lt;/p&gt;
&lt;h4&gt;
  
  
  Iteration 2 (using matrix builds and artifacts)
&lt;/h4&gt;

&lt;p&gt;We started implementing the solution using 2 stages&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;a build stage with a matrix on &lt;code&gt;ubuntu&lt;/code&gt; and &lt;code&gt;macos&lt;/code&gt;, where we install the needed dependencies, pre-build the binary and then upload it to the artifacts store.&lt;/li&gt;
&lt;li&gt;a release stage where we download the artifacts and release them with the prebuilt feature of &lt;a href="https://goreleaser.com/pro/" rel="noopener noreferrer"&gt;goreleaser-pro&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can see all the changes in this pull request:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/kreuzwerker/awsu/pull/58" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        chore: use gh action cache
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#58&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/mavogel" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F8409778%3Fv%3D4" alt="mavogel avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/mavogel" rel="noopener noreferrer"&gt;mavogel&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/kreuzwerker/awsu/pull/58" rel="noopener noreferrer"&gt;&lt;time&gt;Nov 26, 2021&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;improvement of #57&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kreuzwerker/awsu/pull/58" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
 and a fix an upcoming pull request &lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/kreuzwerker/awsu/pull/60" rel="noopener noreferrer"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg"&gt;
      &lt;span class="issue-title"&gt;
        fix(ci): path in download artifact
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#60&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/mavogel" rel="noopener noreferrer"&gt;
        &lt;img class="github-liquid-tag-img" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F8409778%3Fv%3D4" alt="mavogel avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/mavogel" rel="noopener noreferrer"&gt;mavogel&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/kreuzwerker/awsu/pull/60" rel="noopener noreferrer"&gt;&lt;time&gt;Nov 30, 2021&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      
&lt;h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;What does this do / why do we need it?&lt;/h2&gt;
&lt;p&gt;Fixing #59&lt;/p&gt;
&lt;h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;How this PR fixes the problem?&lt;/h2&gt;
&lt;p&gt;Using the correct actions download path. See &lt;a href="https://stackoverflow.com/questions/57498605/github-actions-share-workspace-artifacts-between-jobs" rel="nofollow noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
&lt;span class="octicon octicon-link"&gt;&lt;/span&gt;Check lists&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[x] Test passed&lt;/li&gt;
&lt;li&gt;[x] Coding style (indentation, etc)&lt;/li&gt;
&lt;/ul&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kreuzwerker/awsu/pull/60" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;This reduced the pipeline runtime from &lt;code&gt;11m9s&lt;/code&gt; down to &lt;code&gt;1m15s&lt;/code&gt; 🎉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffjse8henk6ub4an7t1ng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffjse8henk6ub4an7t1ng.png" alt="Release pipeline runtime"&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;As we described in the previous approach and the logic, here are the concrete implementations of the Actions&lt;/p&gt;

&lt;h4&gt;
  
  
  Iteration 1 (using docker)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;goreleaser&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;binaries&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;macos-11&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Checkout&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;fetch-depth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Set up Go&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-go@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;go-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.17&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Updating and upgrading brew&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"&lt;/span&gt;
          &lt;span class="s"&gt;brew --version&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install and start docker&lt;/span&gt;
        &lt;span class="c1"&gt;# https://github.com/docker/for-mac/issues/2359#issuecomment-943131345&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;brew install --cask docker&lt;/span&gt;
          &lt;span class="s"&gt;sudo /Applications/Docker.app/Contents/MacOS/Docker --unattended --install-privileged-components&lt;/span&gt;
          &lt;span class="s"&gt;open -a /Applications/Docker.app --args --unattended --accept-license&lt;/span&gt;
          &lt;span class="s"&gt;echo "Waiting for docker to be up"&lt;/span&gt;
          &lt;span class="s"&gt;while ! /Applications/Docker.app/Contents/Resources/bin/docker info &amp;amp;&amp;gt;/dev/null; do echo -n "."; sleep 1; done&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Build linux binary&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;make build/awsu-linux-amd64&lt;/span&gt;
          &lt;span class="s"&gt;# as it is the format goreleaser expects&lt;/span&gt;
          &lt;span class="s"&gt;cp build/awsu-linux-amd64 build/awsu_linux_amd64&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run GoReleaser&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;goreleaser/goreleaser-action@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;distribution&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;goreleaser-pro&lt;/span&gt;
          &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;latest&lt;/span&gt;
          &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;release --rm-dist&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;GORELEASER_KEY&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GORELEASER_KEY }}&lt;/span&gt;
          &lt;span class="na"&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
          &lt;span class="na"&gt;GORELEASER_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GORELEASER_TOKEN }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Iteration 2 (using matrix builds and artifacts)
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;goreleaser&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;artifact-build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ matrix.os }}&lt;/span&gt;
    &lt;span class="na"&gt;strategy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;fail-fast&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
      &lt;span class="na"&gt;matrix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;os&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ubuntu-latest&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;macos-latest&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Checkout&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;fetch-depth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Set up Go&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-go@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;go-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.17&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Setup dependencies&lt;/span&gt;
        &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;matrix.os == 'ubuntu-latest'&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;sudo apt-get update -q&lt;/span&gt;
          &lt;span class="s"&gt;sudo apt-get install -qqy build-essential software-properties-common pkg-config wget libpcsclite-dev&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Build darwin&lt;/span&gt;
        &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;matrix.os == 'macos-latest'&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;make build/awsu-darwin-amd64&lt;/span&gt;
          &lt;span class="s"&gt;mv build/awsu-darwin-amd64 build/awsu-macos-latest-amd64&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Build linux&lt;/span&gt;
        &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;matrix.os == 'ubuntu-latest'&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;make build/awsu-linux-amd64&lt;/span&gt;
          &lt;span class="s"&gt;mv build/awsu-linux-amd64 build/awsu-ubuntu-latest-amd64&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;awsu-${{ matrix.os }}-amd64&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;build/awsu-${{ matrix.os }}-amd64&lt;/span&gt;

  &lt;span class="na"&gt;release-test&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&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-latest&lt;/span&gt;
    &lt;span class="na"&gt;needs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;artifact-build&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Checkout&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;fetch-depth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Download macos&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/download-artifact@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;awsu-macos-latest-amd64&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;build&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Download linux&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/download-artifact@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;awsu-ubuntu-latest-amd64&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;build&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Correct goreleaser prebuilt path&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;# as it is the format goreleaser expects. See .goreleaser.yml -&amp;gt; prebuilt -&amp;gt; path&lt;/span&gt;
          &lt;span class="s"&gt;mv build/awsu-ubuntu-latest-amd64 build/awsu_linux_amd64&lt;/span&gt;
          &lt;span class="s"&gt;mv build/awsu-macos-latest-amd64 build/awsu_darwin_amd64&lt;/span&gt;
          &lt;span class="s"&gt;ls -lash build&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run GoReleaser&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;goreleaser/goreleaser-action@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;distribution&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;goreleaser-pro&lt;/span&gt;
          &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;latest&lt;/span&gt;
          &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;release --rm-dist&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;GORELEASER_KEY&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GORELEASER_KEY }}&lt;/span&gt;
          &lt;span class="na"&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
          &lt;span class="na"&gt;GORELEASER_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GORELEASER_TOKEN }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;We hope this will help you folks our there 🎉 Happy to hear more improvements and suggestions or any questions to help clarify the internal logic.&lt;/p&gt;
&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The PoC repository for running &lt;code&gt;docker&lt;/code&gt; in Github Actions: &lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mavogel" rel="noopener noreferrer"&gt;
        mavogel
      &lt;/a&gt; / &lt;a href="https://github.com/mavogel/docker-gh-action-test" rel="noopener noreferrer"&gt;
        docker-gh-action-test
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Running docker in GitHub Actions
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Docker GH action test&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;A small test/POC for the &lt;code&gt;docker&lt;/code&gt; daemon in GitHub actions.&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://github.com/mavogel/docker-gh-action-test.github/workflows/test.yml" rel="noopener noreferrer"&gt;test.yaml&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight highlight-source-yaml notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-ent"&gt;jobs&lt;/span&gt;:
  &lt;span class="pl-ent"&gt;info&lt;/span&gt;:
    &lt;span class="pl-ent"&gt;runs-on&lt;/span&gt;: &lt;span class="pl-s"&gt;${{ matrix.os }}&lt;/span&gt;
    &lt;span class="pl-ent"&gt;strategy&lt;/span&gt;:
      &lt;span class="pl-ent"&gt;fail-fast&lt;/span&gt;: &lt;span class="pl-c1"&gt;false&lt;/span&gt;
      &lt;span class="pl-ent"&gt;matrix&lt;/span&gt;:
        &lt;span class="pl-ent"&gt;os&lt;/span&gt;: &lt;span class="pl-s"&gt;[ubuntu-latest, macos-latest, windows-latest]&lt;/span&gt;
    &lt;span class="pl-ent"&gt;steps&lt;/span&gt;:
      - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Checkout&lt;/span&gt;
        &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;actions/checkout@v2&lt;/span&gt;
        &lt;span class="pl-ent"&gt;with&lt;/span&gt;:
          &lt;span class="pl-ent"&gt;fetch-depth&lt;/span&gt;: &lt;span class="pl-c1"&gt;0&lt;/span&gt;
      - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Updating and upgrading brew&lt;/span&gt;
        &lt;span class="pl-ent"&gt;if&lt;/span&gt;: &lt;span class="pl-s"&gt;matrix.os == 'macos-latest'&lt;/span&gt;
        &lt;span class="pl-ent"&gt;run&lt;/span&gt;: &lt;span class="pl-s"&gt;|&lt;/span&gt;
&lt;span class="pl-s"&gt;          bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"&lt;/span&gt;
&lt;span class="pl-s"&gt;          brew --version&lt;/span&gt;
      - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Install and start docker&lt;/span&gt;
        &lt;span class="pl-ent"&gt;if&lt;/span&gt;: &lt;span class="pl-s"&gt;matrix.os == 'macos-latest'&lt;/span&gt;
        &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; https://github.com/docker/roadmap/issues/80#issuecomment-1083441568&lt;/span&gt;
        &lt;span class="pl-ent"&gt;run&lt;/span&gt;: &lt;span class="pl-s"&gt;|&lt;/span&gt;
&lt;span class="pl-s"&gt;          # for the docker cli&lt;/span&gt;
&lt;span class="pl-s"&gt;          brew install docker&lt;/span&gt;
&lt;span class="pl-s"&gt;          # installed by default&lt;/span&gt;
&lt;span class="pl-s"&gt;          colima start&lt;/span&gt;
      - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Test docker&lt;/span&gt;
        &lt;span class="pl-ent"&gt;run&lt;/span&gt;: &lt;span class="pl-s"&gt;|&lt;/span&gt;
&lt;span class="pl-s"&gt;          docker version&lt;/span&gt;
&lt;span class="pl-s"&gt;          docker info&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why&lt;/h2&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;I wanted to run &lt;code&gt;docker&lt;/code&gt; in &lt;code&gt;windows&lt;/code&gt;, &lt;code&gt;macos&lt;/code&gt; and &lt;code&gt;linux&lt;/code&gt; in GitHub actions to have a minimal POC.&lt;/li&gt;
&lt;li&gt;2021-10-28: Currently it's working for &lt;code&gt;docker&lt;/code&gt; in version &lt;code&gt;v20.10.8&lt;/code&gt; for &lt;code&gt;macos&lt;/code&gt; with the code…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mavogel/docker-gh-action-test" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Our GitHub organization &lt;a href="https://github.com/kreuzwerker" rel="noopener noreferrer"&gt;kreuzwerker&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The actions used &lt;a href="https://github.com/actions/upload-artifact" rel="noopener noreferrer"&gt;upload-artifact&lt;/a&gt;, &lt;a href="https://github.com/actions/download-artifact" rel="noopener noreferrer"&gt;download-artifact&lt;/a&gt;,  &lt;a href="https://dev.togoreleaser/goreleaser-action@v2"&gt;goreleaser-action&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;This post is a successor of our internal &lt;a href="https://kreuzwerker.de/en/post/hacktoberfest-at-kreuzwerker" rel="noopener noreferrer"&gt;hacktoberfest&lt;/a&gt; at &lt;a href="https://kreuzwerker.de" rel="noopener noreferrer"&gt;kreuzwerker&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>actionshackathon21</category>
      <category>github</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
