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). Der Job-Container erreicht Gitea ueber das # Netz gitea-ci unter seinem Containernamen. - uses: actions/checkout@v4 with: github-server-url: http://gitea:3000 # --- Build & Tests: hier projektspezifisch anpassen --- # - uses: actions/setup-node@v4 # with: # node-version: '24' # - run: npm ci # - run: npm run build # - run: npm test # ------------------------------------------------------ - name: Tag ermitteln run: echo "IMAGE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV # Ein einziges Repo-Secret DOTENV mit dem kompletten .env-Inhalt # (mehrzeilig). 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 180 - name: Alte Layer aufraeumen run: docker image prune -f