feat: memory runtime, fixed collections & low-level stdlib primitives #18
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI for AssemblyScript | |
| on: | |
| push: | |
| branches: | |
| - 'v*' | |
| tags: | |
| - 'v*' | |
| pull_request: | |
| branches: | |
| - 'v*' | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '24.x' | |
| - name: Update npm | |
| run: npm install -g npm@latest | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Build | |
| run: npm run build | |
| - name: Run tests | |
| run: npm test | |
| publish: | |
| runs-on: ubuntu-latest | |
| needs: test | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| permissions: | |
| contents: write | |
| id-token: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: '24.x' | |
| registry-url: 'https://registry.npmjs.org' | |
| - name: Update npm | |
| run: npm install -g npm@latest | |
| - name: Patch package.json for @btc-vision/assemblyscript | |
| run: | | |
| # Extract version from tag | |
| VERSION="${{ github.ref_name }}" | |
| VERSION="${VERSION#v}" # Remove 'v' prefix if present | |
| # Update package.json: change name and version | |
| jq --arg name "@btc-vision/assemblyscript" \ | |
| --arg version "$VERSION" \ | |
| '.name = $name | .version = $version' \ | |
| package.json > package.json.tmp | |
| mv package.json.tmp package.json | |
| echo "Updated package.json:" | |
| cat package.json | head -20 | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Build | |
| run: npm run build | |
| - name: Determine npm tag | |
| id: npm_tag | |
| run: | | |
| VERSION="${{ github.ref_name }}" | |
| if [[ "$VERSION" == *"-alpha"* ]]; then | |
| echo "tag=alpha" >> $GITHUB_OUTPUT | |
| elif [[ "$VERSION" == *"-beta"* ]]; then | |
| echo "tag=beta" >> $GITHUB_OUTPUT | |
| elif [[ "$VERSION" == *"-rc"* ]]; then | |
| echo "tag=rc" >> $GITHUB_OUTPUT | |
| else | |
| echo "tag=latest" >> $GITHUB_OUTPUT | |
| fi | |
| echo "Determined npm tag: $(cat $GITHUB_OUTPUT | grep tag | cut -d= -f2)" | |
| - name: Publish to npm | |
| run: npm publish --access public --provenance --tag ${{ steps.npm_tag.outputs.tag }} | |
| release: | |
| runs-on: ubuntu-latest | |
| needs: publish | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Generate changelog | |
| id: changelog | |
| uses: mikepenz/release-changelog-builder-action@v6 | |
| with: | |
| configurationJson: | | |
| { | |
| "categories": [ | |
| { | |
| "title": "### Breaking Changes", | |
| "labels": ["breaking", "breaking-change", "BREAKING-CHANGE"] | |
| }, | |
| { | |
| "title": "### Features", | |
| "labels": ["feature", "feat", "enhancement"] | |
| }, | |
| { | |
| "title": "### Bug Fixes", | |
| "labels": ["bug", "fix", "bugfix"] | |
| }, | |
| { | |
| "title": "### Performance", | |
| "labels": ["performance", "perf"] | |
| }, | |
| { | |
| "title": "### Documentation", | |
| "labels": ["documentation", "docs"] | |
| }, | |
| { | |
| "title": "### Dependencies", | |
| "labels": ["dependencies", "deps"] | |
| }, | |
| { | |
| "title": "### Other Changes", | |
| "labels": [] | |
| } | |
| ], | |
| "sort": { | |
| "order": "ASC", | |
| "on_property": "mergedAt" | |
| }, | |
| "template": "#{{CHANGELOG}}", | |
| "pr_template": "- #{{TITLE}} ([##{{NUMBER}}](#{{URL}})) by @#{{AUTHOR}}", | |
| "empty_template": "- No changes", | |
| "max_tags_to_fetch": 200, | |
| "max_pull_requests": 200, | |
| "max_back_track_time_days": 365, | |
| "tag_resolver": { | |
| "method": "semver" | |
| } | |
| } | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Update CHANGELOG.md | |
| env: | |
| CHANGELOG_CONTENT: ${{ steps.changelog.outputs.changelog }} | |
| run: | | |
| TAG="${{ github.ref_name }}" | |
| DATE=$(date +%Y-%m-%d) | |
| NEW_HEADER="## [$TAG] - $DATE" | |
| # Write changelog content to temp file using env var (avoids shell escaping) | |
| printf '%s\n' "$CHANGELOG_CONTENT" > /tmp/new_entry.md | |
| if [ -f CHANGELOG.md ]; then | |
| # Create new file with entry inserted after header line | |
| { | |
| head -n 1 CHANGELOG.md | |
| echo "" | |
| echo "$NEW_HEADER" | |
| echo "" | |
| cat /tmp/new_entry.md | |
| echo "" | |
| tail -n +2 CHANGELOG.md | |
| } > /tmp/CHANGELOG_NEW.md | |
| mv /tmp/CHANGELOG_NEW.md CHANGELOG.md | |
| else | |
| # Create new CHANGELOG.md | |
| { | |
| echo "# Changelog" | |
| echo "" | |
| echo "All notable changes to this project will be documented in this file." | |
| echo "" | |
| echo "This changelog is automatically generated from merged pull requests." | |
| echo "" | |
| echo "$NEW_HEADER" | |
| echo "" | |
| cat /tmp/new_entry.md | |
| } > CHANGELOG.md | |
| fi | |
| rm -f /tmp/new_entry.md | |
| - name: Commit changelog | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| git add CHANGELOG.md | |
| git diff --staged --quiet || git commit -m "docs: update CHANGELOG.md for ${{ github.ref_name }}" | |
| git push origin HEAD:main || echo "No changes to push or push failed" | |
| - name: Determine if prerelease | |
| id: prerelease | |
| run: | | |
| VERSION="${{ github.ref_name }}" | |
| if [[ "$VERSION" == *"-alpha"* ]] || [[ "$VERSION" == *"-beta"* ]] || [[ "$VERSION" == *"-rc"* ]]; then | |
| echo "is_prerelease=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "is_prerelease=false" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: ${{ github.ref_name }} | |
| name: Release ${{ github.ref_name }} | |
| body: ${{ steps.changelog.outputs.changelog }} | |
| prerelease: ${{ steps.prerelease.outputs.is_prerelease == 'true' }} | |
| generate_release_notes: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |