name: Release on: push: tags: - "builds/*" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} APP_STORE_CONNECT_API_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY }} FASTLANE_USERNAME: ${{ secrets.FASTLANE_USERNAME }} FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }} TESTFLIGHT_PREFACE: ${{ vars.TESTFLIGHT_PREFACE }} XCODEPROJ: "Passepartout.xcodeproj/project.pbxproj" concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build_upload: name: Upload to ASC runs-on: macos-14 strategy: fail-fast: true matrix: platform: ["iOS", "macOS", "tvOS"] steps: - uses: passepartoutvpn/action-prepare-xcode-build@master with: access_token: ${{ secrets.ACCESS_TOKEN }} - name: Run tests id: run_tests timeout-minutes: 15 run: | bundle exec fastlane test - name: Upload ${{ matrix.platform }} app id: upload_app timeout-minutes: 30 env: MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }} MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }} PILOT_BETA_APP_FEEDBACK: ${{ secrets.PILOT_BETA_APP_FEEDBACK }} PILOT_BETA_APP_REVIEW_INFO: ${{ secrets.PILOT_BETA_APP_REVIEW_INFO }} PILOT_GROUPS: ${{ vars.PILOT_GROUPS }} run: | ci/recognize-match-hostname.sh bundle exec fastlane --env ${{ matrix.platform }} beta distribute_public_beta: name: Distribute Public Beta runs-on: ubuntu-latest needs: build_upload environment: name: public_beta steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Fetch build metadata run: | echo "PILOT_APP_VERSION=`ci/version-number.sh $XCODEPROJ`" >> $GITHUB_ENV echo "PILOT_BUILD_NUMBER=`ci/build-number.sh $XCODEPROJ`" >> $GITHUB_ENV - name: Publish on TestFlight env: PILOT_GROUPS: ${{ vars.PILOT_GROUPS }} PILOT_NOTIFY_EXTERNAL_TESTERS: ${{ vars.PILOT_NOTIFY_EXTERNAL_TESTERS }} run: | PLATFORMS=("iOS" "macOS" "tvOS") for PLATFORM in ${PLATFORMS[@]}; do bundle exec fastlane --env $PLATFORM public_beta done