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 run: | docker login ${{ env.REGISTRY }} \ --username adrien \ --password "${{ secrets.DOCKER_PASSWORD }}" # --- 1. BUILD & TEST BASE IMAGE --- - name: Build Base image run: | docker build \ -f ./images/base/dockerfile \ -t ${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }}:${{ github.ref_name }} \ ./images/base - name: Test Base image run: | docker run --rm \ -u root \ -v ${{ github.workspace }}:/tests \ -w /tests \ ${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }}:${{ github.ref_name }} \ python3 tests/base.py - name: Tag Base image as latest run: | docker tag ${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }}:${{ github.ref_name }} \ ${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }}:latest - name: Push Base image run: | docker push ${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }}:${{ github.ref_name }} docker push ${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }}:latest # --- 2. BUILD & TEST JUPYTER IMAGE --- - name: Build Jupyter image run: | docker build \ -f ./images/jupyter/dockerfile \ --build-arg BASE_IMAGE=${{ env.REGISTRY }}/${{ env.BASE_IMAGE_NAME }}:${{ github.ref_name }} \ -t ${{ env.REGISTRY }}/${{ env.JUPYTER_IMAGE_NAME }}:${{ github.ref_name }} \ ./images/jupyter - name: Test Jupyter dependencies run: | docker run --rm \ -v ${{ github.workspace }}/tests:/tests \ ${{ env.REGISTRY }}/${{ env.JUPYTER_IMAGE_NAME }}:${{ github.ref_name }} \ python3 /tests/dependencies.py - name: Tag Jupyter image as latest run: | docker tag ${{ env.REGISTRY }}/${{ env.JUPYTER_IMAGE_NAME }}:${{ github.ref_name }} \ ${{ env.REGISTRY }}/${{ env.JUPYTER_IMAGE_NAME }}:latest - name: Push Jupyter image run: | docker push ${{ env.REGISTRY }}/${{ env.JUPYTER_IMAGE_NAME }}:${{ github.ref_name }} docker push ${{ env.REGISTRY }}/${{ env.JUPYTER_IMAGE_NAME }}:latest