name: CD on: push: branches: [main] concurrency: group: deploy cancel-in-progress: false jobs: build-images: name: Build & Push Docker Images runs-on: ubuntu-latest permissions: contents: read packages: write strategy: matrix: app: [journal, planner] steps: - uses: actions/checkout@v6 - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - uses: docker/build-push-action@v6 with: context: . file: apps/${{ matrix.app }}/Dockerfile push: true tags: | ghcr.io/trails-cool/${{ matrix.app }}:latest ghcr.io/trails-cool/${{ matrix.app }}:${{ github.sha }} build-brouter: name: Build & Push BRouter Image runs-on: ubuntu-latest permissions: contents: read packages: write steps: - uses: actions/checkout@v6 - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - uses: docker/build-push-action@v6 with: context: docker/brouter push: true tags: | ghcr.io/trails-cool/brouter:latest ghcr.io/trails-cool/brouter:${{ github.sha }} # Deploy step - uncomment when Hetzner server is provisioned # deploy: # name: Deploy to Hetzner # needs: [build-images, build-brouter] # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v6 # - name: Deploy via SSH # uses: appleboy/ssh-action@v1 # with: # host: ${{ secrets.DEPLOY_HOST }} # username: root # key: ${{ secrets.DEPLOY_SSH_KEY }} # script: | # cd /opt/trails-cool # docker compose pull # docker compose up -d