Skip to content

Commit

Permalink
fix(circleci): update ci (#8)
Browse files Browse the repository at this point in the history
* fix(circleci): update ci

* chore(test): update test db password

* chore(docker): ignore hadolint rule

* chore(docker): change version of docker

* chore(docker): go back to older version

* style(dockerfile): fix hadolint
  • Loading branch information
WikiRik committed May 1, 2021
1 parent ca00c6b commit c0b473a
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 45 deletions.
97 changes: 58 additions & 39 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
orbs:
slack: circleci/slack@3.4.1
slack: circleci/slack@3.4.2 # FIXME update to v4
node: circleci/node@4.2.0
shellcheck: circleci/shellcheck@2.2.2
docker: circleci/docker@1.5.0
version: 2.1
jobs:
test:
machine:
image: ubuntu-1604:201903-01
image: ubuntu-2004:202101-01
steps:
- checkout
- run: docker run --name postgres -p 5432:5432 -d postgres:10.6
- run: docker run --name postgres -e POSTGRES_PASSWORD='5ecr3t' -p 5432:5432 -d postgres:10.16
- run:
name: Install Node
command: |
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
echo 'export PATH=/usr/bin:$PATH' >> $BASH_ENV
which node && node -v
- run: npm install
echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV
echo ' [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV
nvm install v14.16.0
nvm alias default v14.16.0
- node/install-packages
- run: mkdir -p ~/reports/jest
- run:
name: Run tests
Expand All @@ -26,52 +29,58 @@ jobs:
- store_artifacts:
path: ~/reports
build:
machine:
image: ubuntu-1604:201903-01
docker:
- image: cimg/base:2021.03
steps:
- checkout
- setup_remote_docker:
version: 20.10.2
- run: docker-compose -f docker/docker-compose.yml -f docker/docker-compose.dev.yml build --no-cache knowledge
eslint:
machine:
image: ubuntu-1604:201903-01
docker:
- image: cimg/node:14.16.0
steps:
- checkout
- run:
name: Install Node
command: |
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
echo 'export PATH=/usr/bin:$PATH' >> $BASH_ENV
which node && node -v
- run: npm install
- node/install-packages
- run: mkdir -p ~/reports
- run: npm run lint -- --format junit --output-file ~/reports/eslint.xml
- store_test_results:
path: ~/reports
- store_artifacts:
path: ~/reports
yamllint:
machine:
image: ubuntu-1604:201903-01
docker:
- image: cimg/python:3.9.2
steps:
- checkout
- run: pip install yamllint
- run: yamllint -d .yamllint.yml .
shellcheck:
docker:
- image: cimg/base:2021.03
steps:
- checkout
- shellcheck/install
- shellcheck/check
audit:
docker:
- image: cimg/node:14.16.0
steps:
- checkout
- run: npm audit --production
- slack/status:
fail_only: true
failure_message: The audit check for \`$CIRCLE_PROJECT_REPONAME\` has failed.
docker-build-and-push:
machine:
image: ubuntu-1604:201903-01
docker:
- image: cimg/node:14.16.0
steps:
- checkout
- run:
name: Install Node
command: |
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
echo 'export PATH=/usr/bin:$PATH' >> $BASH_ENV
which node && node -v
- run: npm install
- setup_remote_docker:
version: 20.10.2
- node/install-packages
- run: npx semantic-release
- run: docker build --tag aegee/knowledge:$(node -p "require('./package.json').version") --tag aegee/knowledge:latest -f ./docker/knowledge/Dockerfile .
- run: docker build --tag aegee/knowledge:$(node -p "require('./package.json').version") --tag aegee/knowledge:latest -f docker/knowledge/Dockerfile .
- run: docker login --username $DOCKER_LOGIN --password $DOCKER_PASSWORD
- run: docker push aegee/knowledge:$(node -p "require('./package.json').version")
- run: docker push aegee/knowledge:latest
Expand All @@ -81,24 +90,34 @@ jobs:

workflows:
version: 2
test:
jobs:
- test
eslint:
linters:
jobs:
- eslint
yamllint:
jobs:
- yamllint
- shellcheck
- docker/hadolint:
dockerfiles: $(find . -name '*Dockerfile*')
build:
jobs:
- build:
filters:
branches:
ignore: main
test:
jobs:
- test
docker-build-and-push:
jobs:
- docker-build-and-push:
filters:
branches:
only: main
audit:
triggers:
- schedule:
cron: "0 0 * * 5"
filters:
branches:
only: main
jobs:
- audit
2 changes: 2 additions & 0 deletions .hadolint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ignored:
- DL3025
2 changes: 1 addition & 1 deletion config/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const config = {
postgres: {
host: 'localhost',
database: 'knowledge-testing',
password: process.env.PG_PASSWORD || 'postgres',
password: process.env.PG_PASSWORD || '5ecr3t',
},
logger: {
silent: (typeof process.env.ENABLE_LOGGING !== 'undefined') ? (!process.env.ENABLE_LOGGING) : true
Expand Down
14 changes: 9 additions & 5 deletions docker/knowledge/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
FROM node:12
# FIXME use alpine
FROM node:14.16.1

RUN mkdir -p /usr/app/src \
&& mkdir -p /usr/app/media \
&& mkdir -p /usr/app/scripts

COPY ./docker/knowledge/bootstrap.sh /usr/app/scripts/bootstrap.sh
COPY ./ /usr/app/src
COPY . /usr/app/src

RUN chown -R node:node /usr/app

Expand All @@ -16,9 +17,12 @@ USER node
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH="/home/node/.npm-global/bin:${PATH}"

RUN npm install -g --loglevel warn nodemon bunyan && npm cache clean --force
RUN npm install --loglevel warn
# FIXME remove nodemon for production
RUN npm install -g nodemon@2.0.7 \
&& npm install -g bunyan@1.8.15 \
&& npm cache clean --force \
&& npm install

CMD sh /usr/app/scripts/bootstrap.sh && npm start
CMD sh /usr/app/scripts/bootstrap.sh && nodemon -e "js,json" lib/run.js

EXPOSE 8084

0 comments on commit c0b473a

Please sign in to comment.