diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 21b7395a..84b0ccb3 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -18,7 +18,8 @@ jobs: uses: actions/checkout@v4 with: submodules: recursive - token: ${{ secrets.PAT_TOKEN }} + token: ${{ secrets.GHCR_TOKEN }} + #fetch-depth: 1 # See https://github.com/marketplace/actions/setup-micromamba - name: Install conda env uses: mamba-org/setup-micromamba@v1.8.1 diff --git a/.github/workflows/cicd_deploy.yml b/.github/workflows/cicd_deploy.yml new file mode 100644 index 00000000..8a0454d1 --- /dev/null +++ b/.github/workflows/cicd_deploy.yml @@ -0,0 +1,83 @@ +name: cicd_deploy + +on: + pull_request: + branches: + - main + - dev + +env: + IMAGE_NAME: ${{ github.repository }} + REGISTRY: ghcr.io + DOCKER_IMAGE_NAME: lidro + TEST_TAG: lidro:test + +jobs: + deploy_docker: + runs-on: ubuntu-latest + + steps: + - name: Checkout branch + uses: actions/checkout@v4 + with: + submodules: recursive + token: ${{ secrets.GHCR_TOKEN }} + # build the image + - name: Build Docker image for tests + id: build + uses: docker/build-push-action@v5 + with: + load: true + tags: ${{ env.TEST_TAG }} + + - name: Run tests in docker + run: > + docker run + --ipc=host + ${{ env.TEST_TAG }} + python -m pytest -m docker -s --log-cli-level DEBUG + + - name: Set version number + run: | + echo "VERSION=v$(python -m lidro.version)" >> $GITHUB_ENV + + - name: Check tag and version number consistency + if: ${{ github.event_name == 'tag' }} + run: | + if [[ ${{ github.ref_name }} == ${{ env.VERSION }} ]] + then + echo "OK: Tag name and VERSION.md (${{ env.VERSION }}) version number (${{ github.ref_name }}) match" + else + echo "NOK: Tag name and VERSION.md (${{ env.VERSION }}) version number (${{ github.ref_name }}) don't match" + exit 1 + fi + + # Login against a Docker registry except on PR + # https://github.com/docker/login-action + - name: Log into registry ${{ env.REGISTRY }} + if: github.event_name != 'pull_request' + uses: docker/login-action@v2 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GHCR_TOKEN }} + + # Extract metadata (tags, labels) for Docker + # https://github.com/docker/metadata-action + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + # Build and push Docker image with Buildx (don't on PR) + # https://github.com/docker/build-push-action + - name: Build and push Docker image + id: build-and-push + if: ${{ github.event_name != 'pull_request' }} + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index ca441591..938af87f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "data"] path = data - url = git@github.com:IGNF/lidro-data.git + url = https://github.com/IGNF/lidro-data.git diff --git a/Dockerfile b/Dockerfile index 54970eec..306d28fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,18 +2,52 @@ FROM mambaorg/micromamba:latest USER root + +# # Install Git to enable submodule sync/update commands +# RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* + WORKDIR /lidro -# # Set up the Conda environment: cf https://github.com/mamba-org/micromamba-docker -COPY environment.yml /tmp/env.yaml -COPY requirements.txt /tmp/requirements.txt -RUN chown $MAMBA_USER:$MAMBA_USER /tmp/env.yaml -RUN micromamba install -y -n base -f /tmp/env.yaml && \ + +# # Create directories +RUN mkdir tmp + +COPY . . + +RUN chown $MAMBA_USER:$MAMBA_USER environment.yml +RUN micromamba install -y -n base -f environment.yml && \ micromamba clean --all --yes + +# # # Set up the Conda environment: cf https://github.com/mamba-org/micromamba-docker +# COPY environment.yml /tmp/env.yaml +# COPY requirements.txt /tmp/requirements.txt +# RUN chown $MAMBA_USER:$MAMBA_USER /tmp/env.yaml +# RUN micromamba install -y -n base -f /tmp/env.yaml && \ +# micromamba clean --all --yes + +# # Copy the application files +# COPY lidro lidro +# COPY configs configs + + +# Set environment variables ENV ENV=base ARG MAMBA_DOCKERFILE_ACTIVATE=1 -COPY lidro lidro -COPY configs configs \ No newline at end of file +RUN mkdir tmp data + +# Use ARG to pass the authentication token +ARG GIT_AUTH_TOKEN + +# Configure Git to use the token in the submodule URLs +RUN git config --global url."https://${GIT_AUTH_TOKEN}@github.com/".insteadOf "https://github.com/" + +# Initialize and update submodules +RUN git submodule update --init --recursive + + + + + diff --git a/Makefile b/Makefile index 49748893..676546be 100644 --- a/Makefile +++ b/Makefile @@ -21,12 +21,24 @@ mamba-env-update: # Docker ############################## -PROJECT_NAME=lidar_hd/lidro +REGISTRY=ghcr.io +IMAGE_NAME=lidro +NAMESPACE=ignf VERSION=`python -m lidro._version` +FULL_IMAGE_NAME=${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}:${VERSION} + docker-build: - docker build -t ${PROJECT_NAME}:${VERSION} -f Dockerfile . + docker build --no-cache -t ${IMAGE_NAME}:${VERSION} -f Dockerfile . + +docker-test: + docker run --rm -it ${IMAGE_NAME}:${VERSION} python -m pytest -s docker-remove: - docker rmi -f `docker images | grep ${PROJECT_NAME} | tr -s ' ' | cut -d ' ' -f 3` + docker rmi -f `docker images | grep ${IMAGE_NAME} | tr -s ' ' | cut -d ' ' -f 3` docker rmi -f `docker images -f "dangling=true" -q` + +docker-deploy: + docker tag ${IMAGE_NAME}:${VERSION} ${FULL_IMAGE_NAME} + docker push ${FULL_IMAGE_NAME} + diff --git a/data b/data index 031c3315..2ae2dfcc 160000 --- a/data +++ b/data @@ -1 +1 @@ -Subproject commit 031c3315127a9c972d622779a25aed3274789fa4 +Subproject commit 2ae2dfcc4fd4f5e89c4510c49fd4e6676e247421