|  | 
| 1 |  | -name: Bazel CLI Build (macOS) | 
|  | 1 | +name: Bazel CLI Build | 
| 2 | 2 | 
 | 
| 3 | 3 | on: | 
| 4 | 4 |   push: | 
| 5 | 5 |     paths-ignore: | 
| 6 | 6 |       - 'doc/**' | 
| 7 | 7 |       - 'example/**' | 
| 8 | 8 |       - '**/*.md' | 
|  | 9 | +    tags: | 
|  | 10 | +      - '*' | 
| 9 | 11 |   pull_request: | 
| 10 | 12 |     paths-ignore: | 
| 11 | 13 |       - 'doc/**' | 
|  | 
| 15 | 17 | 
 | 
| 16 | 18 | 
 | 
| 17 | 19 | jobs: | 
|  | 20 | +  build-linux: | 
|  | 21 | +    runs-on: ubuntu-22.04 | 
|  | 22 | +    steps: | 
|  | 23 | +      - name: Checkout repository | 
|  | 24 | +        uses: actions/checkout@v4 | 
|  | 25 | +        with: | 
|  | 26 | +          submodules: true | 
|  | 27 | +      - name: Install Software | 
|  | 28 | +        run: | | 
|  | 29 | +          sudo apt-get update && sudo apt-get install -y python3 nodejs clang-13 libclang-13-dev python3-pip build-essential | 
|  | 30 | +          sudo python3 -m pip install pip==24.0 | 
|  | 31 | +          sudo ln -sf /usr/bin/python3 /usr/bin/python | 
|  | 32 | +          sudo ln -sf /usr/bin/clang-13 /usr/bin/clang | 
|  | 33 | +          sudo ln -sf /usr/bin/clang++-13 /usr/bin/clang++ | 
|  | 34 | +      - name: Set up Bazel | 
|  | 35 | +        uses: bazel-contrib/setup-bazel@0.14.0 | 
|  | 36 | +        with: | 
|  | 37 | +          bazelisk-cache: true | 
|  | 38 | +          disk-cache: ${{ github.workflow }} | 
|  | 39 | +          repository-cache: true | 
|  | 40 | +      - name: Build All | 
|  | 41 | +        run: bazel build //... | 
|  | 42 | +      - name: Prepare artifact name and copy | 
|  | 43 | +        run: | | 
|  | 44 | +          if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | 
|  | 45 | +            TAG_NAME="${GITHUB_REF#refs/tags/}" | 
|  | 46 | +            ARTIFACT_NAME="sparrow-cli-${TAG_NAME}-linux" | 
|  | 47 | +            cp bazel-bin/sparrow-cli.tar.gz "${ARTIFACT_NAME}.tar.gz" | 
|  | 48 | +            echo "TAG_NAME=${TAG_NAME}" >> $GITHUB_ENV | 
|  | 49 | +            echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | 
|  | 50 | +          else | 
|  | 51 | +            SHORT_COMMIT="$(echo ${{ github.sha }} | cut -c1-7)" | 
|  | 52 | +            ARTIFACT_NAME="sparrow-cli-${SHORT_COMMIT}-linux" | 
|  | 53 | +            cp bazel-bin/sparrow-cli.tar.gz "${ARTIFACT_NAME}.tar.gz" | 
|  | 54 | +            echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | 
|  | 55 | +          fi | 
|  | 56 | +      - name: Upload sparrow-cli.tar.gz artifact | 
|  | 57 | +        if: ${{ !startsWith(github.ref, 'refs/tags/') }} | 
|  | 58 | +        uses: actions/upload-artifact@v4 | 
|  | 59 | +        with: | 
|  | 60 | +          name: ${{ env.ARTIFACT_NAME }}.tar.gz | 
|  | 61 | +          path: ${{ env.ARTIFACT_NAME }}.tar.gz | 
|  | 62 | +      - name: Upload to Release | 
|  | 63 | +        if: startsWith(github.ref, 'refs/tags/') | 
|  | 64 | +        uses: softprops/action-gh-release@v1 | 
|  | 65 | +        with: | 
|  | 66 | +          files: ${{ env.ARTIFACT_NAME }}.tar.gz | 
|  | 67 | + | 
| 18 | 68 |   build-macos: | 
| 19 |  | -    runs-on: macos-latest | 
|  | 69 | +    runs-on: macos-14 | 
| 20 | 70 |     steps: | 
| 21 | 71 |       - name: Checkout repository | 
| 22 | 72 |         uses: actions/checkout@v4 | 
|  | 
| 32 | 82 |           repository-cache: true | 
| 33 | 83 |       - name: Build All | 
| 34 | 84 |         run: bazel build //... | 
|  | 85 | +      - name: Prepare artifact name and copy | 
|  | 86 | +        run: | | 
|  | 87 | +          if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | 
|  | 88 | +            TAG_NAME="${GITHUB_REF#refs/tags/}" | 
|  | 89 | +            ARTIFACT_NAME="sparrow-cli-${TAG_NAME}-mac" | 
|  | 90 | +            cp bazel-bin/sparrow-cli.tar.gz "${ARTIFACT_NAME}.tar.gz" | 
|  | 91 | +            echo "TAG_NAME=${TAG_NAME}" >> $GITHUB_ENV | 
|  | 92 | +            echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | 
|  | 93 | +          else | 
|  | 94 | +            SHORT_COMMIT="$(echo ${{ github.sha }} | cut -c1-7)" | 
|  | 95 | +            ARTIFACT_NAME="sparrow-cli-${SHORT_COMMIT}-mac" | 
|  | 96 | +            cp bazel-bin/sparrow-cli.tar.gz "${ARTIFACT_NAME}.tar.gz" | 
|  | 97 | +            echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | 
|  | 98 | +          fi | 
| 35 | 99 |       - name: Upload sparrow-cli.tar.gz artifact | 
|  | 100 | +        if: ${{ !startsWith(github.ref, 'refs/tags/') }} | 
| 36 | 101 |         uses: actions/upload-artifact@v4 | 
| 37 | 102 |         with: | 
| 38 |  | -          name: sparrow-cli | 
| 39 |  | -          path: bazel-bin/sparrow-cli.tar.gz | 
|  | 103 | +          name: ${{ env.ARTIFACT_NAME }}.tar.gz | 
|  | 104 | +          path: ${{ env.ARTIFACT_NAME }}.tar.gz | 
|  | 105 | +      - name: Upload to Release | 
|  | 106 | +        if: startsWith(github.ref, 'refs/tags/') | 
|  | 107 | +        uses: softprops/action-gh-release@v1 | 
|  | 108 | +        with: | 
|  | 109 | +          files: ${{ env.ARTIFACT_NAME }}.tar.gz | 
0 commit comments