<?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: Deniss Kaibagarovs</title>
    <description>The latest articles on DEV Community by Deniss Kaibagarovs (@thetaier).</description>
    <link>https://dev.to/thetaier</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%2F524149%2F021cf4e9-d186-462e-aed9-fbe5ed45316f.jpg</url>
      <title>DEV Community: Deniss Kaibagarovs</title>
      <link>https://dev.to/thetaier</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thetaier"/>
    <language>en</language>
    <item>
      <title>How to add resources (xib, etc) to Static Library (iOS/Swift/Objc)</title>
      <dc:creator>Deniss Kaibagarovs</dc:creator>
      <pubDate>Tue, 15 Dec 2020 20:56:26 +0000</pubDate>
      <link>https://dev.to/thetaier/how-to-add-resources-xib-etc-to-static-library-ios-swift-objc-2i84</link>
      <guid>https://dev.to/thetaier/how-to-add-resources-xib-etc-to-static-library-ios-swift-objc-2i84</guid>
      <description>&lt;p&gt;If you need to ship your static library that uses resources (images, xibs, fonts, etc) then you need to bundle them additionally. This article will guide you through that process.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Select your &lt;strong&gt;Static Lib&lt;/strong&gt; project and click create a &lt;strong&gt;New Target&lt;/strong&gt;&lt;br&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%2Fi%2F2wi6unlp4gshvygn50mq.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%2Fi%2F2wi6unlp4gshvygn50mq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to &lt;strong&gt;MacOS&lt;/strong&gt; tab and choose &lt;strong&gt;Bundle&lt;/strong&gt;, then finish the creation&lt;br&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%2Fi%2Fllytl3o258ne18psxhhz.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%2Fi%2Fllytl3o258ne18psxhhz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the target is created, select it from the left-hand side menu, navigate to &lt;strong&gt;Build Settings&lt;/strong&gt;, search for &lt;strong&gt;Supported Platforms&lt;/strong&gt; and choose &lt;strong&gt;iOS&lt;/strong&gt;&lt;br&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%2Fi%2Fhvgaa6o6dr74pchn92g8.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%2Fi%2Fhvgaa6o6dr74pchn92g8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the same place, search for &lt;strong&gt;Base SDK&lt;/strong&gt; and choose &lt;strong&gt;iOS&lt;/strong&gt;&lt;br&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%2Fi%2Fvotp3vul1eectm4cuizb.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%2Fi%2Fvotp3vul1eectm4cuizb.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then navigate to your &lt;strong&gt;Static Library&lt;/strong&gt; target and inside &lt;strong&gt;Build Phases&lt;/strong&gt; tab add &lt;strong&gt;Static Lib Resources&lt;/strong&gt; bundle that you just created to &lt;strong&gt;Dependencies&lt;/strong&gt;&lt;br&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%2Fi%2Fl6u6k0nsfof0b01pknbx.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%2Fi%2Fl6u6k0nsfof0b01pknbx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After that, navigate to your &lt;strong&gt;App Target&lt;/strong&gt; that includes your &lt;strong&gt;Static Lib&lt;/strong&gt;. Navigate to &lt;strong&gt;Build Phases&lt;/strong&gt; of your app and add your &lt;strong&gt;Static Lib Resources&lt;/strong&gt; bundle to &lt;strong&gt;Copy Bundle Resources&lt;/strong&gt;&lt;br&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%2Fi%2Fulj7uatoo9vwz4xdbbl9.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%2Fi%2Fulj7uatoo9vwz4xdbbl9.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now you could safely add any .xib, assets, or any other file to your &lt;strong&gt;Static Lib Resources&lt;/strong&gt; bundle that you want to have access to in your &lt;strong&gt;Static Lib&lt;/strong&gt;&lt;br&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%2Fi%2Fr7f2zna5sz7ss8yyfogq.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%2Fi%2Fr7f2zna5sz7ss8yyfogq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&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%2Fi%2Fvtzorv9vykafr4zkc1ew.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%2Fi%2Fvtzorv9vykafr4zkc1ew.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Well done! Setup is completed, now we need to correctly ask for resources in code.&lt;/p&gt;

&lt;p&gt;For that, please, refer to this code snippet that shows how to load a xib and an image from the resource bundle inside the static library.&lt;/p&gt;

&lt;p&gt;Note: replace &lt;strong&gt;“StaticLibResources”&lt;/strong&gt; with the name of your &lt;strong&gt;Static Lib Resources&lt;/strong&gt; bundle&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

import UIKit

public class StaticLibViewController: UIViewController {

    @IBOutlet weak var iboImageView: UIImageView!

