All Projects → shibapm → Rocket

shibapm / Rocket

Licence: MIT license
Define your release steps 🚀

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Rocket

yaml-vim
YAML syntax/indent plugin for Vim
Stars: ✭ 37 (-62.63%)
Mutual labels:  yaml
libcyaml
C library for reading and writing YAML.
Stars: ✭ 165 (+66.67%)
Mutual labels:  yaml
webparsy
Node.JS library and cli for scraping websites using Puppeteer (or not) and YAML definitions
Stars: ✭ 40 (-59.6%)
Mutual labels:  yaml
chorus
📝 The first editor for Spigot configurations.
Stars: ✭ 133 (+34.34%)
Mutual labels:  yaml
yaml.sh
Read YAML files with only Bash
Stars: ✭ 30 (-69.7%)
Mutual labels:  yaml
trace-cocoa-sdk
Catch bugs before they reach production — get detailed crash reports and monitor how your app is performing across the entire install base.
Stars: ✭ 15 (-84.85%)
Mutual labels:  spm
git
🔀 semantic-release plugin to commit release assets to the project's git repository
Stars: ✭ 235 (+137.37%)
Mutual labels:  release
Unreal-Binary-Builder
An application designed to create installed Unreal Engine builds (aka Rocket builds) from Unreal Engine GitHub source.
Stars: ✭ 554 (+459.6%)
Mutual labels:  rocket
wildq
Command-line TOML/JSON/INI/YAML/XML/HCL processor using jq c bindings
Stars: ✭ 22 (-77.78%)
Mutual labels:  yaml
yaml-overlay-tool
Use JSONPath to query & patch YAML files with ease.
Stars: ✭ 24 (-75.76%)
Mutual labels:  yaml
CV
📜 My Data Driven CV written with R, YAML, & LaTeX
Stars: ✭ 54 (-45.45%)
Mutual labels:  yaml
swift-declarative-configuration
Declarative configuration for your objects
Stars: ✭ 46 (-53.54%)
Mutual labels:  spm
reinforz
An online quiz app made using react, typescript and material-ui
Stars: ✭ 58 (-41.41%)
Mutual labels:  yaml
SwiftZip
Swift wrapper for libzip — library for reading, creating, and modifying zip archives.
Stars: ✭ 44 (-55.56%)
Mutual labels:  spm
yamlpath
Command-line get/set/merge/validate/scan/convert/diff processors for YAML/JSON/Compatible data using powerful, intuitive, command-line friendly syntax.
Stars: ✭ 78 (-21.21%)
Mutual labels:  yaml
scikit-ci
Simpler and centralized CI configuration for Python extensions.
Stars: ✭ 15 (-84.85%)
Mutual labels:  yaml
Doramon
个人工具汇总:一致性哈希工具,Bitmap工具,布隆过滤器参数生成器,Yaml和properties互转工具,一键式生成整个前后端工具,单机高性能幂等工具,zookeeper客户端工具,分布式全局id生成器,时间转换工具,Http封装工具
Stars: ✭ 53 (-46.46%)
Mutual labels:  yaml
yaml-runtimes
YAML processor runtimes via docker
Stars: ✭ 28 (-71.72%)
Mutual labels:  yaml
powerflows-dmn
Power Flows DMN - Powerful decisions and rules engine
Stars: ✭ 46 (-53.54%)
Mutual labels:  yaml
TIFeedParser
RSS Parser written in Swift
Stars: ✭ 18 (-81.82%)
Mutual labels:  spm

Rocket 🚀

Swift CLI release tool for Git repos and Swift Packages

Install Rocket

You can install Rocket with SPM

  1. Add or amend a Package.swift
  2. Add this dependency .package(url: "https://github.com/shibapm/Rocket", from: "0.1.0")
  3. Then you can run swift run rocket 1.0.0 where 1.0.0 is the version that you want to release

Set up the release steps

With YAML

Create a file called .rocket.yml with your steps inside

---
steps: 
  - script: 
      content: ruby Scripts/update_changelog.rb
  - git_add:
      paths:
        - CHANGELOG.md
  - commit:
      message: "Releasing version $VERSION"
  - tag
  - push

With PackageConfig

With PackageConfig you can put the configuration at the end of your Package.swift

#if canImport(PackageConfig)
    import PackageConfig
    
    let config = PackageConfiguration([
        "rocket": ["steps":
            [
                ["script": ["content": "ruby Scripts/update_changelog.rb"]]
                ["git_add": ["paths": ["CHANGELOG.md"]]],
                ["commit": ["message": "Releasing version $VERSION"]],
                "tag",
                "push"
            ]
        ]
    ]).write()

Default steps

If there is no step definition Rocket will run the default steps:

  • hide_dev_dependencies
  • git_add
  • commit
  • tag
  • unhide_dev_dependencies
  • git_add
  • commit (message: "Unhide dev dependencies")
  • push (remote=origin branch=master)

Before/After steps

If you use the before and/or after keys

e.g.

---
before: 
  - script: 
      content: echo "Testing Release for $VERSION"
after:
  - script: 
      content: echo "released $VERSION"

Rocket will execute the default steps between the before and after steps

  • echo "Testing Release for $VERSION"

  • hide_dev_dependencies

  • git_add

  • commit

  • tag

  • unhide_dev_dependencies

  • git_add

  • commit (message: "Unhide dev dependencies")

  • push (remote=origin branch=master)

  • echo "released $VERSION"

Hide dev dependencies

When you release a package you want that who adds it as dependency downloads just the dependencies that are really needed to your package.

This is why Rocket introduces the concept of dev dependency, if you have in your package some scripts e.g. swiftformat you can add them as dev dependencies (by adding // dev after them) and they will be commented by the hide_dev_dependencies step and uncommented from the unhide_dev_dependencies.

That is also valid for the dependencies that are used just from test targets, but in that case you will have to add the test target as dev dependency too.

Some examples are:

Steps

You can find the full steps list here

Variable $VERSION

You can use the variable $VERSION inside the steps to refer to the version you are releasing

Next steps

  • Add a step to execute script files written in swift
  • Add a step to comment the dev dependencies on the Package.swift
  • Add a step to create Github releases
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].