Skip to content

Commit

Permalink
renamed to "visionatrix", actions to push AMD/NVIDIA containers
Browse files Browse the repository at this point in the history
Signed-off-by: Alexander Piskun <[email protected]>
  • Loading branch information
bigcat88 committed Jul 4, 2024
1 parent 4bacc0c commit ed4b77d
Show file tree
Hide file tree
Showing 16 changed files with 381 additions and 49 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/analysis-coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Analysis & Coverage

on:
pull_request:
push:
branches: [main]

permissions:
contents: read

concurrency:
group: ana_cov-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
analysis:
runs-on: ubuntu-22.04
name: Analysis

steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"

- name: Install from source
run: |
python3 -m pip install -r requirements.txt
- name: Run Analysis
run: |
python3 -m pip install pylint
python3 -m pylint --recursive=y "ex_app/lib/"
164 changes: 164 additions & 0 deletions .github/workflows/appstore-build-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization

name: Build and publish app release

on:
release:
types: [published]

env:
PHP_VERSION: 8.1

jobs:
build_and_publish:
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'cloud-py-api' }}
steps:
- name: Check actor permission
uses: skjnldsv/check-actor-permission@e591dbfe838300c007028e1219ca82cc26e8d7c5 # v2.1
with:
require: write

- name: Set app env
run: |
# Split and keep last
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
with:
path: ${{ env.APP_NAME }}

- name: Get appinfo data
id: appinfo
uses: skjnldsv/xpath-action@7e6a7c379d0e9abc8acaef43df403ab4fc4f770c # master
with:
filename: ${{ env.APP_NAME }}/appinfo/info.xml
expression: "//info//dependencies//nextcloud/@min-version"

- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@1bdcee71fa343c46b18dc6aceffb4cd1e35209c6 # v1.2
id: versions
# Continue if no package.json
continue-on-error: true
with:
path: ${{ env.APP_NAME }}
fallbackNode: "^20"
fallbackNpm: "^8"

- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
# Skip if no package.json
if: ${{ steps.versions.outputs.npmVersion }}
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"

- name: Set up php ${{ env.PHP_VERSION }}
uses: shivammathur/setup-php@1a18b2267f80291a81ca1d33e7c851fe09e7dfc4 # v2
with:
php-version: ${{ env.PHP_VERSION }}
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Check composer.json
id: check_composer
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
with:
files: "${{ env.APP_NAME }}/composer.json"

- name: Install composer dependencies
if: steps.check_composer.outputs.files_exists == 'true'
run: |
cd ${{ env.APP_NAME }}
composer install --no-dev
- name: Build ${{ env.APP_NAME }}
# Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }}
run: |
cd ${{ env.APP_NAME }}
npm ci
npm run build
- name: Check Krankerl config
id: krankerl
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
with:
files: ${{ env.APP_NAME }}/krankerl.toml

- name: Install Krankerl
if: steps.krankerl.outputs.files_exists == 'true'
run: |
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
sudo dpkg -i krankerl_0.14.0_amd64.deb
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with krankerl
if: steps.krankerl.outputs.files_exists == 'true'
run: |
cd ${{ env.APP_NAME }}
krankerl package
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with makefile
if: steps.krankerl.outputs.files_exists != 'true'
run: |
cd ${{ env.APP_NAME }}
make appstore
- name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
continue-on-error: true
id: server-checkout
run: |
NCVERSION=${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
wget --quiet https://download.nextcloud.com/server/releases/latest-$NCVERSION.zip
unzip latest-$NCVERSION.zip
- name: Checkout server master fallback
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
if: ${{ steps.server-checkout.outcome != 'success' }}
with:
submodules: true
repository: nextcloud/server
path: nextcloud

- name: Sign app
run: |
# Extracting release
cd ${{ env.APP_NAME }}/build/artifacts
tar -xvf ${{ env.APP_NAME }}.tar.gz
cd ../../../
# Setting up keys
echo "${{ secrets.APP_PRIVATE_KEY }}" > ${{ env.APP_NAME }}.key
wget --quiet "https://github.com/nextcloud/app-certificate-requests/raw/master/${{ env.APP_NAME }}/${{ env.APP_NAME }}.crt"
# Signing
php nextcloud/occ integrity:sign-app --privateKey=../${{ env.APP_NAME }}.key --certificate=../${{ env.APP_NAME }}.crt --path=../${{ env.APP_NAME }}/build/artifacts/${{ env.APP_NAME }}
# Rebuilding archive
cd ${{ env.APP_NAME }}/build/artifacts
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
- name: Attach tarball to github release
uses: svenstaro/upload-release-action@133984371c30d34e38222a64855679a414cb7575 # v2
id: attach_to_release
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.APP_NAME }}/build/artifacts/${{ env.APP_NAME }}.tar.gz
asset_name: ${{ env.APP_NAME }}-${{ env.APP_VERSION }}.tar.gz
tag: ${{ github.ref }}
overwrite: true

