Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using CKAN Backports Repository for Building Images >2.9.11 #94

Merged
merged 79 commits into from
Aug 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
1cb8f03
Support dev extensions with pyproject.toml
roll Apr 19, 2024
92fcbdc
use while loop for restarting dev
wardi Apr 23, 2024
5295ef9
USE_DEBUGPY_FOR_DEV option
wardi Apr 24, 2024
1e2ff19
Merge pull request #49 from ckan/unsupervised-dev
kowh-ai Apr 26, 2024
bbb21fb
Merge pull request #50 from ckan/debugpy
kowh-ai Apr 26, 2024
0ca49f0
uninstall src packages found in src_extensions
wardi Apr 29, 2024
9dcf8e6
actually upgrade db
wardi Apr 29, 2024
074f208
Merge pull request #53 from ckan/upgrade-db
kowh-ai May 2, 2024
13ec9c5
Merge pull request #52 from ckan/uninstall-src
kowh-ai May 2, 2024
fa4fd00
Merge pull request #48 from roll/main
kowh-ai May 5, 2024
f01b028
CKAN 2.10 changes to use Python 3.10 (bookworm slim)
kowh-ai May 8, 2024
a45a8d9
CKAN 2.10 dev, master base and dev updates
kowh-ai May 10, 2024
43fe8c1
Update README
kowh-ai May 10, 2024
9ef9aa0
Cleanup
kowh-ai May 10, 2024
d8fa932
fix for master packaging uninstall error
wardi May 13, 2024
a994e05
Merge pull request #63 from ckan/packaging-uninstall
kowh-ai May 22, 2024
162d9c2
Bump version
kowh-ai May 27, 2024
3692a8b
Update CKAN listen address to ipv6 also
kowh-ai May 27, 2024
ecfb730
Updates to filenames, image names
kowh-ai Jun 5, 2024
98676f1
Update master build
kowh-ai Jun 10, 2024
eb53bfc
Merge branch 'main' into use-python-3.10-as-the-base-image
amercader Jun 17, 2024
3c64557
Update ckan-2.10/base/Dockerfile.py-3.10
kowh-ai Jun 18, 2024
b6f15c7
Update ckan-2.10/base/Dockerfile.py-3.10
kowh-ai Jun 18, 2024
eda22a1
Update ckan-2.10/base/Makefile
kowh-ai Jun 18, 2024
da3b464
Update ckan-2.10/base/Dockerfile.py-3.10
kowh-ai Jun 18, 2024
bf4cf05
Update Dockerfile name
kowh-ai Jun 18, 2024
bf0da16
Update Dev Dockerfile name
kowh-ai Jun 18, 2024
52eb392
Update Makefile
kowh-ai Jun 18, 2024
29f6757
Fix paths and syntax
amercader Jun 20, 2024
9cb0c89
Fix tags
amercader Jun 20, 2024
ed4d626
Fixes master
amercader Jun 20, 2024
7f7cd86
Couple more fixes for venv
amercader Jun 20, 2024
68ab9ee
Remove venv and change filenames to align with tag names
kowh-ai Jun 25, 2024
833f97d
cleanup
amercader Jun 26, 2024
537bc85
Tag master images with python version as well
amercader Jun 26, 2024
260271d
Fix check in prerun script, cleanups
amercader Jun 27, 2024
ae7c327
Merge branch 'use-python-3.10-as-the-base-image'
amercader Jun 27, 2024
29ac241
Fix warning
amercader Jun 27, 2024
d2c8517
Fix tag name
amercader Jun 27, 2024
8373a3c
Add CKAN 2.11 images
amercader Jun 27, 2024
49cbc7c
Push py3 tag variants
amercader Jun 27, 2024
a02b410
Update publish master action
amercader Jun 28, 2024
4e5c993
Use same entrypoint script in alpine and py3 images
amercader Jun 28, 2024
2a4b739
Sync 2.10 and master entrypoint scripts
amercader Jun 28, 2024
3abc0d8
Merge branch 'bump-datapusher-version' into main
amercader Jul 1, 2024
97eb0ad
Merge branch 'main' into simplify-files
amercader Jul 1, 2024
4da2d02
Merge branch 'main' into 2.11-images
amercader Jul 1, 2024
641a586
Merge pull request #70 from ckan/simplify-files
amercader Jul 1, 2024
cd70257
Merge branch 'main' into 2.11-images
amercader Jul 1, 2024
8ddb026
Sync entrypoint scripts
amercader Jul 1, 2024
23a48ba
Merge branch '2.11-images' into main
amercader Jul 1, 2024
f42a65c
Workaround to install webassets==0.12.1
amercader Jul 1, 2024
7ca2af3
Add Debian-based Python images for CKAN 2.9 as well
amercader Jul 1, 2024
f0ef529
Merge pull request #71 from ckan/2.9-py3.10
kowh-ai Jul 2, 2024
05c45cd
Update Dockerfile.py3.9
kowh-ai Jul 2, 2024
000daa5
Merge pull request #72 from ckan/update-dev-image-for-CKAN-2.9
amercader Jul 2, 2024
6c01835
Add CHANGELOG file
amercader Jul 2, 2024
7f88928
Consolidate use of CKAN_VERSION vs CKAN_TAG
amercader Jul 2, 2024
769e3e2
Add missing tags to README
amercader Jul 2, 2024
8ea8056
Update versions for 2.10.5 and 2.11.0 release
amercader Aug 21, 2024
854ec0d
No more who.ini in master
amercader Aug 21, 2024
ffa9b2a
Remove gevent system packages
amercader Aug 21, 2024
b69d2fd
Fix 2.11 dev base image
amercader Aug 22, 2024
fe30e32
Refactor Dockerfile for building images manually
mjanez Aug 26, 2024
9469401
Improve ckan-2.9
mjanez Aug 26, 2024
a9488be
Improve worflows to build alpine/python images
mjanez Aug 26, 2024
5e13e7f
Fix Dockerfile determination to use only the filename
mjanez Aug 26, 2024
b565bd0
Optimized Dockerfile for better performance and reduced image size
mjanez Aug 26, 2024
242346e
Fix tagging for Python files
mjanez Aug 26, 2024
baf940c
FIx image names
mjanez Aug 26, 2024
82dc24a
Refactor workflow to use dev image for testing
mjanez Aug 26, 2024
e71e646
Fix Dockerfiles 2.10 to using CKAN_VERSION
mjanez Aug 26, 2024
0a87f5b
Refactor Dockerfile workflow to improve image building process
mjanez Aug 26, 2024
3548fa7
Fix REPO_BRANCH in test Dockerfile
mjanez Aug 26, 2024
e062891
Improve workflows
mjanez Aug 26, 2024
cbc776f
Update ckan-2.9 and master
mjanez Aug 26, 2024
28dc58e
Merge branch 'main' of https://github.com/ckan/ckan-docker-base into …
mjanez Aug 26, 2024
2c36924
Refactor Dockerfile to support CKAN version 2.10.5
mjanez Aug 26, 2024
45c6271
Merge branch 'ckan-main' into ckan-2.10
mjanez Aug 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
234 changes: 234 additions & 0 deletions .github/workflows/docker-build.py.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
name: Build and push Python ckan-spatial images

