diff --git a/.arclint b/.arclint index e445eac..5741c20 100644 --- a/.arclint +++ b/.arclint @@ -33,6 +33,7 @@ "severity": { "1": "advice", "2": "advice", + "3": "advice", "5": "disabled" } } diff --git a/.github/workflows/build-container.yml b/.github/workflows/build-container.yml new file mode 100644 index 0000000..1273ce0 --- /dev/null +++ b/.github/workflows/build-container.yml @@ -0,0 +1,49 @@ +name: "Build container images" +on: + push: + paths: + - 'container/**' + pull_request: + paths: + - 'container/**' + workflow_dispatch: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }}/lighthouse-ci-server + +jobs: + container-build: + name: "Build and publish containers to GitHub Container Registry" + permissions: + contents: read + packages: write + attestations: write + runs-on: ubuntu-latest + steps: + - name: "Log in to the Container registry" + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: "Extract metadata (tags, labels) for Docker" + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: "Build and push Docker image" + id: push + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: ./container/lighthouse-ci-server + file: ./container/lighthouse-ci-server/Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + - name: "Generate artifact attestation" + uses: actions/attest-build-provenance@v1 + with: + subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}} + subject-digest: ${{ steps.push.outputs.digest }} + push-to-registry: true diff --git a/container/lighthouse-ci-server/Dockerfile b/container/lighthouse-ci-server/Dockerfile new file mode 100644 index 0000000..2ec1543 --- /dev/null +++ b/container/lighthouse-ci-server/Dockerfile @@ -0,0 +1,12 @@ +FROM node:18-bullseye-slim + +# Install utilities +RUN apt-get update --fix-missing && apt-get install -y python build-essential && apt-get clean + +WORKDIR /usr/src/lhci +COPY package.json . +COPY lighthouserc.json . +RUN npm install + +EXPOSE 9001 +CMD [ "npm", "start" ] diff --git a/container/lighthouse-ci-server/lighthouserc.json b/container/lighthouse-ci-server/lighthouserc.json new file mode 100644 index 0000000..d048f83 --- /dev/null +++ b/container/lighthouse-ci-server/lighthouserc.json @@ -0,0 +1,12 @@ +{ + "ci": { + "server": { + "port": 9001, + "storage": { + "storageMethod": "sql", + "sqlDialect": "sqlite", + "sqlDatabasePath": "/data/lhci.db" + } + } + } +} diff --git a/container/lighthouse-ci-server/package.json b/container/lighthouse-ci-server/package.json new file mode 100644 index 0000000..c737aa7 --- /dev/null +++ b/container/lighthouse-ci-server/package.json @@ -0,0 +1,15 @@ +{ + "name": "lhci", + "version": "0.0.0", + "scripts": { + "start": "lhci server --config=./lighthouserc.json" + }, + "dependencies": { + "@lhci/cli": "0.13.0", + "@lhci/server": "0.13.0", + "mysql2": "^2.1.0", + "pg": "^8.2.1", + "pg-hstore": "^2.3.3", + "sqlite3": "^5.0.0" + } +}