Skip to content

Commit

Permalink
add github actions to deploy docker on ghcr
Browse files Browse the repository at this point in the history
  • Loading branch information
yoann-apel authored and leavauchier committed Nov 13, 2024
1 parent 17cd6b5 commit 888d660
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 12 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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/[email protected]
Expand Down
83 changes: 83 additions & 0 deletions .github/workflows/cicd_deploy.yml
Original file line number Diff line number Diff line change
@@ -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 }}
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[submodule "data"]
path = data
url = git@github.com:IGNF/lidro-data.git
url = https://github.com/IGNF/lidro-data.git
48 changes: 41 additions & 7 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
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





18 changes: 15 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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}

0 comments on commit 888d660

Please sign in to comment.