on:
pull_request:
types:
- closed
branches:
- master
- 'ckan-*.*'
- '!ckan-main'
- '!dev/ckan-*.*.*'
- '!feature/*'
- '!fix/*'

env:
REGISTRY: ghcr.io
IMAGE_NAME: mjanez/ckan-spatial
CONTEXT: .
BRANCH: ${{ github.head_ref }}
DOCKERFILE: Dockerfile.py3.*

jobs:
build_and_push_base:
name: Build and push base image
runs-on: ubuntu-latest
outputs:
ckan_version: ${{ steps.extract_version.outputs.ckan_version }}
docker_labels: ${{ steps.meta.outputs.labels }}
docker_annotations: ${{ steps.meta.outputs.annotations }}
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Check out code
uses: actions/checkout@v4

- name: Determine Dockerfile
id: determine_dockerfile
run: |
if [[ "${{ env.DOCKERFILE }}" == "Dockerfile.py3.*" ]]; then
REAL_DOCKERFILE=$(find ./${{ env.BRANCH }}/base -name "Dockerfile.py3.*" | head -n 1)
REAL_DOCKERFILE_NAME=$(basename $REAL_DOCKERFILE)
echo "DOCKERFILE=${REAL_DOCKERFILE_NAME}" >> $GITHUB_ENV
else
echo "DOCKERFILE=${{ env.DOCKERFILE }}" >> $GITHUB_ENV
fi

- name: Extract CKAN_VERSION from base Dockerfile
id: extract_version
run: |
CKAN_VERSION=$(grep -oP '(?<=^ARG CKAN_VERSION=ckan-)[0-9]+\.[0-9]+\.[0-9]+' ./${{ env.BRANCH }}/base/${{ env.DOCKERFILE }})
echo "ckan_version=${CKAN_VERSION}" >> $GITHUB_OUTPUT

- name: Generate suffix tag
id: generate_suffix
run: |
if [ "${{ env.DOCKERFILE }}" = "Dockerfile" ]; then
echo "suffix_tag=" >> $GITHUB_OUTPUT
else
SUFFIX=$(echo ${{ env.DOCKERFILE }} | sed -E 's/Dockerfile\.py([0-9]+)\./py\1./')
echo "suffix_tag=-${SUFFIX}" >> $GITHUB_OUTPUT
fi

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-base
labels: |
org.opencontainers.image.documentation=https://github.com/${{ github.repository }}/blob/${{ env.BRANCH }}/README.md
org.opencontainers.image.version=${{ steps.extract_version.outputs.ckan_version }}
annotations: |
org.opencontainers.image.description=This image contains CKAN, an open-source data management system, along with its dependencies and configurations for spatial data support.
org.opencontainers.image.source=https://github.com/${{ github.repository }}

