Skip to content

configure github action based ansible deployment #1

configure github action based ansible deployment

configure github action based ansible deployment #1

Workflow file for this run

name: Validate
on:
push:
branches:
- main
- dev
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
actions: write
contents: read
jobs:
lint:
name: ESLint
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
cache: npm
cache-dependency-path: ./package.json
node-version: 18
- name: Install deps
run: npm install
- name: Lint
run: npm run lint
typecheck:
name: ʦ TypeScript
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: ⎔ Setup node
uses: actions/setup-node@v4
with:
cache: npm
cache-dependency-path: ./package.json
node-version: 18
- name: Install deps
run: npm install
- name: Type check
run: npm run typecheck --if-present
vitest:
name: ⚡ Vitest
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v4
with:
cache: npm
cache-dependency-path: ./package.json
node-version: 18
- name: Install deps
run: npm install
- name: Run vitest
run: npm run test -- --coverage
cypress:
name: ⚫️ Cypress
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Copy test env vars
run: cp .env.example .env
- name: Setup node
uses: actions/setup-node@v4
with:
cache: npm
cache-dependency-path: ./package.json
node-version: 18
- name: Install deps
run: npm install
- name: ⚙️ Build
run: npm run build
- name: Setup db
run: npx prisma generate && npx prisma db push && npx prisma db seed
- name: Cypress run
uses: cypress-io/github-action@v6
with:
start: npm run start:mocks
wait-on: http://localhost:8811
env:
PORT: 8811
deploy:
name: 🚀 Deploy
runs-on: ubuntu-latest
needs: [lint, typecheck, vitest, cypress]
# only deploy main/dev branch on pushes
if: ${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev') && github.event_name == 'push' }}
steps:
- name: ⬇️ Checkout repo
uses: actions/checkout@v4
with:
submodules: "true"
- name: 🚀 Deploy production
if: ${{ github.ref == 'refs/heads/main' }}
uses: dawidd6/action-ansible-playbook@v2
with:
playbook: ./deploy/deploy.yml
key: ${{secrets.SSH_PRIVATE_KEY}}
# Optional, literal inventory file contents
inventory: ${{ secrets.inventory }}