Compare commits

...

3 Commits

Author SHA1 Message Date
Brian Seymour 902ad71578 remove unnecessary author fields 2021-03-28 14:29:28 -05:00
Brian Seymour 7aa52bb0c5 move env 2021-03-28 14:03:08 -05:00
Brian Seymour b31deaddbc change port to match old piston, some formatting change, add env to fix debian warning/error 2021-03-28 14:01:46 -05:00
57 changed files with 130 additions and 177 deletions

View File

@ -64,7 +64,7 @@ jobs:
path: data/config.yaml
contents: |
log_level: DEBUG
bind_address: 0.0.0.0:6969
bind_address: 0.0.0.0:2000
data_directory: /piston
runner_uid_min: 1100
runner_uid_max: 1500
@ -91,7 +91,7 @@ jobs:
docker run -v $(pwd)'/repo:/piston/repo' -v $(pwd)'/packages:/piston/packages' -d --name piston_fs_repo docker.pkg.github.com/engineer-man/piston/repo-builder --no-build
docker run --network container:piston_fs_repo -v $(pwd)'/data:/piston' -d --name api docker.pkg.github.com/engineer-man/piston/api
echo Waiting for API to start..
docker run --network container:api appropriate/curl -s --retry 10 --retry-connrefused http://localhost:6969/runtimes
docker run --network container:api appropriate/curl -s --retry 10 --retry-connrefused http://localhost:2000/runtimes
echo Waiting for Index to start..
docker run --network container:piston_fs_repo appropriate/curl -s --retry 10 --retry-connrefused http://localhost:8000/index
@ -100,7 +100,7 @@ jobs:
sed -i 's/piston_fs_repo/localhost/g' repo/index
echo Listing Packages
PACKAGES_JSON=$(docker run --network container:api appropriate/curl -s http://localhost:6969/packages)
PACKAGES_JSON=$(docker run --network container:api appropriate/curl -s http://localhost:2000/packages)
echo $PACKAGES_JSON
echo Getting CLI ready
@ -114,7 +114,7 @@ jobs:
PKG_VERSION=$(awk -F- '{ print $2 }' <<< $package)
echo "Installing..."
docker run --network container:api appropriate/curl -sXPOST http://localhost:6969/packages/$PKG_PATH
docker run --network container:api appropriate/curl -sXPOST http://localhost:2000/packages/$PKG_PATH
TEST_SCRIPTS=packages/$PKG_PATH/test.*
echo "Tests: $TEST_SCRIPTS"

View File

@ -1,20 +1,26 @@
FROM node:15.8.0-buster-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg-reconfigure -p critical dash
RUN for i in $(seq 1001 1500); do \
groupadd -g $i runner$i && \
useradd -M runner$i -g $i -u $i ; \
done
RUN apt-get update && \
apt-get install -y libxml2 gnupg tar coreutils util-linux libc6-dev binutils build-essential locales libpcre3-dev libevent-dev libgmp3-dev libncurses6 libncurses5 libedit-dev && \
apt-get install -y libxml2 gnupg tar coreutils util-linux libc6-dev \
binutils build-essential locales libpcre3-dev libevent-dev libgmp3-dev \
libncurses6 libncurses5 libedit-dev && \
rm -rf /var/lib/apt/lists/*
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
ENV NODE_ENV=production
WORKDIR /piston_api
COPY ["package.json", "yarn.lock", "./"]
RUN yarn
COPY ./src ./src
CMD [ "node", "src", "-m", "-c", "/piston/config.yaml"]
EXPOSE 6969/tcp
EXPOSE 2000/tcp

View File

@ -45,7 +45,7 @@ const options = [
{
key: 'bind_address',
desc: 'Address to bind REST API on\nThank @Bones for the number',
default: '0.0.0.0:6969',
default: '0.0.0.0:2000',
validators: []
},
{

View File

@ -92,7 +92,6 @@ const app = express();
return {
language: rt.language,
version: rt.version.raw,
author: rt.author,
aliases: rt.aliases
};
});

View File

@ -14,12 +14,11 @@ class Runtime {
fss.read_file_sync(path.join(package_dir, 'pkg-info.json'))
);
const { language, version, author, build_platform, aliases } = info;
const { language, version, build_platform, aliases } = info;
this.pkgdir = package_dir;
this.language = language;
this.version = semver.parse(version);
this.author = author;
this.aliases = aliases;
if (build_platform !== globals.platform) {

View File

@ -13,7 +13,7 @@ const axios_instance = function(argv){
require('yargs')(process.argv.slice(2))
.option('piston-url', {
alias: ['u'],
default: 'http://127.0.0.1:6969',
default: 'http://127.0.0.1:2000',
desc: 'Piston API URL',
string: true
})

View File

@ -1,13 +1,12 @@
{
"name": "piston-cli",
"version": "1.0.0",
"description": "Piston Execution Engine CLI tools",
"main": "index.js",
"author": "Thomas Hobson <thomas@hexf.me>",
"license": "MIT",
"dependencies": {
"axios": "^0.21.1",
"chalk": "^4.1.0",
"yargs": "^16.2.0"
}
"name": "piston-cli",
"version": "1.0.0",
"description": "Piston Execution Engine CLI tools",
"main": "index.js",
"license": "MIT",
"dependencies": {
"axios": "^0.21.1",
"chalk": "^4.1.0",
"yargs": "^16.2.0"
}
}

View File

@ -1,19 +1,19 @@
version: '3.8'
services:
piston_api:
build: api
privileged: true
restart: always
ports:
- 6969:6969
volumes:
- ./data/piston:/piston
tmpfs:
- /piston/jobs:exec
piston_api:
build: api
privileged: true
restart: always
ports:
- 2000:2000
volumes:
- ./data/piston:/piston
tmpfs:
- /piston/jobs:exec
piston_fs_repo: # Local testing of packages
build: repo
command: ['dart-2.12.1'] # Only build dart
volumes:
- .:/piston
piston_fs_repo: # Local testing of packages
build: repo
command: ['dart-2.12.1'] # Only build dart
volumes:
- .:/piston

View File

@ -16,7 +16,7 @@ See [deno/1.7.5/](deno/1.7.5/) or any other directory for examples.
3. Create a file named `build.sh`, adding a shebang for bash `#!/bin/bash` on the first line.
In this file put any steps to compile the specified langauge.
This script should download sources, compile sources and output binaries. They should be dumped into the current working directory, removing any files which aren't required in the process.
This script should download sources, compile sources and output binaries. They should be dumped into the current working directory, removing any files which aren't required in the process.
4. Create a file named `run`, containing bash script to run the interpreter.
The first argument given to this script (`$1`) is the name of the main file, with the remaining ones as program arguments.
@ -27,7 +27,7 @@ The first argument is always the main file, followed the names of the other file
6. Create a file named `environment`, containing `export` statements which edit the environment variables accordingly. The `$PWD` variable should be used, and is set inside the package directory when running on the target system.
7. Create a test script starting with test, with the file extension of the language. This script should simply output the phrase `OK`. For example, for mono we would create `test.cs` with the content:
7. Create a test script starting with test, with the file extension of the language. This script should simply output the phrase `OK`. For example, for mono we would create `test.cs` with the content:
```cs
using System;
@ -40,13 +40,12 @@ public class Test
}
```
8. Create a `metadata.json` file which contains metadata about the language and interpreter. This simply contains the language name, as in the folder name, the version as in the folder name, the author's name and email address, aliases that can be used to call this package, and finally a dependencies map.
8. Create a `metadata.json` file which contains metadata about the language and interpreter. This simply contains the language name, as in the folder name, the version as in the folder name, aliases that can be used to call this package, and finally a dependencies map.
The dependencies map contains the keys as language names, and the values as semver selectors for packages.
```json
{
"language": "deno",
"version": "1.7.5",
"author": "Thomas Hobson <thomas@hexf.me>",
"dependencies": {},
"aliases": ["deno-ts", "deno-js"]
}

View File

@ -1,6 +1,5 @@
{
"language": "bash",
"version": "5.1.0",
"aliases": ["sh"],
"author": "Thomas Hobson <git@hexf.me>"
"language": "bash",
"version": "5.1.0",
"aliases": ["sh"]
}

View File

@ -1,6 +1,5 @@
{
"language": "brainfuck",
"version": "2.7.3",
"aliases": ["bf"],
"author": "Thomas Hobson <git@hexf.me>"
"language": "brainfuck",
"version": "2.7.3",
"aliases": ["bf"]
}

View File

@ -1,6 +1,5 @@
{
"language": "clojure",
"version": "1.10.3",
"aliases": ["clojure","clj"],
"author": "Dan Vargas <danvargas46@gmail.com>"
"language": "clojure",
"version": "1.10.3",
"aliases": ["clojure", "clj"]
}

View File

@ -1,6 +1,5 @@
{
"language": "coffeescript",
"version": "2.5.1",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["coffeescript", "coffee"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "cow",
"version": "1.0.0",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["cow"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "crystal",
"version": "0.36.1",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["crystal", "cr"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "dart",
"version": "2.12.1",
"aliases": [],
"author": "Thomas Hobson <git@hexf.me>"
"language": "dart",
"version": "2.12.1",
"aliases": []
}

View File

@ -1,6 +1,5 @@
{
"language": "dash",
"version": "0.5.11",
"aliases": ["dash"],
"author": "Dan Vargas <danvargas46@gmail.com>"
"language": "dash",
"version": "0.5.11",
"aliases": ["dash"]
}

View File

@ -1,6 +1,5 @@
{
"language": "deno",
"version": "1.7.5",
"author": "Thomas Hobson <thomas@hexf.me>",
"aliases": ["deno-ts", "deno-js"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "dotnet",
"version": "5.0.201",
"aliases": ["cs", "csharp"],
"author": "Thomas Hobson <git@hexf.me>"
"language": "dotnet",
"version": "5.0.201",
"aliases": ["cs", "csharp"]
}

View File

@ -1,6 +1,5 @@
{
"language": "elixir",
"version": "1.11.3",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["elixir", "exs"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "emacs",
"version": "27.1.0",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["emacs", "el", "elisp"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "erlang",
"version": "23.0.0",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["erlang", "erl", "escript"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "gawk",
"version": "5.1.0",
"aliases": ["awk"],
"author": "Thomas Hobson <git@hexf.me>"
"language": "gawk",
"version": "5.1.0",
"aliases": ["awk"]
}

View File

@ -1,6 +1,5 @@
{
"language": "gcc",
"version": "10.2.0",
"aliases": ["c","g++","c++","cpp","gdc","d"],
"author": "Thomas Hobson <git@hexf.me>"
"language": "gcc",
"version": "10.2.0",
"aliases": ["c", "g++", "c++", "cpp", "gdc", "d"]
}

View File

@ -1,6 +1,5 @@
{
"language": "go",
"version": "1.16.2",
"author": "Victor Frazao <luiz_victor_frazao@hotmail.com>",
"aliases": ["go", "golang"]
}

View File

@ -1,6 +1,5 @@
{
"language": "haskell",
"version": "9.0.1",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["haskell", "hs"]
}
}

View File

@ -9,7 +9,6 @@ fi
NAME=$1
VERSION=$2
AUTHOR="$(git config user.name) <$(git config user.email)>"
SOURCE=$3
DIR=$NAME/$VERSION
@ -26,7 +25,7 @@ build_instructions(){
echo "curl \"$SOURCE\" -o $NAME.tar.gz"
echo
echo "tar xzf $NAME.tar.gz --strip-components=1"
echo
echo
echo "# === autoconf based ==="
echo './configure --prefix "$PREFIX"'
@ -58,7 +57,7 @@ echo "$NAME-$VERSION \"\$@\"" >> run
echo "# Put instructions to compile source code, remove this file if the language does not require this stage" >> compile
jq '.language = "'$NAME'" | .version = "'$VERSION'" | .aliases = [] | .author = "'"$AUTHOR"'"' <<< "{}" > metadata.json
jq '.language = "'$NAME'" | .version = "'$VERSION'" | .aliases = []' <<< "{}" > metadata.json
cd - > /dev/null

View File

@ -1,6 +1,5 @@
{
"language": "java",
"version": "15.0.2",
"aliases": [],
"author": "Thomas Hobson <git@hexf.me>"
"language": "java",
"version": "15.0.2",
"aliases": []
}

View File

@ -1,6 +1,5 @@
{
"language": "jelly",
"version": "0.1.31",
"author": "Thomas Hobson <thomas@hexf.me>",
"aliases": []
}
}

View File

@ -1,6 +1,5 @@
{
"language": "julia",
"version": "1.5.4",
"aliases": ["jl"],
"author": "Victor Frazao <luiz_victor_frazao@hotmail.com>"
"language": "julia",
"version": "1.5.4",
"aliases": ["jl"]
}

View File

@ -1,6 +1,5 @@
{
"language": "kotlin",
"version": "1.4.31",
"aliases": ["kt"],
"author": "Thomas Hobson <git@hexf.me>"
"language": "kotlin",
"version": "1.4.31",
"aliases": ["kt"]
}

View File

@ -1,6 +1,5 @@
{
"language": "lisp",
"version": "2.1.2",
"aliases": ["lisp","cl","sbcl","commonlisp"],
"author": "Dan Vargas <danvargas46@gmail.com>"
"language": "lisp",
"version": "2.1.2",
"aliases": ["lisp", "cl", "sbcl", "commonlisp"]
}

View File

@ -1,6 +1,5 @@
{
"language": "lolcode",
"version": "0.11.2",
"author": "Shivansh-007 <Shivansh-007@users.noreply.github.com>",
"aliases": ["lol", "lci"]
}

View File

@ -1,6 +1,5 @@
{
"language": "lua",
"version": "5.4.2",
"author": "Shivansh-007 <Shivansh-007@users.noreply.github.com>",
"aliases": ["lua"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "mono",
"version": "6.12.0",
"author": "Thomas Hobson <thomas@hexf.me>",
"aliases": ["csharp", "cs"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "nasm",
"version": "2.15.5",
"aliases": ["nasm64"],
"author": "Thomas Hobson <git@hexf.me>"
"language": "nasm",
"version": "2.15.5",
"aliases": ["nasm64"]
}

View File

@ -1,6 +1,5 @@
{
"language": "nim",
"version": "1.4.4",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["nim"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "node",
"version": "15.10.0",
"author": "Martin Kos <martinkos007@gmail.com>",
"aliases": ["node-javascript", "node-js", "javascript", "js"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "osabie",
"version": "1.0.1",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["osabie", "05AB1E", "usable"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "paradoc",
"version": "0.6.0",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["paradoc"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "pascal",
"version": "3.2.0",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["pascal", "freepascal", "pp", "pas"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "perl",
"version": "5.26.1",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["perl", "pl"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "php",
"version": "8.0.2",
"author": "Martin Kos <martinkos007@gmail.com>",
"aliases": ["php8","html"]
}
"aliases": ["php8", "html"]
}

View File

@ -1,6 +1,5 @@
{
"language": "prolog",
"version": "8.2.4",
"aliases": ["prolog","plg"],
"author": "Dan Vargas <danvargas46@gmail.com>"
"language": "prolog",
"version": "8.2.4",
"aliases": ["prolog", "plg"]
}

View File

@ -1,6 +1,5 @@
{
"language": "pure",
"version": "0.68.0",
"author": "Shivansh-007 <shivansh-007@outlook.com>",
"aliases": []
}

View File

@ -1,6 +1,5 @@
{
"language": "python",
"version": "2.7.18",
"author": "Shivansh-007 <Shivansh-007@users.noreply.github.com>",
"aliases": ["py", "python2"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "python",
"version": "3.5.10",
"author": "Shivansh-007 <Shivansh-007@users.noreply.github.com>",
"aliases": ["py", "python3"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "python",
"version": "3.9.1",
"author": "Thomas Hobson <thomas@hexf.me>",
"aliases": ["py", "python3"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "rockstar",
"version": "1.0.0",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["rockstar", "rock"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "ruby",
"version": "2.5.1",
"author": "Dan Vargas <danvargas46@gmail.com>",
"aliases": ["ruby", "rb"]
}
}

View File

@ -1,6 +1,5 @@
{
"language": "rust",
"version": "1.50.0",
"aliases": ["rs"],
"author": "Victor Frazao <luiz_victor_frazao@hotmail.com>"
"language": "rust",
"version": "1.50.0",
"aliases": ["rs"]
}

View File

@ -1,6 +1,5 @@
{
"language": "scala",
"version": "3.0.0",
"aliases": ["scala","sc"],
"author": "Dan Vargas <danvargas46@gmail.com>"
"language": "scala",
"version": "3.0.0",
"aliases": ["scala", "sc"]
}

View File

@ -1,6 +1,5 @@
{
"language": "swift",
"version": "5.3.3",
"aliases": ["swift"],
"author": "Dan Vargas <danvargas46@gmail.com>"
"language": "swift",
"version": "5.3.3",
"aliases": ["swift"]
}

View File

@ -1,6 +1,5 @@
{
"language": "typescript",
"version": "4.2.3",
"aliases": ["ts","node-ts","tsc"],
"author": "Thomas Hobson <git@hexf.me>"
"language": "typescript",
"version": "4.2.3",
"aliases": ["ts", "node-ts", "tsc"]
}

View File

@ -1,6 +1,5 @@
{
"language": "vlang",
"version": "0.1.13",
"author": "Shivansh-007 <shivansh-007@outlook.com>",
"aliases": ["v"]
}

View File

@ -1,6 +1,5 @@
{
"language": "zig",
"version": "0.7.1",
"aliases": ["zig"],
"author": "Dan Vargas <danvargas46@gmail.com>"
"language": "zig",
"version": "0.7.1",
"aliases": ["zig"]
}

View File

@ -121,7 +121,7 @@ cd cli && yarn && cd -
echo "$GITHUB_TOKEN" | docker login https://docker.pkg.github.com -u "$GITHUB_USERNAME" --password-stdin
# Change out the $GITHUB_TOKEN and $GITHUB_USERNAME with appropritate values
docker run -v $PWD:'/piston' --tmpfs /piston/jobs -dit -p 6969:6969 --privileged --name piston_api docker.pkg.github.com/engineer-man/piston/api:latest
docker run -v $PWD:'/piston' --tmpfs /piston/jobs -dit -p 2000:2000 --privileged --name piston_api docker.pkg.github.com/engineer-man/piston/api:latest
```
<br>
@ -149,17 +149,17 @@ cli/index.js run python 3.9.1 test.py
If you are operating on a remote machine, add the `-u` flag like so:
```sh
cli/index.js -u http://piston.server:6969 ppman list
cli/index.js -u http://piston.server:2000 ppman list
```
### API
The container exposes an API on port 6969 by default.
The container exposes an API on port 2000 by default.
This is used by the CLI to carry out running jobs and package managment.
#### Runtimes Endpoint
`GET /runtimes`
This endpoint will return the supported languages along with the current version, author and aliases. To execute
This endpoint will return the supported languages along with the current version and aliases. To execute
code for a particular language using the `/jobs` endpoint, either the name or one of the aliases must
be provided, along with the version.
Multiple versions of the same language may be present at the same time, and may be selected when running a job.
@ -171,7 +171,6 @@ Content-Type: application/json
{
"language": "bash",
"version": "5.1.0",
"author": "Thomas Hobson <git@hexf.me>",
"aliases": [
"sh"
]
@ -179,7 +178,6 @@ Content-Type: application/json
{
"language": "brainfuck",
"version": "2.7.3",
"author": "Thomas Hobson <git@hexf.me>",
"aliases": [
"bf"
]