bump version + finish UV article
All checks were successful
Build Blog Docker Image / build docker (push) Successful in 1m6s
All checks were successful
Build Blog Docker Image / build docker (push) Successful in 1m6s
This commit is contained in:
parent
a4e31c49c7
commit
a5e23468a3
@ -1,31 +1,31 @@
|
||||
name: Build Hugo Docker Image
|
||||
# name: Build Hugo Docker Image
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- "hugo.Dockerfile"
|
||||
# on:
|
||||
# push:
|
||||
# paths:
|
||||
# - "hugo.Dockerfile"
|
||||
|
||||
jobs:
|
||||
build docker:
|
||||
runs-on: linux_amd
|
||||
steps:
|
||||
- name: checkout code
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
- name: Login to Docker registry
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
registry: git.d3vyce.fr
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GIT_TOKEN }}
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
file: ./hugo.Dockerfile
|
||||
platforms: linux/amd64
|
||||
push: true
|
||||
tags: git.d3vyce.fr/d3vyce/hugo:latest
|
||||
# jobs:
|
||||
# build docker:
|
||||
# runs-on: linux_amd
|
||||
# steps:
|
||||
# - name: checkout code
|
||||
# uses: actions/checkout@v3
|
||||
# - name: Set up QEMU
|
||||
# uses: docker/setup-qemu-action@v2
|
||||
# - name: Set up Docker Buildx
|
||||
# uses: docker/setup-buildx-action@v2
|
||||
# - name: Login to Docker registry
|
||||
# uses: docker/login-action@v2
|
||||
# with:
|
||||
# registry: git.d3vyce.fr
|
||||
# username: ${{ github.actor }}
|
||||
# password: ${{ secrets.GIT_TOKEN }}
|
||||
# - name: Build and push
|
||||
# uses: docker/build-push-action@v4
|
||||
# with:
|
||||
# context: .
|
||||
# file: ./hugo.Dockerfile
|
||||
# platforms: linux/amd64
|
||||
# push: true
|
||||
# tags: git.d3vyce.fr/d3vyce/hugo:latest
|
||||
|
@ -5,7 +5,7 @@ WORKDIR /opt/blog
|
||||
COPY . /opt/blog/
|
||||
|
||||
RUN git submodule update --init --recursive && \
|
||||
git -C themes/blowfish/ checkout v2.58.0
|
||||
git -C themes/blowfish/ checkout v2.59.0
|
||||
RUN hugo
|
||||
|
||||
# Publish Stage
|
||||
|
@ -39,7 +39,7 @@ smartTOCHideUnfocusedChildren = false
|
||||
layout = "custom" # valid options: page, profile, hero, card, background, custom
|
||||
homepageImage = "img/ocean.webp" # used in: hero, and card
|
||||
showRecent = true
|
||||
showRecentItems = 9
|
||||
showRecentItems = 6
|
||||
showMoreLink = true
|
||||
showMoreLinkDest = "/posts"
|
||||
cardView = true
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: "Authelia : a selfhosted SSO"
|
||||
date: 2022-04-10
|
||||
slug: "authelia-selfhosted-sso"
|
||||
tags: ["authentication", "docker", "sso", "tools"]
|
||||
tags: ["authentication", "docker", "SSO", "tools"]
|
||||
type: "security"
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: "How to host multiple services on one public IP ?"
|
||||
date: 2022-02-28
|
||||
slug: "how-to-host-multiple-services-on-one-public-ip"
|
||||
tags: ["ddns", "docker", "network", "reverse proxy"]
|
||||
tags: ["DDNS", "docker", "network", "reverse proxy"]
|
||||
type: "infrastructure"
|
||||
---
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: "Migrate from Ghost to Hugo"
|
||||
date: 2024-02-24
|
||||
slug: "migrate-from-ghost-to-hugo"
|
||||
tags: ["ci/cd", "docker", "git", "hugo"]
|
||||
tags: ["CI/CD", "docker", "git", "hugo"]
|
||||
type: "programming"
|
||||
---
|
||||
|
||||
|
@ -1,17 +1,33 @@
|
||||
---
|
||||
title: "UV the new python package installer written in Rust"
|
||||
date: 2024-02-23
|
||||
draft: true
|
||||
date: 2024-02-25
|
||||
slug: "uv-the-new-python-package-installer-written-in-rust"
|
||||
tags: ["ci/cd", "docker", "python", "tools"]
|
||||
tags: ["CI/CD", "docker", "python", "tools"]
|
||||
type: "programming"
|
||||
---
|
||||
|
||||
## Overview
|
||||
[UV](https://astral.sh/blog/uv) is Team Astral's new tool. It's written in Rust and aims to replace `pip` and `pip-tools`, all with extreme speed.
|
||||
|
||||
After the publication of [Ruff](https://astral.sh/ruff), the team continues with the aim of creating a "Cargo for Python" with this new publication.
|
||||
|
||||
UV can be installed in several ways (with pip or standalone) and is compatible with Linux, Windows and macOS. I installed it with the following command:
|
||||
```bash
|
||||
pip install uv
|
||||
```
|
||||
|
||||
To use it, simply use the `uv` prefix and then one of the following commands:
|
||||
```bash
|
||||
# Basic command like install, uninstall, freeze, sync, compile
|
||||
uv pip
|
||||
# Create a VENV
|
||||
uv venv
|
||||
# Clean cache or show cache directory
|
||||
uv cache
|
||||
```
|
||||
|
||||
## UV benchmark
|
||||
Let's compare UV and VENV/PIP to see how this new solution performs: according to the creators, UV should be around 80x faster than `python -m venv` and 7x faster than `virtualenv`.
|
||||
Let's compare UV and VENV/PIP to see how this new solution performs. According to the creators, UV should be around 80x faster than `python -m venv` and 7x faster than `virtualenv`.
|
||||
|
||||
After creating virtual environments with these different tools, I was able to obtain the following results:
|
||||
|
||||
@ -76,8 +92,7 @@ options: {
|
||||
For packet insertion I find that UV is ~5x faster than pip and ~33x faster then `pip` with the UV cache.
|
||||
|
||||
## Docker image for CI/CD
|
||||
UV
|
||||
|
||||
Now let's try to integrate it into our CIs. To do this, I'll create a modified python image that I'll then use in my various workflows.
|
||||
```dockerfile
|
||||
FROM python:3.11-slim
|
||||
|
||||
@ -91,6 +106,9 @@ ENV VIRTUAL_ENV /.venv
|
||||
ENV PATH /.venv/bin:$PATH
|
||||
```
|
||||
|
||||
The Dockerfile is quite simple, I base it on a python 3.11 image, upgrade pip, then install UV. I then create a venv with UV, and activate it. Finally, I install the packets I need for my workflows.
|
||||
|
||||
Finally, I set the environment variables `VIRTUAL_ENV` and `PATH`. This allows me to be directly in the venv when using the image. I then build the image and check that it works correctly:
|
||||
```bash
|
||||
debian@debian:~/dev/images$ docker build -t uv_python .
|
||||
[...]
|
||||
@ -109,6 +127,9 @@ Type "help", "copyright", "credits" or "license" for more information.
|
||||
>>>
|
||||
```
|
||||
|
||||
After building and testing the image with a docker run, I can confirm that the image works correctly and is usable in my various CIs.
|
||||
|
||||
In addition to this image, we can set the cache for UV in Workflow. For Gitlab, I use the following configuration:
|
||||
```yml
|
||||
[...]
|
||||
variables:
|
||||
@ -120,3 +141,16 @@ cache:
|
||||
- $CI_PROJECT_DIR/.cache/uv
|
||||
[...]
|
||||
```
|
||||
|
||||
After a few, I've noticed that the cache can be useful in some situations (especially if you have a very good machine) but can also slow down the CI in others. In some situations, UV is faster than Gitlab's cache compression/decompression. In particular, I've seen it slow down runners using HDDs.
|
||||
|
||||
I suggest you test with and without to see which is faster.
|
||||
|
||||
## Conclusion
|
||||
|
||||
UV is a very promising tool, in line with what Team Astral has to offer. In my opinion, it can already be deployed in production, and therefore saves a great amont of time, especially for repeat installations (e.g. CI). The speed of this tool even calls into question some current time-saving options, such as the CI cache.
|
||||
|
||||
It's worth noting that, despite the objective of being a "drop-in replacement for pip", it currently lacks features that could be blocking in certain situations:
|
||||
- No --trusted-host option ([#1339](https://github.com/astral-sh/uv/issues/1339))
|
||||
- No installation without venv ([#1374](https://github.com/astral-sh/uv/issues/1374))
|
||||
- etc.
|
||||
|
@ -7,7 +7,7 @@ showWordCount: false
|
||||
showReadingTime: false
|
||||
showRelatedContent: false
|
||||
showPagination: false
|
||||
tags: ["bootstrap", "css3", "html5", "javascript"]
|
||||
tags: ["bootstrap", "CSS3", "HTML5", "javascript"]
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
@ -8,5 +8,5 @@ showWordCount: false
|
||||
showReadingTime: false
|
||||
showRelatedContent: false
|
||||
showPagination: false
|
||||
tags: ["docker", "flask", "python", "sql"]
|
||||
tags: ["docker", "flask", "python", "SQL"]
|
||||
---
|
||||
|
@ -7,4 +7,4 @@ ENV GO111MODULE=on
|
||||
|
||||
RUN apk update && \
|
||||
apk add --no-cache gcc musl-dev g++ git
|
||||
RUN go install -tags extended github.com/gohugoio/hugo@v0.123.3
|
||||
RUN go install -tags extended github.com/gohugoio/hugo@v0.123.6
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit f2b934c8f471fa2bf31bcf4efe08be244d363e6f
|
||||
Subproject commit 984320d0ef70f22d34f552c501600c434937f1d2
|
Loading…
x
Reference in New Issue
Block a user