name: migrate cassandra on: push: branches: - canary paths: - fluxer_devops/cassandra/migrations/**/*.cql workflow_dispatch: concurrency: group: migrate-cassandra-prod cancel-in-progress: false permissions: contents: read jobs: migrate: name: Run database migrations runs-on: blacksmith-8vcpu-ubuntu-2404 timeout-minutes: 25 steps: - uses: actions/checkout@v6 - name: Set up pnpm uses: pnpm/action-setup@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 24 cache: pnpm cache-dependency-path: pnpm-lock.yaml - name: Install dependencies run: python3 scripts/ci/workflows/migrate_cassandra.py --step install_dependencies - name: Validate migrations run: python3 scripts/ci/workflows/migrate_cassandra.py --step validate_migrations - name: Set up SSH agent uses: webfactory/ssh-agent@v0.9.1 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY_SERVER }} - name: Add server to known hosts run: python3 scripts/ci/workflows/migrate_cassandra.py --step add_known_hosts --server-ip ${{ secrets.SERVER_IP }} - name: Set up SSH tunnel for Cassandra run: python3 scripts/ci/workflows/migrate_cassandra.py --step setup_tunnel --server-user ${{ secrets.SERVER_USER }} --server-ip ${{ secrets.SERVER_IP }} - name: Test Cassandra connection env: CASSANDRA_USERNAME: ${{ secrets.CASSANDRA_USERNAME }} CASSANDRA_PASSWORD: ${{ secrets.CASSANDRA_PASSWORD }} run: python3 scripts/ci/workflows/migrate_cassandra.py --step test_connection - name: Run migrations env: CASSANDRA_USERNAME: ${{ secrets.CASSANDRA_USERNAME }} CASSANDRA_PASSWORD: ${{ secrets.CASSANDRA_PASSWORD }} run: python3 scripts/ci/workflows/migrate_cassandra.py --step run_migrations - name: Close SSH tunnel if: always() run: python3 scripts/ci/workflows/migrate_cassandra.py --step close_tunnel