Merge pull request #21 from ar-io/PE-6326-automate-ant-process-publis… #123
This file contains 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: Arweave Name Token | |
on: [push, workflow_dispatch] | |
jobs: | |
unit: | |
runs-on: ubuntu-latest | |
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/gh-actions-luarocks@v4.3.0 | |
- 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/codecov-action@v4.0.1 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
# 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/setup-node@v4.0.2 | |
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: [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/setup-node@v4.0.2 | |
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) | |
cat $PUBLISH_OUTPUT | |
# 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 | |
# run: | | |
# git tag "${{ steps.publish-lua-code.outputs.srcTxId }}" | |
# git push --tags | |
notify: | |
runs-on: ubuntu-latest | |
needs: [unit, integration, publish] | |
if: always() | |
steps: | |
- name: Notify Slack on Success | |
if: github.ref == 'refs/heads/main' && needs.unit.result == 'success' && needs.integration.result == 'success' && (needs.publish.result == 'success' || needs.publish.result == 'skipped') | |
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 }} |