From cfd0fd0b85a8b8086093289a76ba34eb02c62450 Mon Sep 17 00:00:00 2001 From: Kishikawa Katsumi Date: Tue, 7 Nov 2023 07:57:13 +0900 Subject: [PATCH] Add GitHub Actions --- .github/workflows/test.yml | 105 +++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..72ba34490 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,105 @@ +name: Test +on: + pull_request: + branches: [master] + push: + branches: [master] + workflow_dispatch: + +jobs: + test: + name: ${{ matrix.command }} on  ${{ matrix.platform }} (xcode ${{ matrix.xcode }}, ${{ matrix.macos }}) + runs-on: ${{ matrix.macos }} + strategy: + fail-fast: false + matrix: + macos: ["macos-11", "macos-12", "macos-13"] + xcode: ["11.7", "12.5.1", "13.2.1", "14.2", "14.3.1"] + platform: ["ios"] + command: ["test"] + exclude: + - macos: "macos-11" + xcode: "14.2" + - macos: "macos-11" + xcode: "14.3.1" + - macos: "macos-12" + xcode: "11.7" + - macos: "macos-12" + xcode: "12.5.1" + - macos: "macos-12" + xcode: "13.2.1" + - macos: "macos-12" + xcode: "14.3.1" + - macos: "macos-13" + xcode: "11.7" + - macos: "macos-13" + xcode: "12.5.1" + - macos: "macos-13" + xcode: "13.2.1" + - macos: "macos-13" + xcode: "14.2" + steps: + - uses: actions/checkout@v4 + - uses: maxim-lobanov/setup-xcode@v1.2.3 + with: + xcode-version: ${{ matrix.xcode }} + - name: Install the Apple certificate and provisioning profile + env: + BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} + P12_PASSWORD: ${{ secrets.P12_PASSWORD }} + BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }} + KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} + run: | + # create variables + CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 + PP_PATH=$RUNNER_TEMP/build_pp.provisionprofile + KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db + + # import certificate and provisioning profile from secrets + echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH + echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH + + # create temporary keychain + security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + security set-keychain-settings -lut 21600 $KEYCHAIN_PATH + security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH + + # import certificate to keychain + security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH + security list-keychain -d user -s $KEYCHAIN_PATH + + # apply provisioning profile + mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles + cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles + - name: Test + if: ${{ matrix.xcode=='11.7' && matrix.platform=='ios' }} + run: | + set -ex + xcodebuild test -workspace KeychainAccess.xcworkspace -scheme KeychainAccess -destination 'platform=iOS Simulator,OS=13.7,name=iPhone 11 Pro' -only-testing:KeychainAccessTests -resultBundlePath TestResults.xcresult + - name: Test + if: ${{ matrix.xcode=='12.5.1' && matrix.platform=='ios' }} + run: | + set -ex + xcodebuild test -workspace KeychainAccess.xcworkspace -scheme KeychainAccess -destination 'platform=iOS Simulator,OS=14.5,name=iPhone 12 Pro' -only-testing:KeychainAccessTests -resultBundlePath TestResults.xcresult + - name: Test + if: ${{ matrix.xcode=='13.2.1' && matrix.platform=='ios' }} + run: | + set -ex + xcodebuild test -workspace KeychainAccess.xcworkspace -scheme KeychainAccess -destination 'platform=iOS Simulator,OS=15.2,name=iPhone 13 Pro' -only-testing:KeychainAccessTests -resultBundlePath TestResults.xcresult + - name: Test + if: ${{ matrix.xcode=='14.2' && matrix.platform=='ios' }} + run: | + set -ex + xcodebuild test -workspace KeychainAccess.xcworkspace -scheme KeychainAccess -destination 'platform=iOS Simulator,OS=16.2,name=iPhone 14 Pro' -only-testing:KeychainAccessTests -resultBundlePath TestResults.xcresult + - name: Test + if: ${{ matrix.xcode=='14.3.1' && matrix.platform=='ios' }} + run: | + set -ex + xcodebuild test -workspace KeychainAccess.xcworkspace -scheme KeychainAccess -destination 'platform=iOS Simulator,OS=16.4,name=iPhone 14 Pro' -only-testing:KeychainAccessTests -resultBundlePath TestResults1.xcresult + xcodebuild test -workspace KeychainAccess.xcworkspace -scheme KeychainAccess -destination 'platform=iOS Simulator,OS=17.0.1,name=iPhone 14 Pro' -only-testing:KeychainAccessTests -resultBundlePath TestResults2.xcresult + xcrun xcresulttool merge TestResults1.xcresult TestResults2.xcresult --output-path TestResults.xcresult + - uses: kishikawakatsumi/xcresulttool@v1 + with: + path: TestResults.xcresult + title: "KeychainAccess test report" + if: always()