GitHub Action workflows with self-hosting in private-repo

Updated
Jan 21, 2021 10:25 AM
Created
Jan 21, 2021 9:57 AM
Tags
Development
Keywords

Use GitHub Actions to run several workflows

  • Operations
    • AppStoreReview Submission by fastlane
      • no-requires macos
    • Upload dSYM which generated AppStoreConnect to Firebase crashlytics
      • no-requires macos
    • Change-log Generation
      • no-requires macos
    • Checking if the code can build
      • requires macos
    • Creating archives to upload AppStoreConnect
      • requires macos

      Jobs that can run on Linux, we use GitHub's hosting linux machine.

      Linux machine's cost is cheep, we can use the container provided by GitHub unless the job takes long time to processing.

      Use self-hosted runner for macOS machine.

    • macos container's cost is 10x higher rather than linux container.
    • Super expensive.
      • $0.08 / min
      • 0.08 * 10 (min build-time) * 30 (commit/day) = $24/day
      • * 30 days = $720
      • * 365 days = $8760
    • Probably it can use GitHub hosted macOS for only archiving by manually trigger.
    • Self-hosted runner can process only 1 job at the time.

      No supports concurrently processing at the same machine. It quite makes sense, because environments would be conflicted fast if it runs multiple jobs at the time.

      And Virtualizsation won't get the performance. Most efficient way to get concurrency, just using multiple mac machine. Super simple.

      image

      Self-hosted runner can be associated with repository or organization scopes.

      Self-host runner can be associated with a repository or organization level.

      The runner which associated with repository can not be used from another repository.

      The runner which associated with organization can process jobs which comes from repositories in the organization.

      Can start workflow by workflow_dispatch

      GitHub displays the panel to start the workflow if the workflow yml contains workflow_dispatch

      This is super helpful, we don't need to create something tools to trigger workflow anymore.

      image