name: CI on: push: branches: [main] pull_request: env: GO_VERSION: "1.23.12" GOPROXY: "https://goproxy.cn,direct" jobs: go: name: Go (api) runs-on: ubuntu-latest defaults: run: working-directory: api services: postgres: image: postgres:16-alpine env: POSTGRES_USER: opengoods POSTGRES_PASSWORD: opengoods POSTGRES_DB: opengoods options: >- --health-cmd "pg_isready -U opengoods" --health-interval 5s --health-timeout 5s --health-retries 10 env: OPENGOODS_DATABASE_URL: postgres://opengoods:opengoods@postgres:5432/opengoods?sslmode=disable steps: - name: Checkout working-directory: ${{ github.workspace }} run: | git config --global --add safe.directory '*' git init -q . git remote add origin "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" git -c protocol.version=2 fetch -q --no-tags --depth 1 origin "${GITHUB_REF}" git checkout -q --force FETCH_HEAD - name: Setup Go working-directory: ${{ github.workspace }} run: | curl -fsSL -o /tmp/go.tgz "https://mirrors.aliyun.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" rm -rf /usr/local/go tar -C /usr/local -xzf /tmp/go.tgz echo "/usr/local/go/bin" >> "$GITHUB_PATH" echo "$HOME/go/bin" >> "$GITHUB_PATH" - name: Apply migrations working-directory: . run: | go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.18.1 migrate -path migrations -database "$OPENGOODS_DATABASE_URL" up - name: Verify gofmt run: test -z "$(gofmt -l .)" - run: go vet ./... - run: go build ./... - run: go test ./... python: name: Python (ingestion) runs-on: ubuntu-latest container: image: nikolaik/python-nodejs:python3.12-nodejs20 defaults: run: working-directory: ingestion steps: - name: Checkout working-directory: ${{ github.workspace }} run: | git config --global --add safe.directory '*' git init -q . git remote add origin "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" git -c protocol.version=2 fetch -q --no-tags --depth 1 origin "${GITHUB_REF}" git checkout -q --force FETCH_HEAD - name: Install run: pip install -e ".[dev]" - name: Ruff lint run: ruff check . - name: Ruff format check run: ruff format --check . - name: Pytest run: pytest -q migrations: name: Migrations (postgres) runs-on: ubuntu-latest services: postgres: image: postgres:16-alpine env: POSTGRES_USER: opengoods POSTGRES_PASSWORD: opengoods POSTGRES_DB: opengoods options: >- --health-cmd "pg_isready -U opengoods" --health-interval 5s --health-timeout 5s --health-retries 10 env: DBURL: postgres://opengoods:opengoods@postgres:5432/opengoods?sslmode=disable steps: - name: Checkout working-directory: ${{ github.workspace }} run: | git config --global --add safe.directory '*' git init -q . git remote add origin "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" git -c protocol.version=2 fetch -q --no-tags --depth 1 origin "${GITHUB_REF}" git checkout -q --force FETCH_HEAD - name: Setup Go run: | curl -fsSL -o /tmp/go.tgz "https://mirrors.aliyun.com/golang/go${GO_VERSION}.linux-amd64.tar.gz" rm -rf /usr/local/go tar -C /usr/local -xzf /tmp/go.tgz echo "/usr/local/go/bin" >> "$GITHUB_PATH" echo "$HOME/go/bin" >> "$GITHUB_PATH" - name: Install golang-migrate run: go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@v4.18.1 - name: Migrate up run: migrate -path migrations -database "$DBURL" up - name: Migrate down (reversibility) run: migrate -path migrations -database "$DBURL" down -all