name: Build and Push Docker Images on: push: tags: - '*.*.*' env: REGISTRY: registry.bouvais.lu BASE_IMAGE_NAME: tenant/base JUPYTER_IMAGE_NAME: tenant/jupyter jobs: build-and-push: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Log in to the Container registry uses: docker/login-action@v3 with: registry: registry.bouvais.lu username: adrien password: ${{ secrets.DOCKER_PASSWORD }} # --- 1. BUILD & TEST BASE IMAGE --- - name: Extract metadata for Base id: meta-base uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }} tags: | type=raw,value=latest,enable={{is_default_branch}} type=ref,event=branch type=sha,format=short type=semver,pattern={{version}} - name: Build Base image (Local) uses: docker/build-push-action@v5 with: context: ./images/base file: ./images/base/dockerfile load: true tags: ${{ steps.meta-base.outputs.tags }} labels: ${{ steps.meta-base.outputs.labels }} - name: Test Base image run: | docker run --rm \ -v ${{ github.workspace }}/tests:/tests \ ${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }}:${{ steps.meta-base.outputs.version }} \ python3 /tests/base.py - name: Push Base image uses: docker/build-push-action@v5 with: context: ./images/base file: ./images/base/dockerfile push: true tags: ${{ steps.meta-base.outputs.tags }} labels: ${{ steps.meta-base.outputs.labels }} # --- 2. BUILD & TEST JUPYTER IMAGE --- - name: Extract metadata for Jupyter id: meta-jupyter uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY }}/${{ env.JUPYTER_IMAGE_NAME }} tags: | type=raw,value=latest,enable={{is_default_branch}} type=ref,event=branch type=sha,format=short type=semver,pattern={{version}} - name: Build Jupyter image (Local) uses: docker/build-push-action@v5 with: context: ./images/jupyter file: ./images/jupyter/dockerfile load: true build-args: | BASE_IMAGE=${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }}:${{ steps.meta-base.outputs.version }} tags: ${{ steps.meta-jupyter.outputs.tags }} labels: ${{ steps.meta-jupyter.outputs.labels }} - name: Test Jupyter dependencies run: | docker run --rm \ -v ${{ github.workspace }}/tests:/tests \ ${{ env.REGISTRY }}/${{ env.JUPYTER_IMAGE_NAME }}:${{ steps.meta-base.outputs.version }} \ python3 /tests/dependencies.py - name: Push Jupyter image uses: docker/build-push-action@v5 with: context: ./images/jupyter file: ./images/jupyter/dockerfile push: true build-args: | BASE_IMAGE=${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }}:${{ steps.meta-base.outputs.version }} tags: ${{ steps.meta-jupyter.outputs.tags }} labels: ${{ steps.meta-jupyter.outputs.labels }}