diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..ee323bd --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,67 @@ +name: Build +run-name: Build +on: + pull_request: + push: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Checkout + uses: actions/checkout@v4 + - name: Login to Container Registry + if: ${{ gitea.event_name != 'pull_request' }} + uses: docker/login-action@v3 + with: + registry: docker.valverde.cloud + username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} + password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }} + + - name: Generate Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: | + docker.valverde.cloud/${{ gitea.repository }} + tags: | + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + type=sha + flavor: | + latest=true + - name: Generate legacy API Docker metadata + id: meta-legacy-api + uses: docker/metadata-action@v5 + with: + images: | + docker.valverde.cloud/commelechef/legacy-api + tags: | + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + type=sha + flavor: | + latest=true + + - name: Build + uses: docker/build-push-action@v6 + with: + context: . + file: ./docker/website/Dockerfile + push: ${{ gitea.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + - name: Build legacy API + uses: docker/build-push-action@v6 + with: + context: . + file: ./docker/legacy-api/Dockerfile + push: ${{ gitea.event_name != 'pull_request' }} + tags: ${{ steps.meta-legacy-api.outputs.tags }} + labels: ${{ steps.meta-legacy-api.outputs.labels }} diff --git a/.gitea/workflows/lint.yaml b/.gitea/workflows/lint.yaml new file mode 100644 index 0000000..ce2029f --- /dev/null +++ b/.gitea/workflows/lint.yaml @@ -0,0 +1,25 @@ +name: Lint +run-name: Lint +on: + push: + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Set up Bun + uses: oven-sh/setup-bun@v1 + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version: "20" + - name: Checkout + uses: actions/checkout@v4 + - name: Install dependencies + run: bun install --frozen-lockfile + - name: Lint TypeScript common + run: npm -w packages/common run lint:tsc + - name: Lint TypeScript server + run: npm -w packages/server run lint:tsc + - name: Lint TypeScript webapp + run: npm -w packages/webapp run lint:tsc diff --git a/packages/common/package.json b/packages/common/package.json index 5ba4905..0ea2d38 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -7,6 +7,9 @@ "./webrpc": "./src/webrpc/index.ts", "./*": "./src/*.ts" }, + "scripts": { + "lint:tsc": "tsc --noEmit" + }, "dependencies": { "@effect/rpc": "^0.69.2", "effect": "^3.17.13" diff --git a/packages/server/package.json b/packages/server/package.json index 5b38afe..eb98341 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -4,7 +4,8 @@ "type": "module", "scripts": { "bun:dev": "NODE_ENV=development bun --hot ./src/entrypoint.bun.ts", - "node:dev": "NODE_ENV=development tsx --watch ./src/entrypoint.node.ts" + "node:dev": "NODE_ENV=development tsx --watch ./src/entrypoint.node.ts", + "lint:tsc": "tsc --noEmit" }, "dependencies": { "@effect/opentelemetry": "^0.56.6", diff --git a/packages/webapp/package.json b/packages/webapp/package.json index 2baf47f..765117a 100644 --- a/packages/webapp/package.json +++ b/packages/webapp/package.json @@ -7,6 +7,7 @@ "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint .", + "lint:tsc": "tsc --noEmit", "preview": "vite preview" }, "dependencies": {