- name: Build and push base image
uses: docker/build-push-action@v6
with:
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-base:${{ steps.extract_version.outputs.ckan_version }}${{ steps.generate_suffix.outputs.suffix_tag }}
labels: ${{ steps.meta.outputs.labels }}
annotations: ${{ steps.meta.outputs.annotations }}
context: ${{ env.CONTEXT }}/${{ env.BRANCH }}/base
file: ${{ env.CONTEXT }}/${{ env.BRANCH }}/base/${{ env.DOCKERFILE }}

- name: Linting Dockerfile with hadolint in GH Actions
uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: ${{ env.CONTEXT }}/${{ env.BRANCH }}/base/${{ env.DOCKERFILE }}
no-fail: true

- name: Run Trivy container image vulnerability scanner
uses: aquasecurity/trivy-action@0.24.0
with:
image-ref: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-base:${{ steps.extract_version.outputs.ckan_version }}${{ steps.generate_suffix.outputs.suffix_tag }}
format: sarif
output: trivy-results-base.sarif

- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: trivy-results-base.sarif

build_and_push_dev:
name: Build and push development image from base
runs-on: ubuntu-latest
needs: build_and_push_base
env:
CKAN_VERSION: ${{ needs.build_and_push_base.outputs.ckan_version }}
DOCKER_LABELS: ${{ needs.build_and_push_base.outputs.docker_labels }}
DOCKER_ANNOTATIONS: ${{ needs.build_and_push_base.outputs.docker_annotations }}
steps:
- name: Check out code
uses: actions/checkout@v4

- name: Determine Dockerfile
id: determine_dockerfile
run: |
if [[ "${{ env.DOCKERFILE }}" == "Dockerfile.py3.*" ]]; then
REAL_DOCKERFILE=$(find ./${{ env.BRANCH }}/base -name "Dockerfile.py3.*" | head -n 1)
REAL_DOCKERFILE_NAME=$(basename $REAL_DOCKERFILE)
echo "DOCKERFILE=${REAL_DOCKERFILE_NAME}" >> $GITHUB_ENV
else
echo "DOCKERFILE=${{ env.DOCKERFILE }}" >> $GITHUB_ENV
fi

- name: Generate suffix tag
id: generate_suffix
run: |
if [ "${{ env.DOCKERFILE }}" = "Dockerfile" ]; then
echo "suffix_tag=" >> $GITHUB_OUTPUT
else
SUFFIX=$(echo ${{ env.DOCKERFILE }} | sed -E 's/Dockerfile\.py([0-9]+)\./py\1./')
echo "suffix_tag=-${SUFFIX}" >> $GITHUB_OUTPUT
fi

- name: Login to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push dev image
uses: docker/build-push-action@v6
with:
push: true
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-dev:${{ env.CKAN_VERSION }}${{ steps.generate_suffix.outputs.suffix_tag }}
labels: ${{ env.DOCKER_LABELS }}
annotations: ${{ env.DOCKER_ANNOTATIONS }}
context: ${{ env.CONTEXT }}/${{ env.BRANCH }}/dev
file: ${{ env.CONTEXT }}/${{ env.BRANCH }}/dev/${{ env.DOCKERFILE }}

- name: Linting Dockerfile with hadolint in GH Actions
uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: ${{ env.CONTEXT }}/${{ env.BRANCH }}/dev/${{ env.DOCKERFILE }}
no-fail: true

- name: Run Trivy container image vulnerability scanner
uses: aquasecurity/trivy-action@0.24.0
with:
image-ref: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-dev:${{ env.CKAN_VERSION }}${{ steps.generate_suffix.outputs.suffix_tag }}
format: sarif
output: trivy-results-dev.sarif

- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: trivy-results-dev.sarif

build_and_push_test:
name: Build and push test image from dev
runs-on: ubuntu-latest
needs: [build_and_push_base, build_and_push_dev]
env:
CKAN_VERSION: ${{ needs.build_and_push_base.outputs.ckan_version }}
DOCKER_LABELS: ${{ needs.build_and_push_base.outputs.docker_labels }}
DOCKER_ANNOTATIONS: ${{ needs.build_and_push_base.outputs.docker_annotations }}
steps:
- name: Check out code
uses: actions/checkout@v4

- name: Login to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push test image
uses: docker/build-push-action@v6
with:
push: true
# Test only use base Dockerfile
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-test:${{ env.CKAN_VERSION }}
labels: ${{ env.DOCKER_LABELS }}
annotations: ${{ env.DOCKER_ANNOTATIONS }}
context: ${{ env.CONTEXT }}/${{ env.BRANCH }}/test
# Test only use base Dockerfile
file: ${{ env.CONTEXT }}/${{ env.BRANCH }}/test/Dockerfile

- name: Linting Dockerfile with hadolint in GH Actions
uses: hadolint/hadolint-action@v3.1.0
with:
# Test only use base Dockerfile
dockerfile: ${{ env.CONTEXT }}/${{ env.BRANCH }}/test/Dockerfile
no-fail: true

- name: Run Trivy container image vulnerability scanner
uses: aquasecurity/trivy-action@0.24.0
with:
# Test only use base Dockerfile
image-ref: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-test:${{ env.CKAN_VERSION }}
format: sarif
output: trivy-results-test.sarif

- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: trivy-results-test.sarif
Loading