Skip to content

Merge pull request #38 from ar-io/PE-7163-update-validate-utils #240

Merge pull request #38 from ar-io/PE-7163-update-validate-utils

Merge pull request #38 from ar-io/PE-7163-update-validate-utils #240

Workflow file for this run

name: Arweave Name Token
on: [push, workflow_dispatch]
jobs:
unit:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
name: Check out repository code
- name: Setup Lua
uses: leafo/gh-actions-lua@v10
with:
luaVersion: '5.3' # Specify the Lua version you need
- name: Setup LuaRocks
uses: leafo/[email protected]
- name: Install Busted
run: luarocks install ar-io-ao-0.1-1.rockspec
- name: Run Busted Tests
run: busted .
- name: Upload coverage reports to Codecov
uses: codecov/[email protected]
with:
token: ${{ secrets.CODECOV_TOKEN }}
lint:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: leafo/gh-actions-lua@v10
with:
luaVersion: '5.3'
- name: Setup LuaRocks
uses: leafo/[email protected]
- name: Install Luacheck
run: luarocks install luacheck
- run: luacheck src spec
# TODO: add ar-io-sdk e2e tests against lua code to be bundled on changes (e.g. create a new ant, publish it and validate it works with the sdk)
integration:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/[email protected]
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- run: yarn --frozen-lockfile
- run: yarn aos:build
- run: yarn test
publish:
runs-on: ubuntu-latest
environment: main
needs: [lint, unit, integration]
permissions:
contents: write # to be able to publish a GitHub release
outputs:
published_lua_code_id: ${{ steps.publish-lua-code.outputs.srcTxId }}
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop'
steps:
- uses: actions/checkout@v4
- uses: actions/[email protected]
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- run: yarn --frozen-lockfile
- name: Publish Lua Code
id: publish-lua-code
env:
WALLET: ${{ secrets.WALLET }}
GITHUB_SHA: ${{ github.sha }}
DRY_RUN: ${{github.ref_name != 'main'}}
run: |
PUBLISH_OUTPUT=$(yarn aos:publish 2>&1)
# This line extracts the transaction ID of the published Lua source code from the output
# It uses grep to find the line containing "Generated source code data item with id:"
# Then it uses sed to extract the 43-character transaction ID
LUA_SOURCE_CODE_TX_ID=$(echo "$PUBLISH_OUTPUT" | grep -oE "Generated source code data item with id:\s[a-zA-Z0-9_-]{43}" | sed -E 's/.*([a-zA-Z0-9_-]{43})/\1/')
echo "::set-output name=srcTxId::$LUA_SOURCE_CODE_TX_ID"
- name: Create Tag for Lua ID
if: ${{github.ref_name == 'main'}}
run: |
git tag "${{ steps.publish-lua-code.outputs.srcTxId }}"
git push origin "${{ steps.publish-lua-code.outputs.srcTxId }}"
notify:
runs-on: ubuntu-latest
needs: [unit, integration, publish]
if: always()
steps:
- name: Notify Slack on Success
if: (github.ref_name == 'main' || github.ref_name == 'develop') && needs.unit.result == 'success' && needs.integration.result == 'success'
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
text: |
Unit Tests: ${{ needs.unit.result }}
Integration Tests: ${{ needs.integration.result }}
Published Lua Id: ${{ needs.publish.outputs.published_lua_code_id || 'N/A' }}
fields: repo,message,commit,author,action,eventName,ref,workflow,job
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Notify Slack on Failure
if: failure()
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
text: |
Unit Tests: ${{ needs.unit.result }}
Integration Tests: ${{ needs.integration.result }}
fields: repo,message,commit,author,action,eventName,ref,workflow,job
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}