Skip to content

Merge pull request #1 from makenew/fix-docker-args #11

Merge pull request #1 from makenew/fix-docker-args

Merge pull request #1 from makenew/fix-docker-args #11

Workflow file for this run

---
name: Check
on:
push:
branches:
- '**'
jobs:
test:
name: Test (${{ matrix.os_name }})
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
include:
- os: ubuntu-latest
os_name: Linux
- os: macos-latest
os_name: macOS
- os: windows-latest
os_name: Windows
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup
uses: ./.github/actions/setup
- name: Test
run: npm test
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup
uses: ./.github/actions/setup
- name: Lint
run: npm run lint
build:
name: Build
uses: ./.github/workflows/_build.yml
install:
name: Install (${{ matrix.os_name }})
runs-on: ${{ matrix.os }}
timeout-minutes: 30
needs: build
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
include:
- os: ubuntu-latest
os_name: Linux
- os: macos-latest
os_name: macOS
- os: windows-latest
os_name: Windows
steps:
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: ${{ needs.build.outputs.artifact_name }}
path: .
- name: Find packages
uses: tj-actions/glob@v16
id: packages
with:
files: '*.tgz'
- name: Create package.json
uses: DamianReeves/[email protected]
with:
write-mode: overwrite
path: package.json
contents: |
{"type":"module"}
- name: Create index.js
uses: DamianReeves/[email protected]
with:
write-mode: overwrite
path: index.js
contents: |
import '@makenew/nodets-server'
- name: Install
run: npm install --save ${{ steps.packages.outputs.paths }}
- name: Run
run: node index.js
- name: Run server
run: npx ${{ steps.packages.outputs.paths }} --version
typecheck:
name: Typecheck
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup
uses: ./.github/actions/setup
- name: Typecheck
run: npm run typecheck
containerize:
name: Containerize
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Docker
uses: ./.github/actions/setup-docker
with:
registry_domain: ghcr.io
registry_username: ${{ secrets.GH_USER }}
registry_password: ${{ secrets.GH_TOKEN }}
- name: Build
uses: docker/build-push-action@v3
with:
push: true
platforms: linux/amd64,linux/arm64
cache-from: 'type=local,src=/tmp/.buildx-cache'
cache-to: 'type=local,dest=/tmp/.buildx-cache'
tags: ghcr.io/${{ github.repository }}:smoke-${{ github.sha }}
smoke:
name: Smoke test
needs: containerize
runs-on: ubuntu-latest
timeout-minutes: 30
services:
app:
image: ghcr.io/${{ github.repository }}:smoke-${{ github.sha }}
options: '--init --read-only'
env:
NODE_ENV: test
ports:
- 8080
credentials:
username: ${{ secrets.GH_USER }}
password: ${{ secrets.GH_TOKEN }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup
uses: ./.github/actions/setup
- name: Test
run: npm run test:smoke
env:
PORT: ${{ job.services.app.ports['8080'] }}