name: Build & Publish Backend on: push: paths: - "api/**" - "frontend/**" - "telegram_bot/**" jobs: build: runs-on: ubuntu-latest steps: - name: Check out the repo uses: actions/checkout@v3 - name: Check changed directories uses: https://github.com/dorny/paths-filter@v2 id: changes with: filters: | api: - 'api/**' frontend: - 'frontend/**' telegram_bot: - 'telegram_bot/**' # Frontend - name: "[Frontend] Docker meta" if: steps.changes.outputs.frontend == 'true' id: frontend-meta uses: https://github.com/docker/metadata-action@v4 with: images: git.flokaiser.com/dhbw/aktienbot-frontend tags: | type=sha,enable=true,priority=100,prefix={{branch}}-,suffix=,format=short type=raw,value=latest,enable={{is_default_branch}} # API - name: "[API] Docker meta" if: steps.changes.outputs.api == 'true' id: api-meta uses: https://github.com/docker/metadata-action@v4 with: images: git.flokaiser.com/dhbw/aktienbot-api tags: | type=sha,enable=true,priority=100,prefix={{branch}}-,suffix=,format=short type=raw,value=latest,enable={{is_default_branch}} # Bot - name: "[Bot] Docker meta" if: steps.changes.outputs.telegram_bot == 'true' id: bot-meta uses: https://github.com/docker/metadata-action@v4 with: images: git.flokaiser.com/dhbw/aktienbot-bot tags: | type=sha,enable=true,priority=100,prefix={{branch}}-,suffix=,format=short type=raw,value=latest,enable={{is_default_branch}} - name: Get get-docker.sh run: curl -fsSL https://get.docker.com -o get-docker.sh - name: Install docker run: sh get-docker.sh - name: Login to Registry uses: docker/login-action@v2 with: registry: git.flokaiser.com username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 # Frontend - name: "[Frontend] Build and push" if: steps.changes.outputs.frontend == 'true' uses: docker/build-push-action@v4 with: file: Dockerfile context: "{{defaultContext}}:frontend" platforms: linux/amd64 push: true tags: ${{ steps.frontend-meta.outputs.tags }} # API - name: "[API] Build and push" if: steps.changes.outputs.api == 'true' uses: docker/build-push-action@v4 with: file: Dockerfile context: "{{defaultContext}}:api" platforms: linux/amd64 push: true tags: ${{ steps.api-meta.outputs.tags }} # Bot - name: "[Bot] Build and push" if: steps.changes.outputs.telegram_bot == 'true' uses: docker/build-push-action@v4 with: file: Dockerfile context: "{{defaultContext}}:telegram_bot" platforms: linux/amd64 push: true tags: ${{ steps.bot-meta.outputs.tags }}