Skip to content

Use static scrape targets in Alloy (Docker discovery doesn't work wit… #72

Use static scrape targets in Alloy (Docker discovery doesn't work wit…

Use static scrape targets in Alloy (Docker discovery doesn't work wit… #72

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@v4
- 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@v3
- name: Log in to GHCR
uses: docker/login-action@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@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@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@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@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
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 }}