name: Fly Deploy on: push: branches: - main env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} BULL_AUTH_KEY: ${{ secrets.BULL_AUTH_KEY }} FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} HOST: ${{ secrets.HOST }} LLAMAPARSE_API_KEY: ${{ secrets.LLAMAPARSE_API_KEY }} LOGTAIL_KEY: ${{ secrets.LOGTAIL_KEY }} POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }} POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }} NUM_WORKERS_PER_QUEUE: ${{ secrets.NUM_WORKERS_PER_QUEUE }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} PLAYWRIGHT_MICROSERVICE_URL: ${{ secrets.PLAYWRIGHT_MICROSERVICE_URL }} PORT: ${{ secrets.PORT }} REDIS_URL: ${{ secrets.REDIS_URL }} SCRAPING_BEE_API_KEY: ${{ secrets.SCRAPING_BEE_API_KEY }} SUPABASE_ANON_TOKEN: ${{ secrets.SUPABASE_ANON_TOKEN }} SUPABASE_SERVICE_TOKEN: ${{ secrets.SUPABASE_SERVICE_TOKEN }} SUPABASE_URL: ${{ secrets.SUPABASE_URL }} TEST_API_KEY: ${{ secrets.TEST_API_KEY }} PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }} PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} CRATES_IO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} USE_DB_AUTHENTICATION: ${{ secrets.USE_DB_AUTHENTICATION }} ENV: ${{ secrets.ENV }} jobs: deploy: name: Deploy app runs-on: ubuntu-latest needs: [pre-deploy-test-suite, python-sdk-tests, js-sdk-tests, rust-sdk-tests] steps: - uses: actions/checkout@v3 - uses: superfly/flyctl-actions/setup-flyctl@master - run: flyctl deploy --remote-only -a firecrawl-scraper-js --build-secret SENTRY_AUTH_TOKEN=$SENTRY_AUTH_TOKEN working-directory: ./apps/api env: FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} BULL_AUTH_KEY: ${{ secrets.BULL_AUTH_KEY }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} build-and-publish-python-sdk: name: Build and publish Python SDK runs-on: ubuntu-latest needs: deploy steps: - name: Checkout repository uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.x' - name: Install dependencies run: | python -m pip install --upgrade pip pip install setuptools wheel twine build requests packaging - name: Run version check script id: version_check_script run: | PYTHON_SDK_VERSION_INCREMENTED=$(python .github/scripts/check_version_has_incremented.py python ./apps/python-sdk/firecrawl firecrawl-py) echo "PYTHON_SDK_VERSION_INCREMENTED=$PYTHON_SDK_VERSION_INCREMENTED" >> $GITHUB_ENV - name: Build the package if: ${{ env.PYTHON_SDK_VERSION_INCREMENTED == 'true' }} run: | python -m build working-directory: ./apps/python-sdk - name: Publish to PyPI if: ${{ env.PYTHON_SDK_VERSION_INCREMENTED == 'true' }} env: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | twine upload dist/* working-directory: ./apps/python-sdk build-and-publish-js-sdk: name: Build and publish JavaScript SDK runs-on: ubuntu-latest needs: deploy steps: - uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '20' registry-url: 'https://registry.npmjs.org/' scope: '@mendable' always-auth: true - name: Install pnpm run: npm install -g pnpm - name: Install python for running version check script run: | python -m pip install --upgrade pip pip install setuptools wheel requests packaging - name: Install dependencies for JavaScript SDK run: pnpm install working-directory: ./apps/js-sdk/firecrawl - name: Run version check script id: version_check_script run: | VERSION_INCREMENTED=$(python .github/scripts/check_version_has_incremented.py js ./apps/js-sdk/firecrawl @mendable/firecrawl-js) echo "VERSION_INCREMENTED=$VERSION_INCREMENTED" >> $GITHUB_ENV - name: Build and publish to npm if: ${{ env.VERSION_INCREMENTED == 'true' }} env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: | npm run build-and-publish working-directory: ./apps/js-sdk/firecrawl build-and-publish-rust-sdk: name: Build and publish Rust SDK runs-on: ubuntu-latest needs: deploy steps: - name: Checkout repository uses: actions/checkout@v3 - name: Set up Rust uses: actions-rs/toolchain@v1 with: toolchain: stable default: true profile: minimal - name: Install dependencies run: cargo build --release - name: Run version check script id: version_check_script run: | VERSION_INCREMENTED=$(cargo search --limit 1 my_crate_name | grep my_crate_name) echo "VERSION_INCREMENTED=$VERSION_INCREMENTED" >> $GITHUB_ENV - name: Build the package if: ${{ env.VERSION_INCREMENTED == 'true' }} run: cargo package working-directory: ./apps/rust-sdk - name: Publish to crates.io if: ${{ env.VERSION_INCREMENTED == 'true' }} env: CARGO_REG_TOKEN: ${{ secrets.CRATES_IO_TOKEN }} run: cargo publish working-directory: ./apps/rust-sdk