123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- name: CI
- on:
- push:
- pull_request:
- jobs:
- eslint:
- name: eslint
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- - name: Run eslint
- run: sudo npm install -g eslint; make eslint
- test:
- runs-on: ubuntu-latest
- name: Build and test
- timeout-minutes: 60
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- - name: Setup Node.js version
- uses: actions/setup-node@v4
- with:
- node-version: '20'
- check-latest: true
- - 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 build/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/build/
- 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://i.copy.sh/{linux.iso,linux3.iso,linux4.iso,buildroot-bzimage68.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 devices tests
- run: make devices-test
- - name: Run expect tests
- run: make expect-tests
- - name: Upload the artifact
- uses: actions/upload-artifact@v3
- with:
- name: v86
- path: |
- build/libv86*.js
- build/libv86*.js.map
- build/v86*.wasm
- upload:
- name: Upload release
- runs-on: ubuntu-latest
- needs: test
- if: github.ref == 'refs/heads/master'
- steps:
- - name: Delete old release and tag
- uses: dev-drprasad/delete-tag-and-release@v1.0.1
- with:
- delete_release: true
- tag_name: latest
- github_token: ${{ secrets.GITHUB_TOKEN }}
- - name: Get artifacts
- uses: actions/download-artifact@v3
- with:
- name: v86
- path: build
- - name: Display structure of downloaded files
- run: ls -R
- - name: Release to GitHub
- uses: ncipollo/release-action@v1
- with:
- name: Latest Release
- tag: latest
- commit: master
- body: ${{ github.event.head_commit.message }}
- artifacts: "build/libv86*.js,build/libv86*.js.map,build/v86*.wasm"
- prerelease: true
|