name: Test Bats MacOS on: workflow_dispatch: schedule: - cron: '0 1 * * *' concurrency: group: ci-bats-mac-nightly cancel-in-progress: true jobs: test: name: Bats tests defaults: run: shell: bash runs-on: macos-latest strategy: fail-fast: true env: use_credentials: ${{ secrets.AWS_SECRET_ACCESS_KEY != '' && secrets.AWS_ACCESS_KEY_ID != '' }} steps: - name: Conditionally Set ENV VARS for AWS tests run: | if [[ $use_credentials == true ]]; then echo "AWS_SDK_LOAD_CONFIG=1" >> $GITHUB_ENV echo "AWS_REGION=us-west-2" >> $GITHUB_ENV echo "DOLT_BATS_AWS_TABLE=dolt-ci-bats-manifests-us-west-2" >> $GITHUB_ENV echo "DOLT_BATS_AWS_BUCKET=dolt-ci-bats-chunks-us-west-2" >> $GITHUB_ENV echo "DOLT_BATS_AWS_EXISTING_REPO=aws_remote_bats_tests__dolt__" >> $GITHUB_ENV fi - name: Configure AWS Credentials if: ${{ env.use_credentials == 'true' }} uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-west-2 role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} role-duration-seconds: 10800 # 3 hours D: - uses: actions/checkout@v6 - name: Set up Go toolchain uses: ./.github/actions/setup-go-toolchain - name: Setup Python 3.x uses: actions/setup-python@v5 with: python-version: "3.10" - uses: actions/setup-node@v4 with: node-version: ^16 - name: Build dolt uses: ./.github/actions/build-dolt with: remotesrv: 'true' noms: 'true' - name: Install Bats run: | npm i bats echo "$(pwd)/node_modules/.bin" >> $GITHUB_PATH working-directory: ./.ci_bin - name: Install Python Deps run: | pip install mysql-connector-python pip install pandas pip install pyarrow - name: Install MySQL client LTS release (8.4) run: | brew update brew install mysql-client@8.4 brew link mysql-client@8.4 --force mysql --version - name: Setup Dolt Config uses: ./.github/actions/setup-dolt-config - name: Install Maven working-directory: ./.ci_bin run: | curl -LO https://dlcdn.apache.org/maven/maven-3/3.9.15/binaries/apache-maven-3.9.15-bin.tar.gz tar -xf apache-maven-3.9.15-bin.tar.gz echo "$(pwd)/apache-maven-3.9.15/bin" >> $GITHUB_PATH - name: Install Hadoop working-directory: ./.ci_bin run: | curl -LO https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz tar xvf hadoop-3.3.6.tar.gz echo "$(pwd)/hadoop-3.3.6/bin" >> $GITHUB_PATH - name: Install parquet-cli id: parquet_cli working-directory: ./.ci_bin run: | curl -OL https://github.com/apache/parquet-mr/archive/refs/tags/apache-parquet-1.12.3.tar.gz tar zxvf apache-parquet-1.12.3.tar.gz cd parquet-java-apache-parquet-1.12.3/parquet-cli mvn clean install -DskipTests runtime_jar="$(pwd)"/target/parquet-cli-1.12.3-runtime.jar echo "runtime_jar=$runtime_jar" >> $GITHUB_OUTPUT - name: Check expect run: expect -v - name: Test all Mac env: SQL_ENGINE: "local-engine" PARQUET_RUNTIME_JAR: ${{ steps.parquet_cli.outputs.runtime_jar }} BATS_TEST_RETRIES: "3" run: | bats --tap $BATS_FILTER . working-directory: ./integration-tests/bats report-bats-failure: name: Report Bats MacOS Failure via Email needs: test runs-on: ubuntu-22.04 if: always() && (needs.test.result == 'failure') steps: - uses: actions/checkout@v6 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-west-2 - name: Send Email if: ${{ github.event_name == 'workflow_dispatch' }} uses: ./.github/actions/ses-email-action with: region: us-west-2 version: ${{ github.ref }} template: 'BatsMacFailureTemplate' toAddresses: '["${{ github.event.inputs.email }}"]' workflowURL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} - name: Send Email if: ${{ github.event_name == 'schedule' }} uses: ./.github/actions/ses-email-action with: region: us-west-2 version: ${{ github.event.client_payload.ref }} template: 'BatsMacFailureTemplate' toAddresses: '["dolts@dolthub.com", "tim@dolthub.com"]' workflowURL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}