- name: Upload app to Nextcloud appstore
uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1
with:
app_name: ${{ env.APP_NAME }}
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
download_url: ${{ steps.attach_to_release.outputs.browser_download_url }}
app_private_key: ${{ secrets.APP_PRIVATE_KEY }}
52 changes: 52 additions & 0 deletions .github/workflows/publish-docker-cuda.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Publish CUDA

on:
workflow_dispatch:

jobs:
push_to_registry:
name: Build image
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'cloud-py-api' }}
permissions:
packages: write
contents: read
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}

- name: Install xmlstarlet
run: sudo apt-get update && sudo apt-get install -y xmlstarlet

- name: Extract version from XML
id: extract_version
run: |
VERSION=$(xmlstarlet sel -t -v "//image-tag" appinfo/info.xml)
echo "VERSION=${VERSION}" >> $GITHUB_ENV
echo "Extracted version: ${{ VERSION }}"
- name: Build container image
uses: docker/build-push-action@v5
with:
push: true
context: .
platforms: linux/amd64
file: Dockerfile
tags: ghcr.io/cloud-py-api/visionatrix-nc-cuda:${{ env.VERSION }}
load: true
build-args: |
BUILD_TYPE=cuda
52 changes: 52 additions & 0 deletions .github/workflows/publish-docker-rocm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Publish ROCM

on:
workflow_dispatch:

jobs:
push_to_registry:
name: Build image
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'cloud-py-api' }}
permissions:
packages: write
contents: read
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}

- name: Install xmlstarlet
run: sudo apt-get update && sudo apt-get install -y xmlstarlet

- name: Extract version from XML
id: extract_version
run: |
VERSION=$(xmlstarlet sel -t -v "//image-tag" appinfo/info.xml)
echo "VERSION=${VERSION}" >> $GITHUB_ENV
echo "Extracted version: ${{ VERSION }}"
- name: Build container image
uses: docker/build-push-action@v5
with:
push: true
context: .
platforms: linux/amd64
file: Dockerfile
tags: ghcr.io/cloud-py-api/visionatrix-nc-rocm:${{ env.VERSION }}
load: true
build-args: |
BUILD_TYPE=cuda
19 changes: 19 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: 'Close stale issues'

on:
schedule:
- cron: '0 12 * * *'

jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
days-before-stale: 30
days-before-close: 5
days-before-pr-stale: -1
days-before-pr-close: -1
exempt-all-pr-assignees: true
repo-token: ${{ secrets.GITHUB_TOKEN }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,5 @@ local
.run/
.venv
venv
dev
Visionatrix
16 changes: 8 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,15 @@ ENV VIX_SERVER_FULL_MODELS "1"
RUN apt-get update && apt-get install -y git \
python3-dev python3-setuptools netcat-traditional \
libxml2-dev libxslt1-dev zlib1g-dev g++ \
ffmpeg libsm6 libxext6 lsb-release sudo wget procps nano
ffmpeg libsm6 libxext6 lsb-release sudo wget procps nano xmlstarlet

ARG VISIONATRIX_VERSION="v0.6.0"
COPY appinfo/info.xml /info.xml

RUN git clone https://github.com/Visionatrix/Visionatrix.git /Visionatrix && \
RUN VISIONATRIX_VERSION=$(xmlstarlet sel -t -v "//image-tag" /info.xml) && \
git clone https://github.com/Visionatrix/Visionatrix.git /Visionatrix && \
cd /Visionatrix && \
git checkout tags/$VISIONATRIX_VERSION
git checkout tags/v$VISIONATRIX_VERSION && \
rm /info.xml

RUN cd /Visionatrix && python3 -m venv venv && venv/bin/python -m pip install -U pip && rm -rf ~/.cache/pip

Expand Down Expand Up @@ -58,7 +60,7 @@ RUN cd /Visionatrix && \
rm -rf visionatrix/client && \
cd web && \
npm install && \
NUXT_APP_BASE_URL="/index.php/apps/app_api/proxy/vix/" npm run build && \
NUXT_APP_BASE_URL="/index.php/apps/app_api/proxy/visionatrix/" npm run build && \
cp -r .output/public ../visionatrix/client && \
rm -rf node_modules

Expand All @@ -85,6 +87,4 @@ WORKDIR /Visionatrix
CMD ["/bin/sh", \
"/ex_app_scripts/entrypoint.sh", \
"/ex_app/lib/main.py", \
"/Visionatrix/venv/bin/python -m visionatrix run --mode=SERVER --disable-smart-memory", \
"sleep10", \
"/Visionatrix/venv/bin/python -m visionatrix run --mode=WORKER --disable-smart-memory"]
"/ex_app_scripts/run_visionatrix.sh"]
Loading

0 comments on commit ed4b77d

Please sign in to comment.