Add playable tracks to gitpod

environments/review-docs-devel-1399dq/deployments/12466
Kasper Seweryn 2022-07-03 08:45:36 +00:00 zatwierdzone przez Georg Krause
rodzic f7952dd023
commit e4cc242232
6 zmienionych plików z 108 dodań i 17 usunięć

Wyświetl plik

@ -1,4 +1,4 @@
DJANGO_ALLOWED_HOSTS=.funkwhale.test,localhost,nginx,0.0.0.0,127.0.0.1
DJANGO_ALLOWED_HOSTS=.funkwhale.test,localhost,nginx,0.0.0.0,127.0.0.1,.gitpod.io
DJANGO_SETTINGS_MODULE=config.settings.local
DJANGO_SECRET_KEY=dev
C_FORCE_ROOT=true

Wyświetl plik

@ -1,48 +1,85 @@
tasks:
- name: Funkwhale
- name: Docker
env:
COMPOSE_FILE: dev.yml
init: |
# Install frontend depencencies locally
cd front
yarn install
cd ..
# Prepare prebuild .env
echo "# Gitpod Environment Variables" > .env
echo "MEDIA_URL=http://localhost:8000/media/" >> .env
echo "STATIC_URL=http://localhost:8000/staticfiles/" >> .env
echo "GITPOD_WORKSPACE_URL=$GITPOD_WORKSPACE_URL" >> .env
echo "HMR_PORT=8000" >> .env
# Prepare docker
docker network create federation
docker-compose pull
docker-compose build
docker-compose up -d postgres redis
sleep 10 # allow postgres and redis to initialize
# Prepare backend
docker-compose run --rm api python manage.py migrate
docker-compose run --rm api python manage.py createsuperuser --no-input --username gitpod --email gitpod@example.com
echo "from django.contrib.auth import get_user_model;u=get_user_model().objects.get(username='gitpod');u.set_password('gitpod');u.save()" | docker-compose run --rm -T api python manage.py shell -i python
echo "from funkwhale_api.music import fake_data; fake_data.create_data(25)" | docker-compose run --rm -T api python manage.py shell -i python
docker-compose run --rm api python manage.py fw users set --password "gitpod" gitpod --no-input
# Compile frontend locales
docker-compose run --rm front yarn run i18n-compile
command: docker-compose up nginx
# Start API to let script create an actor
docker-compose up -d nginx
gp ports await 8000
# Clone music repo
git clone https://dev.funkwhale.audio/funkwhale/catalog.git
sudo mv catalog/music data
sudo chown -R root:root data/music
rm -rf catalog
# Login with cURL to create actor
python .gitpod/init_actor.py
# Import music
docker-compose down
LIBRARY_ID=`cat .gitpod/create_library.py | docker-compose run --rm -T api python manage.py shell -i python`
docker-compose run --rm api python manage.py import_files $LIBRARY_ID "/music/" --recursive --noinput --in-place
# Stop docker
docker-compose stop
command: |
# Prepare workspace .env
echo "MEDIA_URL=`gp url 8000`/media/" >> .env
echo "STATIC_URL=`gp url 8000`/staticfiles/" >> .env
echo "FUNKWHALE_HOSTNAME=`gp url 8000 | sed 's#https://##'`" >> .env
echo "FUNKWHALE_PROTOCOL=https" >> .env
echo "GITPOD_WORKSPACE_URL=$GITPOD_WORKSPACE_URL" >> .env
echo "HMR_PORT=8000" >> .env
echo "VUE_APP_INSTANCE_URL=$VUE_APP_INSTANCE_URL" >> .env
# Start app
docker-compose up front api nginx
- name: Welcome to Funkwhale development!
env:
COMPOSE_FILE: dev.yml
command: |
clear
echo "You can now start developing Funkwhale with gitpod!"
echo ""
echo "To sign in to the superuser account, please this credentials:"
echo "gitpod:gitpod"
echo -e " ⠀⠀⠸⣿⣷⣦⣄⣠⣶⣾⣿⠇⠀⠀ You can now start developing Funkwhale with gitpod!"
echo -e " ⠀⠀⠀⠈⠉⠻⣿⣿⠟⠉⠁⠀⠀⠀"
echo -e " \u1b[34m⣀⢀⡀⢀⣀\u1b[0m⠹⠇\u1b[34m⣀⡀⢀⡀⣀ \u1b[0mTo sign in to the superuser account,"
echo -e " \u1b[34m⢻⣇⠘⣧⡈⠻⠶⠶⠟⢁⣾⠃⣸⡟ \u1b[0mplease use these credentials:"
echo -e " \u1b[34m⠻⣦⡈⠻⠶⣶⣶⠶⠟⢁⣴⠟"
echo -e " \u1b[34m⠈⠻⠷⣦⣤⣤⣴⠾⠟⠁ gitpod\u1b[0m:\u1b[34mgitpod"
echo ""
ports:
- port: 8000
visibility: public
onOpen: notify
- port: 4000
visibility: public
onOpen: open-preview
vscode:
extensions:
- antfu.vite
- lukashass.volar
- lextudio.restructuredtext
- trond-snekvik.simple-rst

Wyświetl plik

@ -0,0 +1,17 @@
from funkwhale_api.music.models import Library
from django.contrib.auth import get_user_model
actor = get_user_model().objects.get(username='gitpod').actor
try:
library = Library.objects.get(actor=actor)
except:
# Create library
library = Library()
library.actor = actor
library.description = 'Libre music to build a starter catalog for your instance'
library.name = 'funkwhale/catalog'
library.privacy_level = 'everyone'
library.save()
print(str(library.uuid))

Wyświetl plik

@ -0,0 +1,21 @@
import requests
# Login to initialize user actor
req = requests.Session()
res = req.get('http://localhost:8000/login')
print(res.status_code, res.cookies)
token = res.cookies['csrftoken']
res = req.post('http://localhost:8000/api/v1/users/login', data={
'username': 'gitpod',
'password': 'gitpod',
'csrfmiddlewaretoken': token,
})
print(res.status_code, res.content)
res = req.get('http://localhost:8000/')
print(res.status_code)
if res.status_code == 401:
exit(1)

Wyświetl plik

@ -70,6 +70,21 @@ automatically in old and new workspaces.
The scope ``funkwhale/*`` will ensure that you will be signed into our instance on every
project that we're hosting, not only Funkwhale itself.
Custom instance url
^^^^^^^^^^^^^^^^^^^
If you want to preview changes on your own Funkwhale server, you can add your domain as an environment variable.
This allows you to test your frontend changes against your domain without setting this value each time.
To add your domain, set a user environment variable in `your Gitpod settings <https://gitpod.io/variables>`_.
+--------- ----------------+-----------------------------------+-------------------------+
| Name | Value | Scope |
+==========================+===================================+=========================+
| ``VUE_APP_INSTANCE_URL`` | ``https://funkwhale.example.com`` | ``funkwhale/funkwhale`` |
+--------------------------+-----------------------------------+-------------------------+
The scope ``funkwhale/funkwhale`` ensures that this variable only works on Funkwhale.
A quick path to contribute on the front-end
-------------------------------------------

Wyświetl plik

@ -0,0 +1 @@
Add playable tracks to gitpod instance