diff --git a/.devfile.yaml b/.devfile.yaml new file mode 100644 index 00000000..e4199758 --- /dev/null +++ b/.devfile.yaml @@ -0,0 +1,126 @@ +# +# Copyright 2023 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +schemaVersion: 2.2.0 +metadata: + name: devfile-web + displayName: Devfile Web Services + description: A devworkspace for devfile web services. + language: TypeScript + projectType: Next.js + tags: + - TypeScript + - Node.js + - Next.js + - Devfile + - Registry + - Documentation + - devfile.io + version: 1.0.0 +components: + - name: image-builder + image: + imageName: "quay.io/{{profile}}/{{project}}:{{imageTag}}" + dockerfile: + args: + - --build-arg=PROJECT_NAME={{project}} + uri: Dockerfile + - name: runner + attributes: + container-overrides: + securityContext: + runAsUser: 1001 + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: ["ALL"] + seccompProfile: + type: "RuntimeDefault" + container: + image: node:16-alpine + command: ['tail', '-f', '/dev/null'] + mountSources: true + memoryLimit: "{{memoryLimit}}" + volumeMounts: + - name: cache + path: /.cache + - name: yarn-global + path: /.yarn + - name: npm-global + path: /.npm + endpoints: + - name: http-4200 + protocol: http + targetPort: 4200 + env: + - name: DEPLOY_CONFIG + value: "{{deployConfig}}" + - name: cache + volume: + ephemeral: true + size: 10Gi + - name: yarn-global + volume: + ephemeral: true + - name: npm-global + volume: + ephemeral: true +commands: + # Install dependency packages + - id: build + exec: + commandLine: yarn install --frozen-lockfile --global-folder /.yarn + component: runner + workingDir: ${PROJECT_SOURCE} + hotReloadCapable: true + group: + isDefault: true + kind: build + # Run tests in project + - id: test + exec: + commandLine: yarn nx test {{project}} + component: runner + workingDir: ${PROJECT_SOURCE} + group: + isDefault: true + kind: test + # Run development runtime + - id: run + exec: + commandLine: yarn nx serve {{project}} --configuration ${DEPLOY_CONFIG} + component: runner + workingDir: ${PROJECT_SOURCE} + group: + isDefault: true + kind: run + # Deploy image + - id: build-and-deploy-image + apply: + component: image-builder + group: + isDefault: true + kind: deploy +variables: + # Web project to be run, default: landing-page + project: landing-page + # Image tag + imageTag: next + # Profile of the image on quay.io + profile: devfile + # Memory limit on runner, default: 1Gi + memoryLimit: 1Gi + # Deployment configuration to use + deployConfig: development