Home

Awesome

Deploy to cocoapods

Using this GitHub Action, you can deploy automatically your pod library to Cocoapods.org

Requirements

Usage

The workflow, usually declared in .github/workflows/deploy_to_cocoapods.yml, looks like:

name: deploy_to_cocoapods

on:
  push:
    tags:
      - '*'

jobs:
  build:

    runs-on: macOS-latest

    steps:
    - uses: actions/checkout@v1
    
    - name: Install Cocoapods
      run: gem install cocoapods
    
    # shortcut version
    - uses: michaelhenry/deploy-to-cocoapods-github-action@1.0.10
      env:
        COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}

OR

name: deploy_to_cocoapods

on:
  push:
    tags:
      - '*'

jobs:
  build:

    runs-on: macOS-latest

    steps:
    - uses: actions/checkout@v1
    
    - name: Install Cocoapods
      run: gem install cocoapods
      
    - name: Deploy to Cocoapods
      run: |
        set -eo pipefail
        pod lib lint --allow-warnings
        pod trunk push --allow-warnings
      env:
        COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}

Example

An actual example can be found on this Repository: Autobot.

Recommendations

I also do recommend to automatically sync your library versioning with your git tags or releases. for example this *.spec file, I provided an environment variable for LIB_VERSION to use as the actual version, else it will goes to fallback version which is 1.0

Pod::Spec.new do |s|
  s.name             = 'AutoBot'
  s.version          = ENV['LIB_VERSION'] || '1.0' #fallback to major version
  s.summary          = 'UITestCases generator and executor for iOS Application.'
...
end

on the github action, we have to update the step Deploy to Cocoapods from

...
    - name: Deploy to Cocoapods
      run: |
        set -eo pipefail
        pod lib lint --allow-warnings
        pod trunk push --allow-warnings
      env:
        COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}

to

...
    - name: Deploy to Cocoapods
      run: |
        set -eo pipefail
        export LIB_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`)
        pod lib lint --allow-warnings
        pod trunk push --allow-warnings
      env:
        COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}

and that's all.

Cheers!

If you found some problems or encountered some troubles, please don't hessitate to let me know. I'm happy to help you!

LICENSE

MIT