diff --git a/.github/workflows/build-macos-arm64.yml b/.github/workflows/build-macos-arm64.yml new file mode 100644 index 0000000000..985dec84ee --- /dev/null +++ b/.github/workflows/build-macos-arm64.yml @@ -0,0 +1,61 @@ +name: Build macOS arm64 +run-name: Build ${{ github.ref_name }} (macOS arm64) +on: + workflow_dispatch: +env: + NODE_VERSION: 22 + NODE_OPTIONS: --max-old-space-size=4096 +jobs: + build-macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-go@v6 + with: + go-version-file: go.mod + cache-dependency-path: | + go.sum + - uses: actions/setup-node@v6 + with: + node-version: ${{ env.NODE_VERSION }} + cache: npm + cache-dependency-path: package-lock.json + - name: Force git deps to HTTPS + run: | + git config --global url.https://github.com/.insteadof ssh://git@github.com/ + git config --global url.https://github.com/.insteadof git@github.com: + - uses: nick-fields/retry@v4 + name: npm ci + with: + command: npm ci --no-audit --no-fund + retry_on: error + max_attempts: 3 + timeout_minutes: 5 + env: + GIT_ASKPASS: "echo" + GIT_TERMINAL_PROMPT: "0" + - name: Install Task + uses: arduino/setup-task@v2 + with: + version: 3.x + repo-token: ${{ secrets.GITHUB_TOKEN }} + - name: Build + run: task package -- --arm64 + - name: Upload artifacts + uses: actions/upload-artifact@v5 + with: + name: waveterm-macos-arm64 + path: make/*.dmg + - name: Write install instructions + run: | + { + echo "## Install" + echo "" + echo "1. Download the \`waveterm-macos-arm64\` artifact below, unzip it, and open the \`.dmg\`." + echo "2. Drag **Wave** into \`/Applications\`." + echo "3. This build is not notarized, so macOS Gatekeeper will block it. Clear the quarantine flag before first launch:" + echo "" + echo '```bash' + echo "xattr -cr /Applications/Wave.app" + echo '```' + } >> "$GITHUB_STEP_SUMMARY"