Bump rexml from 3.2.8 to 3.3.6 (#271) #196
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- '[0-9]+\.[0-9]+\.[0-9]+' | |
pull_request_target: # forks don't have access to secrets if we use `pull_request`, which is required for codecov | |
branches: | |
- master | |
env: | |
# https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md#xcode | |
DEVELOPER_DIR: "/Applications/Xcode_15.2.app/Contents/Developer" | |
IOS_DESTINATION: "platform=iOS Simulator,name=iPhone 15 Pro,OS=latest" | |
concurrency: | |
# cancel in progress jobs only from PRs, as run_id is unique | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
env-details: | |
name: Environment details | |
runs-on: macos-14 | |
if: | | |
github.event_name == 'push' || | |
!github.event.pull_request.head.repo.fork || | |
(github.event.pull_request.head.repo.fork && contains(github.event.pull_request.labels.*.name, 'run ci')) | |
steps: | |
- name: xcode version | |
run: xcodebuild -version -sdk | |
- name: list simulators | |
run: | | |
xcrun simctl delete unavailable | |
xcrun simctl list | |
- name: brew version | |
run: brew --version | |
build-test: | |
name: Build and Test | |
runs-on: macos-14 | |
if: | | |
github.event_name == 'push' || | |
!github.event.pull_request.head.repo.fork || | |
(github.event.pull_request.head.repo.fork && contains(github.event.pull_request.labels.*.name, 'run ci')) | |
env: | |
WORKSPACE: Alicerce.xcworkspace | |
SCHEME: Alicerce | |
DERIVED_DATA_PATH: /tmp/DerivedData | |
SPM_CLONED_DEPENDENCIES_PATH: /tmp/spm-dependencies | |
RESULT_BUNDLE_PATH: build-test.xcresult | |
COBERTURA_REPORT_PATH: coverage.xml | |
LOG_PATH: xcodebuild.log | |
steps: | |
- name: git checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: set Homebrew cache path | |
run: | | |
HOMEBREW_CACHE_DIR="$(brew --cache)" | |
echo "Homebrew cache directory: $HOMEBREW_CACHE_DIR" | |
echo "HOMEBREW_CACHE_PATH=$HOMEBREW_CACHE_DIR" >> "$GITHUB_ENV" | |
- name: cache Homebrew | |
uses: actions/cache@v4 | |
with: | |
save-always: true | |
path: ${{ env.HOMEBREW_CACHE_PATH }} | |
key: ${{ runner.os }}-brew-${{ hashFiles('**/Brewfile.lock.json') }} | |
restore-keys: ${{ runner.os }}-brew- | |
- name: install Homebrew formulas | |
run: | | |
brew update | |
brew bundle install | |
- name: cache SPM | |
uses: actions/cache@v4 | |
with: | |
save-always: true | |
path: ${{ env.SPM_CLONED_DEPENDENCIES_PATH }} | |
key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} | |
restore-keys: ${{ runner.os }}-spm- | |
- name: cache DerivedData | |
uses: actions/cache@v4 | |
with: | |
save-always: true | |
path: ${{ env.DERIVED_DATA_PATH }} | |
key: ${{ runner.os }}-DerivedData-${{ hashFiles('**/Package.resolved') }} | |
restore-keys: ${{ runner.os }}-DerivedData- | |
- name: unit tests | |
run: | | |
set -o pipefail | |
xcodebuild clean build test \ | |
-workspace "$WORKSPACE" \ | |
-scheme "$SCHEME" \ | |
-destination "$IOS_DESTINATION" \ | |
-derivedDataPath "$DERIVED_DATA_PATH" \ | |
-enableCodeCoverage YES \ | |
-resultBundlePath "$RESULT_BUNDLE_PATH" \ | |
-onlyUsePackageVersionsFromResolvedFile \ | |
-skipPackagePluginValidation \ | |
-skipMacroValidation \ | |
-clonedSourcePackagesDirPath $SPM_CLONED_DEPENDENCIES_PATH \ | |
| tee $LOG_PATH \ | |
| xcbeautify | |
# https://about.codecov.io/blog/pre-converting-xcresult-files-for-codecov-using-xcresultparser/ | |
- name: convert .xcresult bundle | |
run: | | |
set -o pipefail | |
xcresultparser \ | |
--output-format cobertura \ | |
"$RESULT_BUNDLE_PATH" >"$COBERTURA_REPORT_PATH" | |
- name: codecov upload | |
uses: codecov/codecov-action@v4 | |
with: | |
plugin: xcode | |
file: ${{ env.COBERTURA_REPORT_PATH }} | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Archive artifacts | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifacts | |
path: | | |
${{ env.RESULT_BUNDLE_PATH }} | |
${{ env.COBERTURA_REPORT_PATH }} | |
${{ env.LOG_PATH }} | |
swiftpm: | |
name: SwiftPM Build | |
runs-on: macos-14 | |
if: | | |
github.event_name == 'push' || | |
!github.event.pull_request.head.repo.fork || | |
(github.event.pull_request.head.repo.fork && contains(github.event.pull_request.labels.*.name, 'run ci')) | |
env: | |
WORKSPACE: Alicerce.xcworkspace | |
SCHEME: "Alicerce (SPM)" | |
DERIVED_DATA_PATH: /tmp/DerivedData | |
SPM_CLONED_DEPENDENCIES_PATH: /tmp/spm-dependencies | |
LOG_PATH: spm-xcodebuild.log | |
steps: | |
- name: git checkout | |
uses: actions/checkout@v3 | |
- name: set Homebrew cache path | |
run: | | |
HOMEBREW_CACHE_DIR="$(brew --cache)" | |
echo "Homebrew cache directory: $HOMEBREW_CACHE_DIR" | |
echo "HOMEBREW_CACHE_PATH=$HOMEBREW_CACHE_DIR" >> "$GITHUB_ENV" | |
- name: cache Homebrew | |
uses: actions/cache@v4 | |
with: | |
save-always: true | |
path: ${{ env.HOMEBREW_CACHE_PATH }} | |
key: ${{ runner.os }}-brew-${{ hashFiles('**/Brewfile.lock.json') }} | |
restore-keys: ${{ runner.os }}-brew- | |
- name: install Homebrew formulas | |
run: | | |
brew update | |
brew bundle install | |
- name: cache SPM | |
uses: actions/cache@v4 | |
with: | |
save-always: true | |
path: ${{ env.SPM_CLONED_DEPENDENCIES_PATH }} | |
key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} | |
restore-keys: ${{ runner.os }}-spm- | |
- name: cache DerivedData | |
uses: actions/cache@v4 | |
with: | |
save-always: true | |
path: ${{ env.DERIVED_DATA_PATH }} | |
key: ${{ runner.os }}-DerivedData-${{ hashFiles('**/Package.resolved') }} | |
restore-keys: ${{ runner.os }}-DerivedData- | |
- name: build | |
run: | | |
set -o pipefail | |
xcodebuild clean build \ | |
-workspace "$WORKSPACE" \ | |
-scheme "$SCHEME" \ | |
-destination "$IOS_DESTINATION" \ | |
-derivedDataPath $DERIVED_DATA_PATH \ | |
-onlyUsePackageVersionsFromResolvedFile \ | |
-skipPackagePluginValidation \ | |
-skipMacroValidation \ | |
-clonedSourcePackagesDirPath $SPM_CLONED_DEPENDENCIES_PATH \ | |
| tee $LOG_PATH \ | |
| xcbeautify | |
- name: Archive logs | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: spm-xcodebuild.log | |
path: ${{ env.LOG_PATH }} | |
cocoapods: | |
name: CocoaPods Verification | |
runs-on: macos-14 | |
if: | | |
github.event_name == 'push' || | |
!github.event.pull_request.head.repo.fork || | |
(github.event.pull_request.head.repo.fork && contains(github.event.pull_request.labels.*.name, 'run ci')) | |
steps: | |
- name: git checkout | |
uses: actions/checkout@v3 | |
- name: ruby versions | |
run: | | |
ruby --version | |
gem --version | |
bundler --version | |
- name: cache gems | |
uses: actions/cache@v4 | |
with: | |
path: vendor/bundle | |
key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} | |
restore-keys: ${{ runner.os }}-gem- | |
- name: bundle install | |
run: | | |
gem install bundler --no-document | |
bundle config path vendor/bundle | |
bundle install --jobs 4 --retry 3 | |
- name: pod lint | |
run: bundle exec pod lib lint | |
carthage: | |
name: Carthage Verification | |
runs-on: macos-14 | |
if: | | |
github.event_name == 'push' || | |
!github.event.pull_request.head.repo.fork || | |
(github.event.pull_request.head.repo.fork && contains(github.event.pull_request.labels.*.name, 'run ci')) | |
env: | |
# Use Xcode 15.3 (latest) for Carthage to avoid iOS device/simulator version mismatches | |
DEVELOPER_DIR: "/Applications/Xcode_15.3.app/Contents/Developer" | |
DERIVED_DATA_PATH: /tmp/DerivedData | |
LOG_PATH: carthage.log | |
steps: | |
- name: git checkout | |
uses: actions/checkout@v3 | |
- name: set Homebrew cache path | |
run: | | |
HOMEBREW_CACHE_DIR="$(brew --cache)" | |
echo "Homebrew cache directory: $HOMEBREW_CACHE_DIR" | |
echo "HOMEBREW_CACHE_PATH=$HOMEBREW_CACHE_DIR" >> "$GITHUB_ENV" | |
- name: cache Homebrew | |
uses: actions/cache@v4 | |
with: | |
save-always: true | |
path: ${{ env.HOMEBREW_CACHE_PATH }} | |
key: ${{ runner.os }}-brew-${{ hashFiles('**/Brewfile.lock.json') }} | |
restore-keys: ${{ runner.os }}-brew- | |
- name: install Homebrew formulas | |
run: | | |
brew update | |
brew bundle install | |
- name: cache DerivedData | |
uses: actions/cache@v4 | |
with: | |
save-always: true | |
path: ${{ env.DERIVED_DATA_PATH }} | |
key: ${{ runner.os }}-DerivedData-${{ hashFiles('**/Package.resolved') }} | |
restore-keys: ${{ runner.os }}-DerivedData- | |
- name: carthage build | |
run: | | |
defaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidatation -bool YES | |
defaults write com.apple.dt.Xcode IDESkipMacroFingerprintValidation -bool YES | |
# remove SPM scheme because Carthage builds all shared schemes... | |
rm ".swiftpm/xcode/xcshareddata/xcschemes/Alicerce (SPM).xcscheme" | |
./script/carthage.sh build \ | |
--cache-builds \ | |
--no-skip-current \ | |
--use-xcframeworks \ | |
--derived-data $DERIVED_DATA_PATH \ | |
--log-path $LOG_PATH | |
- name: Archive logs | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: carthage.log | |
path: ${{ env.LOG_PATH }} | |
release-github: | |
name: GitHub Release | |
runs-on: macos-14 | |
needs: [build-test, swiftpm, cocoapods, carthage] | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: git checkout | |
uses: actions/checkout@v3 | |
- name: create release | |
uses: softprops/action-gh-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
body: | | |
# Changes | |
- <!-- Insert changes here --> | |
release-cocoapods: | |
name: CocoaPods Release | |
runs-on: macos-14 | |
needs: [build-test, swiftpm, cocoapods, carthage] | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: git checkout | |
uses: actions/checkout@v3 | |
- name: ruby versions | |
run: | | |
ruby --version | |
gem --version | |
bundler --version | |
- name: cache gems | |
uses: actions/cache@v4 | |
with: | |
path: vendor/bundle | |
key: ${{ runner.os }}-gem-${{ hashFiles('**/Gemfile.lock') }} | |
restore-keys: ${{ runner.os }}-gem- | |
- name: bundle install | |
run: | | |
gem install bundler --no-document | |
bundle config path vendor/bundle | |
bundle install --jobs 4 --retry 3 | |
- name: pod trunk push | |
env: | |
COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} | |
run: pod trunk push --allow-warnings |