diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..120c45e8ca760bab7a2a36fab77f07e985f93cb2 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,40 @@ +cache: # Cache persists between pipelines + key: ${CI_COMMIT_REF_SLUG} + paths: + - node_modules/ + - .next/ + +stages: # List of stages for jobs, and their order of execution + - build + - test + - deploy + +build-job: # This job runs in the build stage, which runs first. + stage: build + script: + - npm ci + - npm run build + - chmod u+x node_modules + rules: + - if: '$CI_COMMIT_REF_NAME == "production"' # Only run pipeline on production or when manually requested + - when: manual + tags: + - prod-runner # Use the runner with correct tag to run this pipeline + +unit-test-job: # This job runs in the test stage. + stage: test # It only starts when the job in the build stage completes successfully. + script: + - echo "Running unit tests..." + +deploy-job: # This job runs in the deploy stage. + stage: deploy # It only runs when *all* jobs in the test stage complete successfully. + environment: production + script: + - export PORT=80 + - touch ./next.log + - sudo fuser -k $PORT/tcp || true # Kill any process running on $PORT + - sudo npm run start $PORT > ./next.log 2>&1 & # Run the web app + artifacts: + paths: + - next.log # Keep output from deploy as artifact + diff --git a/package.json b/package.json index 9c48b4470d9c3e56cf7217249142a55b81bd605d..b9d63def561a5e0d165dcdb3e09b689cfa049d3b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "dev": "next dev", "build": "next build", - "start": "next start", + "start": "next start -p $PORT", "lint": "next lint" }, "dependencies": {