diff --git a/.gitea/python_build/python_dockerfile b/.gitea/python_build/python_dockerfile new file mode 100644 index 0000000..e8307ad --- /dev/null +++ b/.gitea/python_build/python_dockerfile @@ -0,0 +1,16 @@ +FROM gitea.tryton.geeraert.eu/pi-ux-ce/python:3 + +ENV PYTHONUNBUFFERED 1 + +WORKDIR /code/ + +# Copy only the requirements file first (Changes infrequently) +COPY requirements.txt ./ + + +RUN --mount=type=cache,target=/root/.cache/pip pip install --upgrade pip +RUN --mount=type=cache,target=/root/.cache/pip pip list --outdated +RUN --mount=type=cache,target=/root/.cache/pip pip install --upgrade wheel +RUN --mount=type=cache,target=/root/.cache/pip pip install --upgrade setuptools +RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt + diff --git a/.gitea/workflows/dockerfile_runner.yaml b/.gitea/workflows/dockerfile_runner.yaml index dc72aea..b4e2fde 100644 --- a/.gitea/workflows/dockerfile_runner.yaml +++ b/.gitea/workflows/dockerfile_runner.yaml @@ -29,7 +29,7 @@ jobs: - uses: actions/cache@v3 with: - path: ~/.cache/pip + path: /root/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} restore-keys: | ${{ runner.os }}-pip- diff --git a/.gitea/workflows/python_runner.yaml b/.gitea/workflows/python_runner.yaml new file mode 100644 index 0000000..7a522a0 --- /dev/null +++ b/.gitea/workflows/python_runner.yaml @@ -0,0 +1,71 @@ +name: Gitea Actions Demo +run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀 +on: + push: + paths: + - 'requirements.txt' + issue_comment: + types: [created] + +jobs: + Explore-Gitea-Actions: + runs-on: ubuntu-latest + steps: + - run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}." + - name: Check out repository code + uses: actions/checkout@v4 + - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner." + - name: List files in the repository + run: | + ls ${{ gitea.workspace }} + + - name: Compute next version + id: versioning + run: | + latest="${{ vars.PYTHON_VERSION }}" + next_version=$(echo "$latest" | awk -F. -v OFS=. '{$NF += 1 ; print}') + echo "next_version=$next_version" >> $GITHUB_ENV + echo "Variables used :" + echo "------------------------------------------------" + echo "Next version: $next_version" + + - uses: actions/cache@v3 + with: + path: /root/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + + + - name: inject cache into docker + uses: reproducible-containers/buildkit-cache-dance@v3.1.0 + with: + cache-source: /root/.cache/pip + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to gitea + uses: docker/login-action@v3 + with: + registry: gitea.tryton.geeraert.eu + username: ${{ secrets.USERNAME_GITEA }} + password: ${{ secrets.PASSWORD_GITEA }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: "{{defaultContext}}:python_build" + push: true + tags: | + gitea.tryton.geeraert.eu/pi-ux-ce/modified-python:latest + gitea.tryton.geeraert.eu/pi-ux-ce/modified-python:${{ env.next_version }} + cache-from: type=registry,ref=gitea.tryton.geeraert.eu/pi-ux-ce/modified-python:buildcache + cache-to: type=registry,ref=gitea.tryton.geeraert.eu/pi-ux-ce/modified-python:buildcache,mode=max + + - name: update version in the variable + run: | + curl -X PUT -H "Content-Type: application/json" \ + --user ${{ secrets.USERNAME_GITEA }}:${{ secrets.PASSWORD_GITEA }} \ + https://gitea.tryton.geeraert.eu/api/v1/repos/pi-ux-ce/${{ github.event.repository.name }}/actions/variables/PYTHON_VERSION \ + -d "{\"Value\":\"$next_version\"}" \ No newline at end of file diff --git a/dockerfile b/dockerfile index 0354841..7285ee2 100644 --- a/dockerfile +++ b/dockerfile @@ -14,6 +14,7 @@ RUN --mount=type=cache,target=/root/.cache/pip pip install --upgrade wheel RUN --mount=type=cache,target=/root/.cache/pip pip install --upgrade setuptools RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt + # Copy the rest of your application code (Changes frequently, invalidates subsequent cache) COPY . ./ RUN python django_code/manage.py migrate