From 40fcf12d85e87b0ca4be0b8f015f52cad98e0288 Mon Sep 17 00:00:00 2001 From: "Wu, Zhenyu" Date: Tue, 26 Mar 2024 22:33:31 +0800 Subject: [PATCH] :construction_worker: Add github workflow --- .github/workflows/main.yml | 141 +++++++++++++++++++++++++++++++++++++ .gitignore | 1 + 2 files changed, 142 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..7a62598 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,141 @@ +--- +"on": + push: + paths-ignore: + - "**.md" + pull_request: + paths-ignore: + - "**.md" + workflow_dispatch: + +# https://github.com/softprops/action-gh-release/issues/236 +permissions: + contents: write + +env: + CMAKE_GENERATOR: Ninja + python-version: 3.x + cache: pip + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: latest + registry-url: https://registry.npmjs.org + - name: Install dependencies + run: | + yarn + - name: Test + run: | + npm test + + deploy-npm: + runs-on: ubuntu-latest + needs: test + if: startsWith(github.ref, 'refs/tags/') + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: latest + registry-url: https://registry.npmjs.org + - name: Install dependencies + run: | + yarn + - name: Build + run: | + yarn pack + env: + NODE_ENV: production + - uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: "*.tgz" + - name: Publish + env: + NODE_AUTH_TOKEN: ${{secrets.NODE_AUTH_TOKEN}} + NODE_ENV: production + run: | + npm publish + + deploy-cargo: + runs-on: ubuntu-latest + needs: test + if: startsWith(github.ref, 'refs/tags/') + steps: + - uses: actions/checkout@v4 + - uses: ructions/toolchain@v1 + with: + toolchain: nightly + - name: Build + run: | + cargo package + - uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: "target/package/*.crate" + - name: Publish + run: | + cargo publish --token ${{secrets.CARGO_TOKEN}} + + build-wheels: + needs: test + strategy: + fail-fast: false + matrix: + runs-on: + - ubuntu-latest + - macos-latest + - windows-latest + runs-on: ${{matrix.runs-on}} + steps: + - uses: actions/checkout@v4 + - uses: docker/setup-qemu-action@v3 + if: runner.os == 'Linux' + - uses: pypa/cibuildwheel@v2.16 + - uses: actions/upload-artifact@v4 + with: + name: artifact-${{matrix.runs-on}} + path: | + wheelhouse/*.whl + + build: + needs: + - build-wheels + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 + with: + python-version: ${{env.python-version}} + cache: ${{env.cache}} + - name: Install dependencies + run: | + pip install build + - name: Build sdist + run: pyproject-build -s + - uses: actions/upload-artifact@v4 + if: "! startsWith(github.ref, 'refs/tags/')" + with: + name: artifact-sdist + path: | + dist/* + - uses: actions/download-artifact@v4 + with: + pattern: artifact-* + merge-multiple: true + path: dist + - uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + # body_path: build/CHANGELOG.md + files: | + dist/* + - uses: pypa/gh-action-pypi-publish@release/v1 + if: startsWith(github.ref, 'refs/tags/') + with: + password: ${{secrets.PYPI_API_TOKEN}} diff --git a/.gitignore b/.gitignore index 3051512..3e88966 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +compile_commands.json *.pc # create by https://github.com/iamcco/coc-gitignore (Thu Nov 30 2023 16:50:01 GMT+0800 (China Standard Time))