Skip to content

refactor(sandbox, arns): switch params to config #736

refactor(sandbox, arns): switch params to config

refactor(sandbox, arns): switch params to config #736

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()) &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
with:
name: Mocha tests
path: test-results.json
reporter: mocha-json
# Codecov report
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# 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
if: github.event_name != 'pull_request'
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() && github.event_name != 'pull_request'
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() && github.event_name != 'pull_request'
env:
SLACK_TITLE: Build failed!
SLACK_COLOR: danger
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
uses: rtCamp/action-slack-notify@v2