name: Publish on: push: tags: - "*.*.*" paths: - "tdrive/backend/node/**" - "tdrive/frontend/**" - "tdrive/connectors/onlyoffice-connector/**" - "tdrive/backend/utils/ldap-sync/**" - "tdrive/backend/utils/nextcloud-migration/**" - "tdrive/docker/**" jobs: setup: name: Setup jobs runs-on: ubuntu-latest outputs: targets: ${{ steps.filter.outputs.changes }} steps: - uses: actions/checkout@v4 - uses: dorny/paths-filter@v3 id: filter with: filters: | backend: - "tdrive/backend/node/**" frontend: - "tdrive/frontend/**" onlyoffice-connector: - "tdrive/connectors/onlyoffice-connector/**" ldap-sync: - "tdrive/backend/utils/ldap-sync/**" nextcloud-migration: - "tdrive/backend/utils/nextcloud-migration/**" publish: runs-on: ubuntu-latest strategy: matrix: targets: ${{ fromJSON(needs.setup.outputs.targets) }} fail-fast: false needs: - setup steps: - name: Checkout uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Docker meta id: meta uses: docker/metadata-action@v5 with: tags: | type=semver,pattern={{version}} type=semver,pattern={{major}} type=semver,pattern={{major}}.{{minor}} type=raw,value=latest,enable={{is_default_branch}} - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to Linagora Registry uses: docker/login-action@v3 with: registry: docker-registry.linagora.com username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and push uses: docker/bake-action@v4 with: files: | ./docker-bake.hcl ${{ steps.meta.outputs.bake-file-annotations }} ${{ steps.meta.outputs.bake-file }} push: true targets: ${{ matrix.targets }} set: | _common.cache-to=type=gha,mode=max _common.cache-from=type=gha