name: Release Integration on: workflow_dispatch: push: branches: - main jobs: release-integration: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - uses: actions/setup-node@v4 with: node-version: "22" - name: Configure SSH for release dependencies env: GOVOPLAN_RELEASE_SSH_KEY_B64: ${{ secrets.GOVOPLAN_RELEASE_SSH_KEY_B64 }} run: | mkdir -p ~/.ssh chmod 700 ~/.ssh if [ -z "${GOVOPLAN_RELEASE_SSH_KEY_B64:-}" ]; then echo "GOVOPLAN_RELEASE_SSH_KEY_B64 secret is required for git+ssh release dependencies." exit 1 fi printf '%s' "$GOVOPLAN_RELEASE_SSH_KEY_B64" | base64 -d > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 echo 'git.add-ideas.de ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDe48IOof2fJS1dTbJtLWQnWnr+JorZXKIFdOAM9ct8G' > ~/.ssh/known_hosts chmod 600 ~/.ssh/known_hosts - name: Install backend release integration dependencies run: | python -m venv .venv .venv/bin/python -m pip install --upgrade pip .venv/bin/python -m pip install -r requirements-release.txt .venv/bin/python -m pip install '.[dev]' - name: Install WebUI release dependencies working-directory: webui run: | node -e "const fs=require('fs'); const pkg=JSON.parse(fs.readFileSync('package.json')); const rel=JSON.parse(fs.readFileSync('package.release.json')); for (const key of ['dependencies','devDependencies','peerDependencies','optionalDependencies','overrides']) if (rel[key]) pkg[key]=rel[key]; fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');" rm -f package-lock.json npm cache clean --force for attempt in 1 2 3; do if npm install --prefer-online; then break fi status=$? if [ "$attempt" = 3 ]; then exit "$status" fi sleep $((attempt * 10)) npm cache clean --force done - name: Run release integration checks run: bash scripts/check-release-integration.sh