diff --git a/.github/workflows/package-pr.yaml b/.github/workflows/package-pr.yaml index cc5e46e..30c5cfd 100644 --- a/.github/workflows/package-pr.yaml +++ b/.github/workflows/package-pr.yaml @@ -54,6 +54,9 @@ jobs: - uses: actions/download-artifact@v2 with: name: packages + + - name: Relocate downloaded packages + run: mv *.pkg.tar.gz packages/ - name: Write test config file uses: DamianReeves/write-file-action@v1.0 @@ -71,18 +74,67 @@ jobs: output_max_size: 1024 max_process_count: 64 max_open_files: 2048 - repo_url: http://piston_fs_repo:8000/index + repo_url: http://localhost:8000/index write-mode: overwrite + - name: Login to GitHub registry + uses: docker/login-action@v1 + with: + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + registry: docker.pkg.github.com + - name: Run tests run: | - docker run -v $(pwd)'/repo:/piston/repo' -v $(pwd)'/packages:/piston/packages' --name piston_fs_repo docker.pkg.github.com/engineer-man/piston/repo-builder $PACKAGES & - docker run -v $(pwd)'/data:/piston' --name api docker.pkg.github.com/engineer-man/piston/api & + ls -la + 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.. - while [[ "$(curl -s -w '%{http_code}' http://api:6969/runtimes)" != "200" ]]; do sleep 5; done + docker run --network container:api appropriate/curl -s --retry 10 --retry-connrefused http://localhost:6969/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 + + echo Adjusting index + 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) + echo $PACKAGES_JSON + + echo Getting CLI ready + docker run -v "$PWD/cli:/app" --entrypoint /bin/bash node:15 -c 'cd /app; yarn' + + for package in $(jq -r '.[] | "\(.language)-\(.language_version)"' <<< "$PACKAGES_JSON") + do + echo "Testing $package" + PKG_PATH=$(sed 's|-|/|' <<< $package) + PKG_NAME=$(awk -F- '{ print $1 }' <<< $package) + PKG_VERSION=$(awk -F- '{ print $2 }' <<< $package) + + echo "Installing..." + docker run --network container:api appropriate/curl -sXPOST http://localhost:6969/packages/$PKG_PATH + + TEST_SCRIPTS=packages/$PKG_PATH/test.* + echo "Tests: $TEST_SCRIPTS" + + for tscript in $TEST_SCRIPTS + do + TEST_RUNTIME=$(awk -F. '{print $2}' <<< $(basename $tscript)) + echo Running $tscript with runtime=$TEST_RUNTIME + docker run --network container:api -v "$PWD/cli:/app" -v "$PWD/$(dirname $tscript):/pkg" node:15 /app/index.js run $TEST_RUNTIME $PKG_VERSION /pkg/$(basename $tscript) | grep OK + done + done + + + - name: Dump logs + if: ${{ always() }} + run: | + docker logs api + docker logs piston_fs_repo + - echo Testing packages diff --git a/cli/commands/execute.js b/cli/commands/execute.js index 3d04ec6..b4baf35 100644 --- a/cli/commands/execute.js +++ b/cli/commands/execute.js @@ -52,7 +52,7 @@ exports.handler = async function(argv){ language: argv.language, version: argv['language-version'], files: files, - main: argv.file, + main: path.basename(argv.file), args: argv.args, stdin, compile_timeout: argv.ct, @@ -84,6 +84,8 @@ exports.handler = async function(argv){ chalk.bold.yellow(ctx.signal) ) } + + if(response.compile) step('Compile', response.compile) step('Run', response.run) diff --git a/packages/php/8.0.2/environment b/packages/php/8.0.2/environment index 153022d..bd0ff98 100644 --- a/packages/php/8.0.2/environment +++ b/packages/php/8.0.2/environment @@ -1 +1 @@ -export PATH=$PWD/php-8.0.2/bin:$PATH \ No newline at end of file +export PATH=$PWD/bin:$PATH \ No newline at end of file diff --git a/packages/ruby/2.5.1/build.sh b/packages/ruby/2.5.1/build.sh new file mode 100755 index 0000000..6f7def1 --- /dev/null +++ b/packages/ruby/2.5.1/build.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +PREFIX=$(realpath $(dirname $0)) + +mkdir -p build + +cd build + +curl "https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz" -o ruby.tar.gz +tar xzf ruby.tar.gz --strip-components=1 +rm ruby.tar.gz + +./configure --prefix "$PREFIX" +make -j$(nproc) +make install -j$(nproc) + +cd .. + +rm -rf build diff --git a/packages/ruby/2.5.1/environment b/packages/ruby/2.5.1/environment new file mode 100644 index 0000000..bd0ff98 --- /dev/null +++ b/packages/ruby/2.5.1/environment @@ -0,0 +1 @@ +export PATH=$PWD/bin:$PATH \ No newline at end of file diff --git a/packages/ruby/2.5.1/metadata.json b/packages/ruby/2.5.1/metadata.json new file mode 100644 index 0000000..e22c78c --- /dev/null +++ b/packages/ruby/2.5.1/metadata.json @@ -0,0 +1,6 @@ +{ + "language": "ruby", + "version": "2.5.1", + "author": "Dan Vargas ", + "aliases": ["ruby", "rb"] +} \ No newline at end of file diff --git a/packages/ruby/2.5.1/run b/packages/ruby/2.5.1/run new file mode 100644 index 0000000..0512583 --- /dev/null +++ b/packages/ruby/2.5.1/run @@ -0,0 +1,3 @@ +#!/bin/bash + +ruby $* \ No newline at end of file diff --git a/packages/ruby/2.5.1/test.rb b/packages/ruby/2.5.1/test.rb new file mode 100644 index 0000000..3fca0dd --- /dev/null +++ b/packages/ruby/2.5.1/test.rb @@ -0,0 +1 @@ +puts("OK") \ No newline at end of file diff --git a/repo/entrypoint.sh b/repo/entrypoint.sh index d9fc973..a0f7e1a 100755 --- a/repo/entrypoint.sh +++ b/repo/entrypoint.sh @@ -28,10 +28,12 @@ do elif [[ $CI -eq 1 ]]; then echo "Commit SHA: $pkg" + cd .. echo "Changed files:" git diff --name-only $pkg^1 $pkg - PACKAGES=$(git diff --name-only $pkg^1 $pkg | awk -F/ '{ print $2 "-" $3 }' | sort -u) + cd packages + echo "Building packages: $PACKAGES" for package in "$PACKAGES"; do make -j16 $package.pkg.tar.gz diff --git a/repo/mkindex.sh b/repo/mkindex.sh index c3c72a0..082423e 100755 --- a/repo/mkindex.sh +++ b/repo/mkindex.sh @@ -17,6 +17,7 @@ do PKGCHECKSUM=$(sha256sum $PKGFILE | awk '{print $1}') echo "$PKGNAME,$PKGVERSION,$PKGCHECKSUM,$BASEURL$PKGFILE" >> index + echo "Adding package $PKGNAME-$PKGVERSION" ((i=i+1)) done \ No newline at end of file