chore(publish): add ci cd for publish workflow #102
Workflow file for this run
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/[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 }} |