Add infineon (#2461) #232
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy Crawler (Hetzner) | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - 'apps/crawler/**' | |
| - '.github/workflows/deploy-crawler-browser.yml' | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| environment: production | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - name: Read VERSION | |
| id: version | |
| run: echo "version=$(cat apps/crawler/VERSION | tr -d '[:space:]')" >> "$GITHUB_OUTPUT" | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3 | |
| - name: Log in to GHCR | |
| uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build and push slim image (worker, exporter, drain) | |
| uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6 | |
| with: | |
| context: apps/crawler | |
| target: slim | |
| platforms: linux/amd64 | |
| push: true | |
| tags: | | |
| ghcr.io/${{ github.repository_owner }}/jobseek-crawler:latest | |
| ghcr.io/${{ github.repository_owner }}/jobseek-crawler:v${{ steps.version.outputs.version }} | |
| cache-from: type=gha,scope=crawler-slim | |
| cache-to: type=gha,mode=max,scope=crawler-slim | |
| - name: Build and push browser image (full) | |
| uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6 | |
| with: | |
| context: apps/crawler | |
| target: full | |
| platforms: linux/amd64 | |
| push: true | |
| tags: | | |
| ghcr.io/${{ github.repository_owner }}/jobseek-crawler-browser:latest | |
| ghcr.io/${{ github.repository_owner }}/jobseek-crawler-browser:v${{ steps.version.outputs.version }} | |
| cache-from: type=gha,scope=crawler-browser | |
| cache-to: type=gha,mode=max,scope=crawler-browser | |
| - name: Copy deploy files | |
| uses: appleboy/scp-action@917f8b81dfc1ccd331fef9e2d61bdc6c8be94634 # v0.1.7 | |
| with: | |
| host: ${{ secrets.HETZNER_HOST }} | |
| username: deploy | |
| key: ${{ secrets.HETZNER_SSH_KEY }} | |
| source: apps/crawler/deploy.sh,apps/crawler/docker-compose.yml,apps/crawler/alloy.river | |
| target: /home/deploy/ | |
| strip_components: 2 | |
| - name: Deploy via SSH | |
| uses: appleboy/ssh-action@0ff4204d59e8e51228ff73bce53f80d53301dee2 # v1 | |
| with: | |
| host: ${{ secrets.HETZNER_HOST }} | |
| username: deploy | |
| key: ${{ secrets.HETZNER_SSH_KEY }} | |
| envs: OWNER,DATABASE_URL_UNPOOLED,LOCAL_DATABASE_URL,R2_ACCESS_KEY_ID,R2_SECRET_ACCESS_KEY,R2_ENDPOINT_URL,R2_DOMAIN_URL,R2_BUCKET,GRAFANA_PROM_URL,GRAFANA_PROM_USERNAME,GRAFANA_PROM_PASSWORD,GRAFANA_LOKI_URL,GRAFANA_LOKI_USERNAME,GRAFANA_LOKI_PASSWORD,TYPESENSE_HOST,TYPESENSE_PORT,TYPESENSE_PROTOCOL,TYPESENSE_ADMIN_KEY,PROXY_PROVIDER,WEBSHARE_PROXY_URL,DECODO_PROXY_URL,INDEXNOW_KEY,INDEXNOW_SITE_URL,INDEXNOW_KEY_URL,INDEXNOW_INTERVAL | |
| script: bash /home/deploy/deploy.sh | |
| env: | |
| OWNER: ${{ github.repository_owner }} | |
| DATABASE_URL_UNPOOLED: ${{ secrets.DATABASE_URL_UNPOOLED }} | |
| LOCAL_DATABASE_URL: ${{ secrets.LOCAL_DATABASE_URL }} | |
| R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }} | |
| R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }} | |
| R2_ENDPOINT_URL: ${{ secrets.R2_ENDPOINT_URL }} | |
| R2_DOMAIN_URL: ${{ secrets.R2_DOMAIN_URL }} | |
| R2_BUCKET: ${{ secrets.R2_BUCKET }} | |
| GRAFANA_PROM_URL: ${{ secrets.GRAFANA_PROM_URL }} | |
| GRAFANA_PROM_USERNAME: ${{ secrets.GRAFANA_PROM_USERNAME }} | |
| GRAFANA_PROM_PASSWORD: ${{ secrets.GRAFANA_PROM_PASSWORD }} | |
| GRAFANA_LOKI_URL: ${{ secrets.GRAFANA_LOKI_URL }} | |
| GRAFANA_LOKI_USERNAME: ${{ secrets.GRAFANA_LOKI_USERNAME }} | |
| GRAFANA_LOKI_PASSWORD: ${{ secrets.GRAFANA_LOKI_PASSWORD }} | |
| TYPESENSE_HOST: ${{ secrets.TYPESENSE_HOST }} | |
| TYPESENSE_PORT: ${{ secrets.TYPESENSE_PORT }} | |
| TYPESENSE_PROTOCOL: ${{ secrets.TYPESENSE_PROTOCOL }} | |
| TYPESENSE_ADMIN_KEY: ${{ secrets.TYPESENSE_ADMIN_KEY }} | |
| # Proxy provider — see src/shared/proxy.py. All three vars are | |
| # safe-empty: deploy.sh defaults PROXY_PROVIDER to "none" and | |
| # the proxy module treats empty URLs as a disabled provider. | |
| PROXY_PROVIDER: ${{ secrets.PROXY_PROVIDER }} | |
| WEBSHARE_PROXY_URL: ${{ secrets.WEBSHARE_PROXY_URL }} | |
| DECODO_PROXY_URL: ${{ secrets.DECODO_PROXY_URL }} | |
| # IndexNow notifier (see apps/crawler/src/indexnow.py). The | |
| # notifier short-circuits when INDEXNOW_KEY is empty, so | |
| # deploys without the secret run the loop as a no-op rather | |
| # than failing. | |
| INDEXNOW_KEY: ${{ secrets.INDEXNOW_KEY }} | |
| INDEXNOW_SITE_URL: ${{ secrets.INDEXNOW_SITE_URL }} | |
| INDEXNOW_KEY_URL: ${{ secrets.INDEXNOW_KEY_URL }} | |
| INDEXNOW_INTERVAL: ${{ secrets.INDEXNOW_INTERVAL }} |