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

Deploy extensions to Dockerhub; add draft purge script #4192

Merged
merged 13 commits into from
Sep 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 6 additions & 1 deletion .github/workflows/build-and-deploy-extension.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
echo "RELEASE_VERSION=v$(cat CMakeLists.txt | grep "DKUZU_EXTENSION_VERSION" | cut -d '"' -f 2 )" >> $GITHUB_ENV
- name: Delete checked out repository
run: cd .. && rm -rf kuzu
run: rm -rf ./*

- uses: actions/download-artifact@v4
with:
Expand Down Expand Up @@ -111,3 +111,8 @@ jobs:
path: |
releases
dataset
deploy-extensions:
needs: package-built-extensions
uses: ./.github/workflows/deploy-extension.yml
secrets: inherit
46 changes: 46 additions & 0 deletions .github/workflows/deploy-extension.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Deploy Extensions

on:
workflow_call:

jobs:
deploy-extensions:
runs-on: ubuntu-latest
steps:
- name: Free disk space on Ubuntu runner
uses: kfir4444/free-disk-space@main
with:
tool-cache: true
android: true
dotnet: true
haskell: true
large-packages: true
swap-storage: true

- uses: actions/checkout@v4

- name: Restructure directories
run: |
mv scripts/extension ../extension-scripts
rm -rf *
mv ../extension-scripts/* .
- uses: actions/download-artifact@v4
with:
name: kuzu-extensions

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

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: kuzudb/extension-repo:latest
11 changes: 11 additions & 0 deletions .github/workflows/purge-extension.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: Purge Extensions

on:
workflow_dispatch:

jobs:
get-dockerhub-extensions:
uses: ./.github/workflows/get-extensions-from-dockerhub.yml

# purge-extensions:
# needs: get-dockerhub-extensions
5 changes: 5 additions & 0 deletions scripts/extension/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM nginx:stable
COPY --chown=nginx:nginx ./releases /usr/share/nginx/html
COPY --chown=nginx:nginx ./dataset /usr/share/nginx/html/dataset
COPY nginx.conf /etc/nginx/nginx.conf
RUN rm /usr/share/nginx/html/index.html /usr/share/nginx/html/50x.html
5 changes: 5 additions & 0 deletions scripts/extension/PRODUCTION_RELEASES
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
v0.1.0
v0.3.0
v0.3.1
v0.5.0
v0.5.1.3
10 changes: 10 additions & 0 deletions scripts/extension/compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
version: '3'
services:
file-server:
image: kuzudb/extension-repo
pull_policy: always
ports:
- "8081:80"
restart: always
labels:
- com.centurylinklabs.watchtower.enable=true
32 changes: 32 additions & 0 deletions scripts/extension/nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
user nginx;
worker_processes auto;

error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;


events {
worker_connections 1024;
}

http {
expires 15552000s;
add_header Cache-Control "public, no-transform";
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;
autoindex on;
sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

gzip on;

include /etc/nginx/conf.d/*.conf;
}
33 changes: 33 additions & 0 deletions scripts/extension/purge-beta.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import pathlib
import os
from packaging.version import Version


RELEASES_PATH = pathlib.Path(__file__).parent.parent.joinpath('releases').resolve()

production_releases = open(RELEASES_PATH.joinpath('PRODUCTION_RELEASES')).read().splitlines()

releases_to_purge = [r for r in os.listdir(RELEASES_PATH) if r.startswith('v')]

releases_to_purge = [r for r in releases_to_purge if r not in production_releases]
releases_to_purge = [r[1:] for r in releases_to_purge]
releases_to_purge.sort(key=Version)

releases_to_purge.pop()

releases_to_purge = ['v' + r for r in releases_to_purge]

if len(releases_to_purge) == 0:
print('No releases to purge.')
exit(1)

print('Releases to purge:')
for r in releases_to_purge:
print(' ' + r)

for r in releases_to_purge:
path_to_purge = RELEASES_PATH.joinpath(r)
print('Deleting ' + str(path_to_purge))
os.system('rm -rf ' + str(path_to_purge))

print('Done.')