    public init() {
        let nibName = String(describing: type(of: self))
        super.init(nibName: nibName, bundle: Bundle.staticBundle)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    public override func viewDidLoad() {
        super.viewDidLoad()
        self.iboImageView.image = UIImage(named: "image", in: Bundle.staticBundle, with: nil)
    }
}

extension Bundle {
    static func getBundle(bundleName: String) -&amp;gt; Bundle? {
        var resourceBundle: Bundle?
        for includedBundles in Bundle.allBundles {
            if let resourceBundlePath = includedBundles.path(forResource: bundleName, ofType: "bundle") {
                resourceBundle = Bundle(path: resourceBundlePath)
                break
            }
        }
        return resourceBundle
    }

    static let staticBundle = Bundle.getBundle(bundleName: "StaticLibResources")
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The whole project is available on GitHub: &lt;a href="https://github.com/taier/Static-Lib-With-Resources-Example" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you encounter any error, feel free to contact me on Twitter and I’ll try to help you!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/TheTaier" rel="noopener noreferrer"&gt;https://twitter.com/TheTaier&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, feel free to follow if you want to stay up to date with new articles like this!&lt;/p&gt;

</description>
      <category>swift</category>
      <category>ios</category>
      <category>static</category>
      <category>library</category>
    </item>
    <item>
      <title>Personal iOS/Android project development flow setup</title>
      <dc:creator>Deniss Kaibagarovs</dc:creator>
      <pubDate>Wed, 02 Dec 2020 08:52:51 +0000</pubDate>
      <link>https://dev.to/thetaier/personal-ios-android-project-development-flow-setup-145h</link>
      <guid>https://dev.to/thetaier/personal-ios-android-project-development-flow-setup-145h</guid>
      <description>&lt;p&gt;One of the main reasons why so many brilliant hobby projects fall apart and never see the light is the lack of a robust development flow.&lt;/p&gt;

&lt;h4&gt;
  
  
  Let’s take an example:
&lt;/h4&gt;

&lt;p&gt;You came up with an interesting idea that seized your attention for a brief amount of time. During that timeframe, you laid down a prototype and made it work by cutting corners. You receive a shot of satisfaction, and then life gets in the way. You forget about that project for a while, and then, when you come back to it once again, you are present with the burden of uncertain plans, ambiguous code, and lack of willpower to sort it all. Plus, there is a new shiny idea that attracts your attention.&lt;br&gt;
What helped me to break free from that vicious circle is a template that I now apply to any new hobby project, and that template drastically extends the longevity of the projects. If a hobby project ceases, then it’s because of some deeper intractable problems.&lt;/p&gt;

&lt;p&gt;The best part of that template is that it’s easy to fire it up (can be done in under 10 mins for a fresh project) and it’s completely free and doesn’t require any specific bits of knowledge.&lt;/p&gt;

&lt;h4&gt;
  
  
  The template consists of:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Tasks manager for release planner&lt;/li&gt;
&lt;li&gt;Source version control&lt;/li&gt;
&lt;li&gt;Automated CI for tests and deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tasks manager is dead simple, it’s a GitHub projects board&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tuZYe4w4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kd2se4q5msdakllcurhd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tuZYe4w4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kd2se4q5msdakllcurhd.png" alt="github-project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Any new idea at first goes to &lt;strong&gt;Backlog&lt;/strong&gt; (most leftish column)&lt;/li&gt;
&lt;li&gt;Then I decide what would go into what version by moving items from &lt;strong&gt;Backlog&lt;/strong&gt; to a &lt;strong&gt;Version&lt;/strong&gt; column&lt;/li&gt;
&lt;li&gt;When I’m ready to work on a task, I move it from &lt;strong&gt;Version&lt;/strong&gt; column to &lt;strong&gt;In Progress&lt;/strong&gt; Column&lt;/li&gt;
&lt;li&gt;When the &lt;strong&gt;Version&lt;/strong&gt; column becomes empty -&amp;gt; I release the version
Note that there’s no step that would move from &lt;strong&gt;In Progress&lt;/strong&gt; to &lt;strong&gt;Done&lt;/strong&gt;, that’s because it would be done automatically when you’ll merge your code!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once I decided on the task, I move it to &lt;strong&gt;In progress&lt;/strong&gt; column, and from the dropdown select &lt;strong&gt;Convert to issue&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bZQCS6ft--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/l4gyv1bvx9acs14ell6s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bZQCS6ft--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/l4gyv1bvx9acs14ell6s.png" alt="github-task-in-progress"&gt;&lt;/a&gt;&lt;br&gt;
That would automatically create a &lt;strong&gt;branch&lt;/strong&gt; from the master in which I can jump into to start working.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---46-ogDH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e1hr364d4zxcsimzeygo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---46-ogDH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e1hr364d4zxcsimzeygo.png" alt="github-branch-created"&gt;&lt;/a&gt;&lt;br&gt;
Once I commit changes into that branch, a button to create a Pull Request (PR) would appear on the project’s GitHub page.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hRxnLMkb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/or9k1cfubemai7kcy1oh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hRxnLMkb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/or9k1cfubemai7kcy1oh.png" alt="github-push-to-branch"&gt;&lt;/a&gt;&lt;br&gt;
But I won’t be able to merge the PR until all checks pass.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s104-zOB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xepqfrdceuzi29z1h9x9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s104-zOB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xepqfrdceuzi29z1h9x9.png" alt="github-pull-check"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sZ9Iay8e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jkodf9pvis56tr7dj7e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sZ9Iay8e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jkodf9pvis56tr7dj7e6.png" alt="github-check-pass"&gt;&lt;/a&gt;&lt;br&gt;
What checks you may ask? Well, that depends on your preferences. For me, I always include at least a basic set of tests to a code that I’m writing. &lt;strong&gt;Before the PR could be merged, all tests are required to pass.&lt;/strong&gt; Your mileage may vary and you could only include a check that a project could be built, that at least would give you something that you could build on top of when you are ready to do so.    &lt;/p&gt;

&lt;p&gt;Also, you could set up &lt;a href="https://app.bitrise.io/referral/4f92a98c01f9e6c7"&gt;Bitrise&lt;/a&gt; in such a way that on every new PR that gets merged, you would receive an invite to install a new build right on your device. &lt;a href="https://app.bitrise.io/referral/4f92a98c01f9e6c7"&gt;Bitrise&lt;/a&gt; allows you to choose between a direct download link, a test flight update, or a custom solution. It’s extremely handy when you want to try out a new thing that you added in the latest PR.&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l9SfREmG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/oqlpfrcx01ofnf5voplv.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l9SfREmG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/oqlpfrcx01ofnf5voplv.jpeg" alt="IMG_45A208CBD0BF-1"&gt;&lt;/a&gt;&lt;br&gt;
After changes are merged, a prompt to delete the branch would appear. I’m always pressing that button since changes are already merged to the main codebase and most likely I would never come back to that branch again.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kZKXNyF4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nc6f5mzd1f6qwxwe00ul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kZKXNyF4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nc6f5mzd1f6qwxwe00ul.png" alt="github-remove-branch"&gt;&lt;/a&gt;&lt;br&gt;
By the way, the &lt;strong&gt;task&lt;/strong&gt; will automatically jump to &lt;strong&gt;Done&lt;/strong&gt; once I merge the code and close the dedicated issue.&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zkxGDuky--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/twb02lggd47fdlv9yh1l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zkxGDuky--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/twb02lggd47fdlv9yh1l.png" alt="github-task-as-done"&gt;&lt;/a&gt;&lt;br&gt;
Another remarkable feature of &lt;a href="https://app.bitrise.io/referral/4f92a98c01f9e6c7"&gt;Bitrise&lt;/a&gt;  is that it could watch for &lt;strong&gt;Tags&lt;/strong&gt; on your GitHub repo. That would come in handy when you’ll finish all the tasks in your &lt;strong&gt;Release&lt;/strong&gt; column and it’s time for a new release.&lt;/p&gt;

&lt;p&gt;So, when an app is ready for a release, I just take a commit that I would like to make a release from and tag it with a release name.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fuz1EBb0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dhorld1y149s4wolreke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fuz1EBb0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dhorld1y149s4wolreke.png" alt="tag-release"&gt;&lt;/a&gt;&lt;br&gt;
That triggers a workflow on &lt;a href="https://app.bitrise.io/referral/4f92a98c01f9e6c7"&gt;Bitrise&lt;/a&gt; that would compile code and push it to the store. In the meantime, I could just make a new cup of tea while everything is taking care of.&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iQccL8nn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sg01jyzthts0mazjyah5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iQccL8nn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sg01jyzthts0mazjyah5.png" alt="bitrise-deploy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s quite hard to grasp all the tiny details of this setup in the blog post, so if that post gets a meaningful amount of reactions I’ll make a video version that would guide you through the whole setup from a blank project on GitHub to a complete release workflow on &lt;a href="https://app.bitrise.io/referral/4f92a98c01f9e6c7"&gt;Bitrise&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Feel free to connect with me on &lt;a href="https://twitter.com/TheTaier"&gt;Twitter&lt;/a&gt; to be among the first to know when a new video or tutorial becomes available!&lt;/p&gt;

&lt;p&gt;Links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://app.bitrise.io/referral/4f92a98c01f9e6c7"&gt;Bitrise CI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/marketplace/create-issue-branch"&gt;Github Bot that creates branches for issues&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ios</category>
      <category>android</category>
      <category>mobile</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
