add CI stuff

This commit is contained in:
mrjvs 2023-09-13 23:08:44 +02:00
parent 95f0026f5a
commit c2ae6432ae
8 changed files with 169 additions and 2 deletions

7
.dockerignore Normal file
View File

@ -0,0 +1,7 @@
node_modules
*.log*
.nitro
.cache
.output
.env
dist

52
.github/workflows/linting.yml vendored Normal file
View File

@ -0,0 +1,52 @@
name: Linting and Testing
on:
push:
branches:
- master
- dev
pull_request:
jobs:
linting:
name: Run Linters
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
- name: Install npm packages
run: npm install
- name: Prepare for linting
run: npm run prepare
- name: Run ESLint
run: npm lint
building:
name: Build project
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
- name: Install npm packages
run: npm install
- name: Build Project
run: npm build

55
.github/workflows/publish.yml vendored Normal file
View File

@ -0,0 +1,55 @@
name: Docker Publish
on:
push:
branches:
- master
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v2
- name: Get version
id: package-version
uses: martinbeentjes/npm-get-version-action@main
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
latest=auto
tags: |
type=semver,pattern={{version}},value=v${{ steps.package-version.outputs.current-version }}
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
push: true
context: .
labels: ${{ steps.meta.outputs.labels }}
tags: ${{ steps.meta.outputs.tags }}

30
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: Release
on:
push:
branches:
- master
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Get version
id: package-version
uses: martinbeentjes/npm-get-version-action@main
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.package-version.outputs.current-version }}
release_name: Bot v${{ steps.package-version.outputs.current-version }}
draft: false
prerelease: false

19
Dockerfile Normal file
View File

@ -0,0 +1,19 @@
FROM node:18-alpine as base
WORKDIR /app
# Build layer
FROM base as build
COPY package-lock.json package.json ./
RUN npm install --frozen-lockfile
COPY . .
RUN npm run build
# Production layer
FROM base as production
EXPOSE 3000
ENV NODE_ENV=production
COPY --from=build /app/.output ./.output
CMD ["node", ".output/server/index.mjs"]

View File

@ -10,3 +10,8 @@ features:
supported platforms: supported platforms:
- cloudflare workers - cloudflare workers
- nodejs - nodejs
## Todos:
- [ ] release with multi platform
- [ ] Easy deploy to cloudflare button (just needs CI)
- [ ] Test on cloudflare

1
package-lock.json generated
View File

@ -8,7 +8,6 @@
"name": "simple-proxy", "name": "simple-proxy",
"version": "2.0.0", "version": "2.0.0",
"dependencies": { "dependencies": {
"h3": "^1.8.1",
"nitropack": "latest" "nitropack": "latest"
}, },
"devDependencies": { "devDependencies": {

View File

@ -6,7 +6,7 @@
"prepare": "nitropack prepare", "prepare": "nitropack prepare",
"dev": "nitropack dev", "dev": "nitropack dev",
"build": "nitropack build", "build": "nitropack build",
"preview": "node .output/server/index.mjs", "start": "node .output/server/index.mjs",
"lint": "eslint --ext .js src/", "lint": "eslint --ext .js src/",
"lint:fix": "eslint --fix --ext .js src/" "lint:fix": "eslint --fix --ext .js src/"
}, },