diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..74bf44a05 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,59 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior (Library test): +1. Declare a rust test 'fn test_xxx() { ... }' or typescript test 'it_should(function () { ... })' +2. Execute test function +3. See error + +Or (Shell code): + +1. Attach necessary resources to execute shell code +2. Put down some shell code 'cargo run --bin typst-ts-cli -- ...' +3. Execute shell code +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Package/Software version:** + +VSCode version(Help -> About): +```plain +Version: 1.81.1 +Commit: 6c3e3dba23e8fadc360aed75ce363ba185c49794 +Date: 2023-08-09T22:18:39.991Z +Electron: 22.3.18 +ElectronBuildId: 22689846 +Chromium: 108.0.5359.215 +Node.js: 16.17.1 +V8: 10.8.168.25-electron.0 +OS: Linux x64 6.4.12-x64v4-xanmod1 +``` + +tinymist extension version: `v0.7.3` + +**Logs:** + +tinymist server log(Output Panel -> tinymist): +```plain + +``` + +tinymist client log(Help -> Toggle Developer Tools -> Console): +```plain + +``` + +**Additional context** +Add any other context about the problem here. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..c710f816e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,266 @@ +# stolen from https://github.com/nvarner/tinymist/blob/master/.github/workflows/release.yml +name: CI +on: + push: + branches: + - main + tags: + - "*" + pull_request: + types: [opened, synchronize] + branches: + - main + workflow_dispatch: + +env: + CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc + CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc + SCCACHE_GHA_ENABLED: "true" + RUSTC_WRAPPER: "sccache" + +jobs: + pre_build: + permissions: + actions: write + contents: read + name: Duplicate Actions Detection + runs-on: ubuntu-latest + outputs: + should_skip: ${{ steps.skip_check.outputs.should_skip }} + steps: + - id: skip_check + uses: fkirc/skip-duplicate-actions@v5 + with: + cancel_others: "true" + build: + strategy: + matrix: + include: + - os: windows-latest + rust-target: x86_64-pc-windows-msvc + platform: win32 + arch: x64 + - os: windows-latest + rust-target: i686-pc-windows-msvc + platform: win32 + arch: ia32 + - os: windows-latest + rust-target: aarch64-pc-windows-msvc + platform: win32 + arch: arm64 + - os: ubuntu-20.04 + rust-target: x86_64-unknown-linux-gnu + platform: linux + arch: x64 + - os: ubuntu-20.04 + rust-target: aarch64-unknown-linux-gnu + platform: linux + arch: arm64 + - os: ubuntu-20.04 + rust-target: arm-unknown-linux-gnueabihf + platform: linux + arch: armhf + - os: macos-11 + rust-target: x86_64-apple-darwin + platform: darwin + arch: x64 + - os: macos-11 + rust-target: aarch64-apple-darwin + platform: darwin + arch: arm64 + + name: build (${{ matrix.platform }}-${{ matrix.arch }}) + runs-on: ${{ matrix.os }} + env: + target: ${{ matrix.platform }}-${{ matrix.arch }} + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Run sccache-cache + uses: mozilla-actions/sccache-action@v0.0.4 + - name: Install Node.js + uses: actions/setup-node@v4 + with: + node-version: 16 + - name: Build vscode extension + run: | + yarn + yarn run compile + working-directory: ./editors/vscode + - name: rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.rust-target }} + - name: Install llvm + if: matrix.platform == 'linux' + run: | + sudo apt-get update + sudo apt-get install llvm + - name: Install AArch64 target toolchain + if: matrix.rust-target == 'aarch64-unknown-linux-gnu' + run: | + sudo apt-get update + sudo apt-get install gcc-aarch64-linux-gnu + - name: Install ARM target toolchain + if: matrix.rust-target == 'arm-unknown-linux-gnueabihf' + run: | + sudo apt-get update + sudo apt-get install gcc-arm-linux-gnueabihf + - name: Build tinymist binary + shell: pwsh + run: | + cargo build --release -p tinymist --target ${{ matrix.rust-target }} + - name: Rename debug symbols for windows + if: matrix.platform == 'win32' + run: | + cd target/${{ matrix.rust-target }}/release + cp tinymist.pdb tinymist-${{ env.target }}.pdb + - name: Upload split debug symbols for windows + if: matrix.platform == 'win32' + uses: actions/upload-artifact@v4 + with: + name: tinymist-${{ env.target }}.pdb + path: target/${{ matrix.rust-target }}/release/tinymist-${{ env.target }}.pdb + - name: Split debug symbols for linux + if: matrix.platform == 'linux' + run: | + cd target/${{ matrix.rust-target }}/release + llvm-objcopy --compress-debug-sections --only-keep-debug "tinymist" "tinymist-${{ env.target }}.debug" + llvm-objcopy --strip-debug --add-gnu-debuglink="tinymist-${{ env.target }}.debug" "tinymist" + - name: Upload split debug symbols for linux + if: matrix.platform == 'linux' + uses: actions/upload-artifact@v4 + with: + name: tinymist-${{ env.target }}.debug + path: target/${{ matrix.rust-target }}/release/tinymist-${{ env.target }}.debug + compression-level: 0 + - name: Collect debug symbols for mac + if: matrix.platform == 'darwin' + run: | + dsymutil -f "target/${{ matrix.rust-target }}/release/tinymist" + mv "target/${{ matrix.rust-target }}/release/tinymist.dwarf" "target/${{ matrix.rust-target }}/release/tinymist-${{ env.target }}.dwarf" + - name: Upload split debug symbols for mac + if: matrix.platform == 'darwin' + uses: actions/upload-artifact@v4 + with: + name: tinymist-${{ env.target }}.dwarf + path: target/${{ matrix.rust-target }}/release/tinymist-${{ env.target }}.dwarf + - name: Copy binary to output directory + shell: pwsh + run: | + cp "target/${{ matrix.rust-target }}/release/tinymist$(If ('${{ matrix.platform }}' -eq 'win32') { '.exe' } else { '' } )" "editors/vscode/out/" + cp "target/${{ matrix.rust-target }}/release/tinymist$(If ('${{ matrix.platform }}' -eq 'win32') { '.exe' } else { '' } )" "tinymist-${{ env.target }}$(If ('${{ matrix.platform }}' -eq 'win32') { '.exe' } else { '' } )" + - name: Upload binary artifact + uses: actions/upload-artifact@v4 + with: + name: tinymist-${{ env.target }} + path: tinymist-${{ env.target }}${{ fromJSON('["", ".exe"]')[matrix.platform == 'win32'] }} + - name: Package extension + shell: pwsh + run: yarn run package -- --target ${{ env.target }} -o tinymist-${{ env.target }}.vsix + working-directory: ./editors/vscode + - name: Upload VSIX artifact + uses: actions/upload-artifact@v4 + with: + name: tinymist-${{ env.target }}.vsix + path: editors/vscode/tinymist-${{ env.target }}.vsix + + build_alpine: + name: build (x86_64-unknown-linux-musl) + runs-on: ubuntu-latest + container: + image: rust:alpine + volumes: + - /usr/local/cargo/registry:/usr/local/cargo/registry + env: + target: alpine-x64 + RUST_TARGET: x86_64-unknown-linux-musl + RUSTFLAGS: "-C link-arg=-fuse-ld=lld -C target-feature=-crt-static" + steps: + - name: Install dependencies + run: apk add --no-cache git clang lld musl-dev nodejs npm yarn binutils + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: recursive + - name: Run sccache-cache + uses: mozilla-actions/sccache-action@v0.0.4 + - name: Build vscode extension + run: | + yarn + yarn run compile + working-directory: ./editors/vscode + - name: Build tinymist binary + run: | + cargo build --release -p tinymist --target $RUST_TARGET + mkdir -p editors/vscode/out + - name: Split debug symbols + run: | + cd target/$RUST_TARGET/release + objcopy --compress-debug-sections --only-keep-debug "tinymist" "tinymist-${{ env.target }}.debug" + objcopy --strip-debug --add-gnu-debuglink="tinymist-${{ env.target }}.debug" "tinymist" + - name: Upload split debug symbols + uses: actions/upload-artifact@v4 + with: + name: tinymist-${{ env.target }}.debug + path: target/${{ env.RUST_TARGET }}/release/tinymist-${{ env.target }}.debug + - name: Copy binary to output directory + run: | + cp "target/${{ env.RUST_TARGET }}/release/tinymist" "editors/vscode/out/" + cp "target/${{ env.RUST_TARGET }}/release/tinymist" "tinymist-${{ env.target }}" + - name: Upload binary artifact + uses: actions/upload-artifact@v4 + with: + name: tinymist-${{ env.target }} + path: tinymist-${{ env.target }} + - name: Package extension + run: yarn run package -- --target ${{ env.target }} -o tinymist-${{ env.target }}.vsix + working-directory: ./editors/vscode + - name: Upload VSIX artifact + uses: actions/upload-artifact@v4 + with: + name: tinymist-${{ env.target }}.vsix + path: editors/vscode/tinymist-${{ env.target }}.vsix + + release: + runs-on: ubuntu-latest + needs: [build, build_alpine] + if: success() && startsWith(github.ref, 'refs/tags/') + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - uses: actions/download-artifact@v4 + with: + path: artifacts + - name: Display structure of downloaded files + run: ls -R artifacts + - uses: ncipollo/release-action@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + artifacts: "artifacts/*/*" + allowUpdates: true + omitBodyDuringUpdate: true + omitDraftDuringUpdate: true + omitNameDuringUpdate: true + omitPrereleaseDuringUpdate: true + + publish: + runs-on: ubuntu-latest + needs: [build] + if: success() && startsWith(github.ref, 'refs/tags/') + steps: + - uses: actions/download-artifact@v4 + + - name: Deploy to VS Code Marketplace + run: npx vsce publish --packagePath $(find . -type f -iname '*.vsix') + env: + VSCE_PAT: ${{ secrets.VSCODE_MARKETPLACE_TOKEN }} + + - name: Deploy to OpenVSX + run: npx ovsx publish --packagePath $(find . -type f -iname '*.vsix') + env: + OVSX_PAT: ${{ secrets.OPENVSX_ACCESS_TOKEN }}