name: Build and Push Docker Images on: push: branches: - main tags: - 'v*.*.*' env: REGISTRY: git.benoitsz.com IMAGE_BACKEND: audio-classifier-backend IMAGE_FRONTEND: audio-classifier-frontend jobs: build-backend: name: Build Backend Image runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Gitea Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ gitea.actor }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Determine version id: version run: | if [[ "${{ gitea.ref }}" == refs/tags/v* ]]; then echo "VERSION=${GITEA_REF#refs/tags/}" >> $GITHUB_OUTPUT else echo "VERSION=dev-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT fi - name: Extract metadata id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ gitea.repository_owner }}/${{ env.IMAGE_BACKEND }} tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=raw,value=latest,enable=${{ startsWith(gitea.ref, 'refs/tags/v') }} type=raw,value=dev,enable=${{ gitea.ref == 'refs/heads/main' }} type=sha,prefix=dev-,format=short,enable=${{ gitea.ref == 'refs/heads/main' }} - name: Build and push backend uses: docker/build-push-action@v5 with: context: . file: ./backend/Dockerfile push: true build-args: | VERSION=${{ steps.version.outputs.VERSION }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ gitea.repository_owner }}/${{ env.IMAGE_BACKEND }}:buildcache cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ gitea.repository_owner }}/${{ env.IMAGE_BACKEND }}:buildcache,mode=max build-frontend: name: Build Frontend Image runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Gitea Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ gitea.actor }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Determine version id: version run: | if [[ "${{ gitea.ref }}" == refs/tags/v* ]]; then echo "VERSION=${GITEA_REF#refs/tags/}" >> $GITHUB_OUTPUT else echo "VERSION=dev-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT fi - name: Extract metadata id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ gitea.repository_owner }}/${{ env.IMAGE_FRONTEND }} tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=raw,value=latest,enable=${{ startsWith(gitea.ref, 'refs/tags/v') }} type=raw,value=dev,enable=${{ gitea.ref == 'refs/heads/main' }} type=sha,prefix=dev-,format=short,enable=${{ gitea.ref == 'refs/heads/main' }} - name: Build and push frontend uses: docker/build-push-action@v5 with: context: . file: ./frontend/Dockerfile push: true build-args: | VERSION=${{ steps.version.outputs.VERSION }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ gitea.repository_owner }}/${{ env.IMAGE_FRONTEND }}:buildcache cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ gitea.repository_owner }}/${{ env.IMAGE_FRONTEND }}:buildcache,mode=max