Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1/x] Clean up automation pipeline #256

Merged

Conversation

andrewchang-bird
Copy link
Contributor

@andrewchang-bird andrewchang-bird commented Jan 6, 2022

Stack:
πŸ“š #259 [4/x] Bump versions to 0.19.0
πŸ“š #258 [3/x] Codemod Xcode-generated file header comments
πŸ“š #257 [2/x] Migrate to DocC for API reference docs
πŸ“š #256 ← [1/x] Clean up automation pipeline

Overview

Our current automation pipeline is heavily dependent on a single Makefile, which has grown quite unsightly over the past few years. This fully removes the Makefile and refactors it into a separate automation Swift executable. The new automation pipeline covers the same functionality as before, including:

  • Building signed framework and generator artifacts
  • Bundling the generator executable into a ZIP archive with the appropriate licensing and dylib dependencies
  • Running the end-to-end and unit test cases
  • Loading, unloading, and saving Xcode schemes to support Carthage

In addition, the GitHub workflows are now simplified into just two: CI and Release. This makes it easier to reason about the job triggers and reduces duplicate YAML boilerplate.

Test Plan

  • CI workflows pass
  • Running the automation binary locally:
% Sources/MockingbirdAutomationCli/buildAndRun.sh --help
[32/32] Build complete!
OVERVIEW: Task runner for Mockingbird.

USAGE: automation <subcommand>

OPTIONS:
  -h, --help              Show help information.

SUBCOMMANDS:
  build                   Build a project artifact.
  test                    Run a test suite.
  configure               Configure the project environment.

  See 'automation help <subcommand>' for detailed help.
% Sources/MockingbirdAutomationCli/buildAndRun.sh build --help 
[0/0] Build complete!
OVERVIEW: Build a project artifact.

USAGE: automation build [--archive <archive>] <subcommand>

OPTIONS:
  --archive <archive>     File path to store archived built products.
  -h, --help              Show help information.

SUBCOMMANDS:
  cli                     Build the command line interface.
  framework               Build a fat XCFramework bundle.

  See 'automation help build <subcommand>' for detailed help.
% Sources/MockingbirdAutomationCli/buildAndRun.sh test --help 
[0/0] Build complete!
OVERVIEW: Run a test suite.

USAGE: automation test <subcommand>

OPTIONS:
  -h, --help              Show help information.

SUBCOMMANDS:
  e2e                     Run all end-to-end tests.
  example                 Run an end-to-end example project test.

  See 'automation help test <subcommand>' for detailed help.
% Sources/MockingbirdAutomationCli/buildAndRun.sh configure --help
[0/0] Build complete!
OVERVIEW: Configure the project environment.

USAGE: automation configure <subcommand>

OPTIONS:
  -h, --help              Show help information.

SUBCOMMANDS:
  load                    Apply shared schemes to the Xcode project.
  unload                  Remove shared schemes.
  save                    Save shared Xcode schemes.

  See 'automation help configure <subcommand>' for detailed help.

@andrewchang-bird andrewchang-bird added this to the Release 0.19 milestone Jan 6, 2022
@andrewchang-bird andrewchang-bird changed the title [1/x] Cleanup automation pipeline [1/x] Clean up automation pipeline Jan 6, 2022
@andrewchang-bird andrewchang-bird merged commit f498ab3 into master Jan 7, 2022
@andrewchang-bird andrewchang-bird deleted the dev/andrewchang-bird/cleanup-release-automation branch January 7, 2022 23:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants