Skip to content

chore(publish): add ci cd for publish workflow #102

chore(publish): add ci cd for publish workflow

chore(publish): add ci cd for publish workflow #102

Workflow file for this run

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/[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 }}
# 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
needs: [unit, integration]
if: github.ref == 'refs/heads/main'
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 aos:publish
env:
ARWEAVE_PUBLISHING_KEY: ${{ secrets.ARWEAVE_PUBLISHING_KEY }}
outputs:
publish-output: ${{ steps.publish.outputs.publish-output }}
create-lua-tag:
needs: publish
runs-on: ubuntu-latest
if: always()
steps:
- name: Create Lua code version tag
run: |
echo "${{ fromJson(needs.publish.outputs.publish-output)['Lua Code Transaction ID'] }}" > tag.txt
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git tag -a ${{ fromJson(needs.publish.outputs.publish-output)['Lua Code Transaction ID'] }} -F tag.txt
git push origin ${{ fromJson(needs.publish.outputs.publish-output)['Lua Code Transaction ID'] }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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 }}
Publish Output: ${{ fromJson(needs.publish.outputs.publish-output) }}
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 }}