Skip to content

feat: memory runtime, fixed collections & low-level stdlib primitives #18

feat: memory runtime, fixed collections & low-level stdlib primitives

feat: memory runtime, fixed collections & low-level stdlib primitives #18

Workflow file for this run

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 }}