Skip to content

Commit

Permalink
Deploy extensions to Dockerhub; add draft purge script (kuzudb#4192)
Browse files Browse the repository at this point in the history
(cherry picked from commit 40dadb8)
  • Loading branch information
mewim authored and wangqiang committed Sep 26, 2024
1 parent b9f3d89 commit 0cd5dc6
Show file tree
Hide file tree
Showing 8 changed files with 148 additions and 1 deletion.
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.')

0 comments on commit 0cd5dc6

Please sign in to comment.