name: Build & Deploy on: push: tags: - 'v*' jobs: deploy: runs-on: ubuntu-latest steps: # Intern klonen statt ueber die oeffentliche Domain: Gitea laeuft auf # demselben Host, der Weg ueber die oeffentliche IP findet nicht # zurueck (NAT-Hairpin). - uses: actions/checkout@v4 with: github-server-url: http://gitea:3000 - uses: actions/setup-python@v5 with: python-version: '3.12' - name: Abhaengigkeiten installieren run: pip install -r requirements-dev.txt - name: Tests run: pytest -q - name: Tag ermitteln run: echo "IMAGE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV # Ein einziges Repo-Secret DOTENV mit dem kompletten .env-Inhalt. # Ueber env: statt direkter Interpolation, damit Anfuehrungszeichen, # Backticks und $ in den Werten unangetastet bleiben. - name: .env aus Secret erzeugen env: DOTENV: ${{ secrets.DOTENV }} run: | if [ -z "$DOTENV" ]; then echo "Secret DOTENV ist leer oder nicht gesetzt." exit 1 fi umask 077 echo "$DOTENV" > .env - name: Deployen run: docker compose up -d --build --remove-orphans --wait --wait-timeout 300 - name: Alte Layer aufraeumen run: docker image prune -f