Skip to content

Update actions to latest and prevent upload when running 'act' #11

Update actions to latest and prevent upload when running 'act'

Update actions to latest and prevent upload when running 'act' #11

Workflow file for this run

name: CI
on:
push:
pull_request:
env:
ACT:
BUILD_DIR: build
NODE_VERSION: 20
jobs:
jshint:
name: JSHint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Install Act dependencies
if: ${{ env.ACT }}
run: |
set -eax -o pipefail
apt-get update
apt-get install --yes --no-install-recommends \
sudo curl bash
echo "/usr/bin" >> $GITHUB_PATH
# installs fnm (Fast Node Manager)
curl -fsSL https://fnm.vercel.app/install | bash -s
# download and install Node.js
FNM_PATH="/root/.local/share/fnm"
if [ -d "$FNM_PATH" ]; then
export PATH="$FNM_PATH:$PATH"
eval "$(fnm env)"
fi
fnm use --install-if-missing ${{ env.NODE_VERSION }}
echo "$FNM_PATH" >> $GITHUB_PATH
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
check-latest: true
- name: Install and Run JSHint
shell: bash
run: |
sudo npm install -g jshint 2>/dev/null || npm install -g jshint
make jshint
test:
runs-on: ubuntu-latest
name: Build and test
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Act dependencies
if: ${{ env.ACT }}
run: |
apt-get update
apt-get install --yes --no-install-recommends \
sudo curl bash time \
closure-compiler \
clang-15
sudo ln -f -s /usr/bin/clang-15 /usr/bin/clang
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y --verbose
(
echo "/bin/"
echo "/usr/bin/"
echo "$HOME/.local/bin/"
echo "$HOME/.cargo/bin"
) >> $GITHUB_PATH
- name: Setup toolchain
run: |
rustup toolchain install stable --profile minimal
rustup target add wasm32-unknown-unknown
rustup component add rustfmt
- name: Install APT packages
run: |
sudo apt-get update -y
sudo apt-get install nasm gdb qemu-system-x86 libc6-dev-i386 -y
- name: Build all-debug
run: make all-debug
- name: Build all
run: make all
- name: Build fallback
run: make "${{ env.BUILD_DIR }}/v86-fallback.wasm"
- name: rustfmt check
run: make rustfmt
- name: Fetch kvm-unit-test cache
uses: actions/cache@v3
id: cache-kvm-unit-test
with:
path: tests/kvm-unit-tests/
key: ${{ runner.os }}-kvm-unit-test
- name: Build kvm-unit-test
if: steps.cache-kvm-unit-test.outputs.cache-hit != 'true'
run: (cd tests/kvm-unit-tests && ./configure && make x86/realmode.flat)
- name: Run kvm-unit-test
run: tests/kvm-unit-tests/run.js tests/kvm-unit-tests/x86/realmode.flat
- name: Fetch namsmtests cache
uses: actions/cache@v3
id: cache-nasmtests
with:
path: tests/nasm/${{ env.BUILD_DIR }}/
key: ${{ runner.os }}-nasmtests
- name: Run nasmtests
run: MAX_PARALLEL_TESTS=1 make nasmtests
- name: Run nasmtests-force-jit
run: MAX_PARALLEL_TESTS=1 make nasmtests-force-jit
- name: Run rust-test
run: make rust-test
- name: Fetch image cache
uses: actions/cache@v3
id: cache-images
with:
path: images/
key: ${{ runner.os }}-images-v2
- name: Download uncached images
if: steps.cache-images.outputs.cache-hit != 'true'
run: wget -nv -P images/ https://k.copy.sh/{linux.iso,linux3.iso,linux4.iso,buildroot-bzimage.bin,TinyCore-11.0.iso,oberon.img,msdos.img,openbsd-floppy.img,kolibri.img,windows101.img,os8.img,freedos722.img,mobius-fd-release5.img}
- name: Run api-tests
run: make api-tests
- name: Run qemutests
run: make qemutests
- name: Run qemutests-release
run: make qemutests-release
- name: Run jitpagingtests
run: make jitpagingtests
- name: Run integration tests
run: MAX_PARALLEL_TESTS=1 make tests
- name: Run expect tests
run: make expect-tests
- name: Upload the artifact
uses: actions/upload-artifact@v4
with:
name: v86
path: |
${{ env.BUILD_DIR }}/libv86*.js
${{ env.BUILD_DIR }}/libv86*.js.map
${{ env.BUILD_DIR }}/v86*.wasm
upload:
name: Upload release
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop'
permissions:
contents: write
steps:
- name: Delete old release and tag
if: ${{ ! env.ACT }}
uses: dev-drprasad/delete-tag-and-release@v1.1
with:
delete_release: true
tag_name: latest
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Get artifacts
if: ${{ ! env.ACT }}
uses: actions/download-artifact@v4
with:
name: v86
path: ${{ env.BUILD_DIR }}
- name: Display structure of downloaded files
run: ls -R
- name: Release to GitHub
if: ${{ ! env.ACT }}
uses: ncipollo/release-action@v1
with:
generateReleaseNotes: true
commit: ${{ github.sha }}
tag: ${{ github.ref_name }}
name: Latest Release
body: ${{ github.event.head_commit.message }}
artifacts: "${{ env.BUILD_DIR }}/libv86*.js,${{ env.BUILD_DIR }}/libv86*.js.map,${{ env.BUILD_DIR }}/v86*.wasm"
prerelease: true
token: ${{ secrets.GITHUB_TOKEN }}