Skip to content

ANS-104 bundle indexing #589

ANS-104 bundle indexing

ANS-104 bundle indexing #589

Workflow file for this run

name: Test and build AR.IO core
on: [push, pull_request, workflow_dispatch]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
permissions:
actions: write
id-token: write
contents: read
checks: write
packages: write
pull-requests: write
env:
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
AWS_REGION: ${{ secrets.AWS_REGION }}
ECR_REGISTRY: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com
steps:
# Setup
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
# Build and test TypeScript
- run: yarn --immutable --immutable-cache
- run: yarn build
- run: yarn test:ci
# Test results report
- name: Report test results
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: Mocha tests
path: test-results.json
reporter: mocha-json
- name: Report code coverage
if: ${{ github.event_name == 'pull_request' }}
uses: romeovs/[email protected]
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
lcov-file: ./coverage/lcov.info
- name: Check code coverage threshold
uses: VeryGoodOpenSource/very_good_coverage@v2
with:
path: ./coverage/lcov.info
min_coverage: 50
# Build and push container image to GCR (only on main branch)
- name: Log in to the GitHub Container Registry
if: ${{ github.ref == 'refs/heads/main' }}
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push container image to GitHub Container Registry
if: ${{ github.ref == 'refs/heads/main' }}
uses: docker/build-push-action@v3
with:
push: true
tags: |
ghcr.io/ar-io/ar-io-core:latest
ghcr.io/ar-io/ar-io-core:${{ github.sha }}
# Build and push container image to ECR
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_BUILD_INVOCATION_ROLE }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Login to ECR
if: ${{ github.ref == 'refs/heads/develop' }}
uses: aws-actions/amazon-ecr-login@v1
- name: Push image ECR
if: ${{ github.ref == 'refs/heads/develop' }}
uses: docker/build-push-action@v3
with:
labels: |
org.opencontainers.image.revision=${{ github.sha }}
push: true
tags: |
${{ env.ECR_REGISTRY }}/ar-io-core:develop
${{ env.ECR_REGISTRY }}/ar-io-core:${{ github.sha }}
# Start CodePipeline to test image
- name: Start CodePipeline
if: ${{ github.ref == 'refs/heads/develop' }}
run: |
aws codepipeline start-pipeline-execution \
--name ${{ secrets.AWS_CODEPIPELINE_NAME }}
# Success notification
- name: Send Slack success notification
if: success()
env:
SLACK_TITLE: Build succeeded!
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
uses: rtCamp/action-slack-notify@v2
# Failure notification
- name: Send Slack failure notification
if: failure()
env:
SLACK_TITLE: Build failed!
SLACK_COLOR: danger
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
uses: rtCamp/action-slack-notify@v2