Skip to content

Create ci.yml

Create ci.yml #1

Workflow file for this run

name: Node CI
# Push tests pushes; PR tests merges
on: [ push, pull_request ]
defaults:
run:
shell: bash
jobs:
# Run tests on PR branches
build_prs:
name: Run tests on PR branch
if: github.ref != 'refs/heads/main' || github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
- name: Install
run: npm install
- name: Typescript compile
run: tsc
- name: Run tests
run: npm run test
# Deploy the build
deploy_staging:
name: Deploy staging
if: github.ref == 'refs/heads/main' && github.event_name == 'push' # Don't run twice for PRs (for now)
runs-on: ubuntu-latest
concurrency:
group: staging_${{ github.repository }}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
- name: Install
run: npm install
- name: Typescript compile
run: tsc
- name: Run tests
run: npm run test
- name: Deploy to staging
uses: beginner-corp/actions/deploy@main
with:
begin_token: ${{ secrets.BEGIN_TOKEN }}
begin_env_name: staging
channel: 'main'
# Deploy the build
deploy_production:
name: Deploy production
if: startsWith(github.ref, 'refs/tags/v') && github.event_name == 'push' # Don't run twice for PRs (for now)
runs-on: ubuntu-latest
concurrency:
group: production_${{ github.repository }}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
- name: Install
run: npm install
- name: Typescript compile
run: tsc
- name: Run tests
run: npm run test
- name: Deploy to production
uses: beginner-corp/actions/deploy@main
with:
begin_token: ${{ secrets.BEGIN_TOKEN }}
begin_env_name: production
channel: 'main'