Deploy to Cocoapod Action
ActionsTags
(2)Using this GitHub Action, you can deploy automatically your pod library to Cocoapods.org
-
Must have register to cocoapod trunk. Please refer to Getting setup with Trunk on how to register.
-
Get your
trunk token
by usingpod trunk me --verbose
from your command line.Example response:
opening connection to trunk.cocoapods.org:443... opened starting SSL for trunk.cocoapods.org:443... SSL established, protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256 <- "GET /api/v1/sessions HTTP/1.1\r\nContent-Type: application/json; charset=utf-8\r\nAccept: application/json; charset=utf-8\r\nUser-Agent: CocoaPods/1.7.4\r\nAuthorization: Token XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nHost: trunk.cocoapods.org\r\n\r\n" -> "HTTP/1.1 200 OK\r\n" -> "Date: Sun, 22 Sep 2019 05:11:46 GMT\r\n" -> "Connection: keep-alive\r\n" -> "Strict-Transport-Security: max-age=31536000\r\n" -> "Content-Type: application/json\r\n" -> "Content-Length: 1491\r\n" -> "X-Content-Type-Options: nosniff\r\n" -> "Server: thin 1.6.2 codename Doc Brown\r\n" -> "Via: 1.1 vegur\r\n" -> "\r\n"
Please get only the
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
as yourtrunk token
. -
register the your
trunk token
as Secrets and named it asCOCOAPODS_TRUNK_TOKEN
.
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/[email protected]
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 }}
An actual example can be found on this Repository: Autobot.
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.
If you found some problems or encountered some troubles, please don't hessitate to let me know. I'm happy to help you!
MIT
Deploy to Cocoapod Action is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.