Create ci.yml #1
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: 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' |