Skip to content

Commit

Permalink
Add workflows for build, run tests, create version
Browse files Browse the repository at this point in the history
Update ReadMe and podspec
  • Loading branch information
levieggertcru committed Jun 28, 2024
1 parent 42af42b commit f0286a8
Show file tree
Hide file tree
Showing 6 changed files with 348 additions and 11 deletions.
13 changes: 13 additions & 0 deletions .github/codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
coverage:
status:
project:
default:
threshold: 1
patch:
default:
target: 0%
threshold: 1
codecov:
max_report_age: off
github_checks:
annotations: false
105 changes: 105 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: Build Library

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:

lint_ios_podspec:
name: Lint iOS Podspec
runs-on: macos-14
if: github.event_name == 'pull_request'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Lint Podspec
run: pod lib lint --private --verbose --sources=https://github.com/CruGlobal/cocoapods-specs.git,https://cdn.cocoapods.org/

current_version:
name: Store Current Version
runs-on: ubuntu-latest
if: (github.event_name == 'push' && github.ref == 'refs/heads/main')
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set Version Output
id: version
run: grep s\\.version\\s SocialAuthentication.podspec | sed 's/s.//' | sed "s/'//g" | sed 's/ //g' >> $GITHUB_OUTPUT

print_current_version:
name: Print Current Version
runs-on: ubuntu-latest
if: (github.event_name == 'push' && github.ref == 'refs/heads/main')
needs: [ current_version ]
steps:
- name: Print Current Version
env:
VERSION: ${{ needs.current_version.outputs.version }}
run: |
printf '%s\n' "$VERSION"
check_version:
name: Verify Version Is Not Released
runs-on: ubuntu-latest
if: (github.event_name == 'push' && github.ref == 'refs/heads/main')
needs: [ current_version ]
outputs:
tag: ${{ steps.tag_name.outputs.tag }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Generate Tag Name
id: tag_name
run: echo tag=$TAG_NAME >> $GITHUB_OUTPUT
env:
TAG_NAME: ${{ needs.current_version.outputs.version }}
- name: Check if version was already released
run: "! git ls-remote -t --exit-code origin $TAG_NAME"
env:
TAG_NAME: ${{ steps.tag_name.outputs.tag }}

tag_version:
name: Tag Version
runs-on: ubuntu-latest
if: (github.event_name == 'push' && github.ref == 'refs/heads/main')
needs: [ check_version, current_version ]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Create Tag
env:
TAG_NAME: ${{ needs.current_version.outputs.version }}
run: |
git tag $TAG_NAME
git push origin $TAG_NAME
push_podspec:
name: Push Podspec
runs-on: macos-14
if: (github.event_name == 'push' && github.ref == 'refs/heads/main')
needs: [ check_version, tag_version ]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
known_hosts: ${{ secrets.KNOWN_HOSTS }}
- name: Add CruGlobal CocoaPods Repo
run: pod repo add CruGlobal [email protected]:CruGlobal/cocoapods-specs.git
- name: Push podspec
run: pod repo push CruGlobal *.podspec --private --verbose --sources=https://github.com/CruGlobal/cocoapods-specs.git,https://cdn.cocoapods.org/
176 changes: 176 additions & 0 deletions .github/workflows/create-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
name: Create Version

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

workflow_dispatch:
inputs:
versionIncrementType:
description: 'Version Increment Type'
required: true
default: 'patch'
type: choice
options:
- patch
- minor
- major
- manual
manualVersionNumber:
description: 'Manually Enter Version Number (Requires manual Version Increment Type)'
required: false
type: string

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:

version_increment_is_bump:
name: Check If Version Increment Is Bump
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch'
outputs:
isBump: ${{ steps.check_if_increment_is_bump.outputs.value }}
steps:
- name: Check If Version Increment Is Bump
id: check_if_increment_is_bump
run: |
if [ ${{ inputs.versionIncrementType }} == 'patch' ]; then
echo "value=true" >> "$GITHUB_OUTPUT"
elif [ ${{ inputs.versionIncrementType }} == 'minor' ]; then
echo "value=true" >> "$GITHUB_OUTPUT"
elif [ ${{ inputs.versionIncrementType }} == 'major' ]; then
echo "value=true" >> "$GITHUB_OUTPUT"
else
echo echo "value=false" >> "$GITHUB_OUTPUT"
fi
current_version:
name: Store Current Version
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch'
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set Version Output
id: version
run: grep s\\.version\\s SocialAuthentication.podspec | sed 's/s.//' | sed "s/'//g" | sed 's/ //g' >> $GITHUB_OUTPUT

print_current_version:
name: Print Current Version
runs-on: ubuntu-latest
needs: [ current_version ]
steps:
- name: Print Current Version
env:
VERSION: ${{ needs.current_version.outputs.version }}
run: |
printf '%s\n' "$VERSION"
bump_version:
name: Store Bump Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
needs: [ current_version, version_increment_is_bump ]
steps:
- name: Bump Version
if: ${{ needs.version_increment_is_bump.outputs.isBump == 'true' }}
id: bump-semver
uses: actions-ecosystem/action-bump-semver@v1
with:
current_version: ${{ needs.current_version.outputs.version }}
level: ${{ inputs.versionIncrementType }}
- name: Store Bump Version
id: version
run: |
echo "version=${{ steps.bump-semver.outputs.new_version }}" >> $GITHUB_OUTPUT
print_bump_version:
name: Print Bump Version
runs-on: ubuntu-latest
needs: [ bump_version, version_increment_is_bump ]
if: ${{ needs.version_increment_is_bump.outputs.isBump == 'true' }}
steps:
- name: Print Bump Version
env:
VERSION: ${{ needs.bump_version.outputs.version }}
run: |
printf '%s\n' "$VERSION"
manual_version:
name: Store Manual Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
if: inputs.versionIncrementType == 'manual'
steps:
- name: Store Manual Version
id: version
run: |
echo "version=${{ inputs.manualVersionNumber }}" >> $GITHUB_OUTPUT
print_manual_version:
name: Print Manual Version
runs-on: ubuntu-latest
needs: [ manual_version ]
if: inputs.versionIncrementType == 'manual'
steps:
- name: Print Manual Version
env:
VERSION: ${{ needs.manual_version.outputs.version }}
run: |
printf '%s\n' "$VERSION"
new_version:
name: Store New Version
runs-on: ubuntu-latest
needs: [ version_increment_is_bump, bump_version ]
if: ${{ needs.version_increment_is_bump.outputs.isBump == 'true' || inputs.versionIncrementType == 'manual' }}
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- name: Store New Version
id: version
run: |
if [ ${{ needs.version_increment_is_bump.outputs.isBump }} == 'true' ]; then
echo "version=${{ needs.bump_version.outputs.version }}" >> $GITHUB_OUTPUT
elif [ ${{ inputs.versionIncrementType }} == 'manual' ]; then
echo "version=${{ inputs.manualVersionNumber }}" >> $GITHUB_OUTPUT
else
echo "No Version"
fi
print_new_version:
name: Print New Version
runs-on: ubuntu-latest
needs: [ new_version ]
steps:
- name: Print New Version
env:
VERSION: ${{ needs.new_version.outputs.version }}
run: |
printf '%s\n' "$VERSION"
create_version_branch_and_pull_request:
name: Create Version Branch and PR
runs-on: ubuntu-latest
needs: [ current_version, new_version ]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set Podspec Version to New Version
run: |
sed -i "s/s.version = '${{ needs.current_version.outputs.version }}'/s.version = '${{ needs.new_version.outputs.version }}'/g" SocialAuthentication.podspec
- name: Create Version Branch and PR
uses: peter-evans/create-pull-request@v6
with:
branch: "versions/${{ needs.new_version.outputs.version }}"
title: "Version ${{needs.new_version.outputs.version}}"
commit-message: "Increase version to ${{needs.new_version.outputs.version}}"
36 changes: 36 additions & 0 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Run Tests

on:
push:
branches: [ develop, main, feature/* ]
pull_request:
branches: [ develop, main, feature/* ]

permissions:
id-token: write
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
run_tests_and_code_coverage:
name: Run Tests and Code Coverage
runs-on: macos-14
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Select Xcode Version
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '15.4.0'
- name: Run Tests
run: xcodebuild test -scheme SocialAuthentication -sdk iphonesimulator17.5 -destination "OS=17.5,name=iPhone 15"
- name: Upload Xcode Code Coverage Report to CodeCov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
xcode: true
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,17 @@ Social Authentication
Shared iOS module for authenticating with social platforms GoogleSignIn, FacebookLogin, AppleSignIn.


- [Publishing New Versions](#publishing-new-versions)
- [Publishing New Versions With GitHub Actions](#publishing-new-versions-with-github-actions)
- [Publishing New Versions Manually](#publishing-new-versions-manually)

### Publishing New Versions With GitHub Actions

### Publishing New Versions
Publishing new versions with GitHub Actions is easy.

- Ensure you set a new version in SocialAuthentication.podspec. The new version can't already exist as a tag.
- Create a pull request on main and once merged into main GitHub actions will handle tagging the version and pushing to the CruGlobal specs repo.

### Publishing New Versions Manually

Steps to publish new versions for Cocoapods and Swift Package Manager.

Expand All @@ -22,4 +29,4 @@ Steps to publish new versions for Cocoapods and Swift Package Manager.

Cru Global Specs Repo: https://github.com/CruGlobal/cocoapods-specs

Private Cocoapods: https://guides.cocoapods.org/making/private-cocoapods.html
Private Cocoapods: https://guides.cocoapods.org/making/private-cocoapods.html
16 changes: 8 additions & 8 deletions SocialAuthentication.podspec
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@

Pod::Spec.new do |s|
s.name = 'SocialAuthentication'
s.version = '0.5.0'
s.summary = 'Module for obtaining access tokens from social platforms FacebookLogin, GoogleSignIn, and AppleSignIn.'
s.name = 'SocialAuthentication'
s.version = '0.5.0'
s.summary = 'Module for obtaining access tokens from social platforms FacebookLogin, GoogleSignIn, and AppleSignIn.'


s.description = 'This module implements Classes for obtaining access tokens from FacebookLogin, GoogleSignIn, and AppleSignIn.'
s.description = 'This module implements Classes for obtaining access tokens from FacebookLogin, GoogleSignIn, and AppleSignIn.'

s.homepage = 'https://github.com/CruGlobal/social-authentication-ios'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Levi Eggert' => '[email protected]' }
s.source = { :git => 'https://github.com/CruGlobal/social-authentication-ios.git', :tag => s.version.to_s }
s.homepage = 'https://github.com/CruGlobal/social-authentication-ios'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Levi Eggert' => '[email protected]' }
s.source = { :git => 'https://github.com/CruGlobal/social-authentication-ios.git', :tag => s.version.to_s }

s.swift_version = '5.7'
s.platforms = {
Expand Down

0 comments on commit f0286a8

Please sign in to comment.