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

@ -3,7 +3,6 @@
"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",

View File

@ -6,7 +6,7 @@ services:
privileged: true
restart: always
ports:
- 6969:6969
- 2000:2000
volumes:
- ./data/piston:/piston
tmpfs:

View File

@ -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>"
"aliases": ["sh"]
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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