PM-17413: Update policy banner design #4936
Workflow file for this run
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: Test | |
on: | |
push: | |
branches: | |
- "main" | |
- "rc" | |
- "hotfix-rc" | |
pull_request: | |
types: [opened, synchronize] | |
workflow_dispatch: | |
inputs: | |
xcode-version: | |
description: "Xcode version override - e.g. '15.2'" | |
type: string | |
simulator-name: | |
description: "Simulator name override - e.g. 'iPhone 16 Pro'" | |
type: string | |
simulator-version: | |
description: "Simulator iOS version override - e.g. '18.0.1'" | |
type: string | |
compiler-flags: | |
description: "Compiler Flags - e.g. 'DEBUG_MENU FEATURE2'" | |
type: string | |
workflow_call: | |
inputs: | |
xcode-version: | |
description: "Xcode version override - e.g. '15.2'" | |
type: string | |
simulator-name: | |
description: "Simulator name override - e.g. 'iPhone 16 Pro'" | |
type: string | |
simulator-version: | |
description: "Simulator iOS version override - e.g. '18.0.1'" | |
type: string | |
compiler-flags: | |
description: "Compiler Flags - e.g. 'DEBUG_MENU FEATURE2'" | |
type: string | |
env: | |
MINT_LINK_PATH: .mint/bin # used by mint in bootstrap.sh | |
MINT_PATH: .mint/lib # used by mint in bootstrap.sh | |
_COVERAGE_PATH: build/coverage.xml | |
_RESULT_BUNDLE_PATH: build/BitwardenTests.xcresult | |
_SIMULATOR_NAME: ${{ inputs.simulator-name }} | |
_SIMULATOR_VERSION: ${{ inputs.simulator-version }} | |
_XCODE_VERSION: ${{ inputs.xcode-version }} | |
_COMPILER_FLAGS: ${{ inputs.compiler-flags }} | |
_GITHUB_ACTION_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }} | |
jobs: | |
test: | |
name: Test | |
runs-on: macos-15-xlarge | |
timeout-minutes: 30 | |
permissions: | |
contents: read | |
steps: | |
- name: Log inputs to job summary | |
run: | | |
echo "<details><summary>Build Workflow Inputs</summary>" >> $GITHUB_STEP_SUMMARY | |
echo "" >> $GITHUB_STEP_SUMMARY | |
echo '```json' >> $GITHUB_STEP_SUMMARY | |
echo '${{ toJson(inputs) }}' >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
echo "</details>" >> $GITHUB_STEP_SUMMARY | |
- name: Check out repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- name: Read Xcode version and simulator configuration from file if not provided | |
run: | | |
if [ -z "$_XCODE_VERSION" ]; then | |
echo "_XCODE_VERSION=$(cat .xcode-version | tr -d '\n')" >> "$GITHUB_ENV" | |
fi | |
if [ -z "$_SIMULATOR_NAME" ]; then | |
echo "_SIMULATOR_NAME=$(cat .test-simulator-device-name | tr -d '\n')" >> "$GITHUB_ENV" | |
fi | |
if [ -z "$_SIMULATOR_VERSION" ]; then | |
echo "_SIMULATOR_VERSION=$(cat .test-simulator-ios-version | tr -d '\n')" >> "$GITHUB_ENV" | |
fi | |
- name: Set Xcode version | |
uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0 | |
with: | |
xcode-version: ${{ env._XCODE_VERSION }} | |
- name: Configure Ruby | |
uses: ruby/setup-ruby@4a9ddd6f338a97768b8006bf671dfbad383215f4 # v1.207.0 | |
with: | |
bundler-cache: true | |
- name: Cache Mint packages | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
with: | |
path: .mint | |
key: ${{ runner.os }}-mint-${{ hashFiles('**/Mintfile') }} | |
restore-keys: | | |
${{ runner.os }}-mint- | |
- name: Cache SPM packages | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
with: | |
path: build/DerivedData/SourcePackages | |
key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} | |
restore-keys: | | |
${{ runner.os }}-spm- | |
- name: Update local config | |
run: | | |
./Scripts/update_test_local_config.sh "${{ env._COMPILER_FLAGS }}" | |
- name: Install Mint and xcresultparser | |
run: | | |
brew install mint xcresultparser | |
./Scripts/bootstrap.sh | |
- name: Build and test | |
run: | | |
xcrun xcodebuild test \ | |
-project Bitwarden.xcodeproj \ | |
-scheme Bitwarden \ | |
-configuration Debug \ | |
-destination "platform=iOS Simulator,name=$_SIMULATOR_NAME,OS=$_SIMULATOR_VERSION" \ | |
-resultBundlePath $_RESULT_BUNDLE_PATH \ | |
-derivedDataPath build/DerivedData \ | |
-test-timeouts-enabled yes \ | |
-maximum-test-execution-time-allowance 1 \ | |
-quiet | |
- name: Print Logs Summary | |
if: always() | |
run: | | |
xcresultparser -o cli "$_RESULT_BUNDLE_PATH" | |
echo "# Test Summary" >> $GITHUB_STEP_SUMMARY | |
xcresultparser -f -o txt "$_RESULT_BUNDLE_PATH" | grep "Number of" >> $GITHUB_STEP_SUMMARY | |
- name: Convert coverage to Cobertura | |
run: | | |
set -o pipefail && \ | |
xcresultparser --output-format cobertura \ | |
"$_RESULT_BUNDLE_PATH" > "$_COVERAGE_PATH" | |
- name: Upload test reports | |
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
if: always() | |
with: | |
name: test-reports | |
compression-level: 9 | |
path: | | |
${{ env._COVERAGE_PATH }} | |
${{ env._RESULT_BUNDLE_PATH }} | |
report: | |
name: Process Test Reports | |
needs: test | |
runs-on: ubuntu-24.04 | |
permissions: | |
issues: write | |
pull-requests: write | |
if: success() | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
sparse-checkout: .github/codecov.yml | |
sparse-checkout-cone-mode: false | |
- name: Download test artifacts | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
name: test-reports | |
- name: Upload to codecov.io | |
id: upload-to-codecov | |
uses: codecov/codecov-action@1e68e06f1dbfde0e4cefc87efeba9e4643565303 # v5.1.2 | |
continue-on-error: true | |
with: | |
files: coverage.xml | |
fail_ci_if_error: true | |
- name: Comment PR if tests failed | |
if: steps.upload-to-codecov.outcome == 'failure' | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
RUN_ACTOR: ${{ github.triggering_actor }} | |
run: | | |
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY | |
echo "> Uploading code coverage report failed. Please check the \"Upload to codecov.io\" step of \"Process Test Reports\" job for more details." >> $GITHUB_STEP_SUMMARY | |
if [ ! -z "$PR_NUMBER" ]; then | |
message=$'> [!WARNING]\n> @'$RUN_ACTOR' Uploading code coverage report failed. Please check the "Upload to codecov.io" step of [Process Test Reports job]('$_GITHUB_ACTION_RUN_URL') for more details.' | |
gh pr comment --repo $GITHUB_REPOSITORY $PR_NUMBER --body "$message" | |
fi |