Skip to content

Commit

Permalink
Merge pull request #28 from CruGlobal/update-workflows
Browse files Browse the repository at this point in the history
Add workflows for build, run tests, create version
  • Loading branch information
levieggertcru authored Jul 3, 2024
2 parents 42af42b + d64a444 commit 548a2ba
Show file tree
Hide file tree
Showing 8 changed files with 365 additions and 17 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
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.3.3
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,18 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES"
onlyGenerateCoverageForSpecifiedTargets = "YES">
<CodeCoverageTargets>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "SocialAuthentication"
BuildableName = "SocialAuthentication"
BlueprintName = "SocialAuthentication"
ReferencedContainer = "container:">
</BuildableReference>
</CodeCoverageTargets>
<Testables>
<TestableReference
skipped = "NO">
Expand Down
Loading

0 comments on commit 548a2ba

Please sign in to comment.