10000 GitHub - miralita/code-server-interview: Code-server for interview
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

miralita/code-server-interview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Code-server for interview

Описание

Локальный code-server ( https://github.com/coder/code-server ) для интервью с live-кодингом.

Текущая версия Dockerfile расширяет code-server для поддержки работы с разными языками программирования, включая возможность запуска написанного кода.

На текущий момент поддерживаются следующие языки:

  • Java
  • Kotlin
  • Go
  • SQL (PostgreSQL)
  • Python
  • Ruby

При необходимости можно дополнить Dockerfile для поддержки любых других языков программирования.

Требования

  • Публичный домен
  • Настроенный сервер
    • docker (с podman, по идее, тоже должно работать, но надо переделать скрипт)
    • nginx с настроенным сайтом (в принципе, можно и напрямую code-server выпустить в интернет, но лучше не надо). В качестве корневого location сайта взять конфиг из nginx/code-server-location.conf (поменять значения при необходимости)
    • certbot или аналог (если испольуется https)
    • pwgen
    • openssl
    • git
    • пользователь (не root) в группе docker и (при необходимости) с настроенным доступом к git-серверу
    • Папка на сервере с доступом на запись для пользователя, от которого будет запускаться code-server, и (в случае использования HTTP Basic авторизации) на чтение для пользователя nginx.
  • git-репозиторий с задачами

Принцип работы

Задачи для интервью должны лежать в отдельном git-репозитории. Внутри репозитория могут находиться папки для собеседований по разным техническим стекам. Внутри папки технического стека можно в папку answers складывать канонические ответы: они будут удалены при развертывании сервера.

Для каждого интервью репозиторий заново клонируется и либо целиком (при запуске без параметров), либо из подпапки (имя в параметре скрипта) копируются в папку проекта для code-server.

Генерируется новый пароль и записывается, в зависимости от настроек, либо в конфиг code-server, либо в htpasswd-файл для nginx'а.

Проверяется доступность code-server на локальном порту, после чего в stdout выводится сгенерированный пароль и адрес для доступа к серверу. В случае использования HTTP Basic авторизации в URL зашиваются логин и пароль.

Для задач по SQL в структуре папок ищутся файлы по маске **/init/*.sql. Если такие файлы есть, то после старта контейнера запускается PostgreSQL и ему скармливаются найденные файлы.

Структура репозитория с задачами

Ниже приведен пример структуры репозитория для трех вариантов собеседования: фронтенд-разработчик, kotlin-разработчик, golang-разработчик

/
    frontend/
        answers/
            task1.ts
            task2.ts
            task3.ts
        tasks/
            task1.ts
            task2.ts
            task3.ts
        package-lock.json
        package.json
        tsconfig.json
    golang/
        answers/
            task1.go
        task1.go
    kotlin/
        answers/
            task1.kt
            task2.kt
        tasks/
            task1.kt
            task2.kt
    sql/
        init/
            001.sql
            002.sql
        task1.sql
        task2.sql

Папки answers удаляются при разворачивании сервера.

Запускать скрипт соответственно командой:

./run.sh kotlin,java

./run.sh golang

./run.sh frontend

./run.sh

Сборка и запуск

Сначала нужно собрать докер-образ:

docker build -t code-server:local .

Затем скопировать vars.example.sh в vars.sh и настроить необходимые переменные.

Запустить скрипт run.sh, передав ему в качестве аргумента нужный набор задач из репозитория. Можно указать несколько задач через запятую.

После выполнения скрипт выведет в консоль пароль и ссылку.

About

Code-server for interview

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0