diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..aa4de10 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,90 @@ +image: docker:20.10.17 + +variables: + DOCKER_HOST: tcp://docker:2375 + DOCKER_TLS_CERTDIR: '' + DEV_CONTAINER_REGISTRY: eu.gcr.io/vnc-development/prosody-muc-rest-api:development + IMAGE_TAG: eu.gcr.io/vnc-development/prosody-muc-rest-api:development-$CI_COMMIT_SHORT_SHA + IMAGE_TAG_PROD: eu.gcr.io/vnc-dev-275609/prosody-muc-rest-api:production + IMAGE_TAG_STABLE: eu.gcr.io/vnc-stable/prosody-muc-rest-api:stable + +services: + - name: docker:20.10.17-dind + alias: docker + +stages: + - build_deb + - docker + - scan + - notification + +dev_deploy: + before_script: + - until docker info; do sleep 1; done + - base64 -d $SA_Development | docker login -u _json_key --password-stdin https://eu.gcr.io + stage: docker + artifacts: + public: false + expire_in: 12h + paths: + - scan + script: + - docker build -t $IMAGE_TAG . + - docker push $IMAGE_TAG + - docker image save $IMAGE_TAG -o scan/mucrest.tgz + only: + - master + +dev_trivy: + image: eu.gcr.io/vnc-development/docker-vnc-runner:latest + stage: scan + script: + - apt -y update + - apt -y install wget apt-transport-https gnupg lsb-release + - wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | apt-key add - + - echo "deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" >> /etc/apt/sources.list.d/trivy.list + - apt -y update + - apt -y install trivy + - trivy image --input scan/mucrest.tgz + only: + - master + + + +prod_deploy: + before_script: + - until docker info; do sleep 1; done + - base64 -d $SA_Production | docker login -u _json_key --password-stdin https://eu.gcr.io + stage: docker + script: + - echo $CI_COMMIT_TAG + - COMMIT_VERSION=$(echo $CI_COMMIT_TAG | awk -F'prod-' '{print $2}') + - echo $COMMIT_VERSION + + - DEV_TAG=$DEV_CONTAINER_REGISTRY-$COMMIT_VERSION + - echo $DEV_TAG + - docker pull $DEV_TAG + - PROD_IMAGE=$IMAGE_TAG_PROD-$COMMIT_VERSION + - docker tag $DEV_TAG $PROD_IMAGE + - docker push $PROD_IMAGE + rules: + - if: $CI_COMMIT_TAG =~ /^prod-.*/ + +stable_deploy: + before_script: + - until docker info; do sleep 1; done + - base64 -d $SA_Production | docker login -u _json_key --password-stdin https://eu.gcr.io + stage: docker + script: + - echo $CI_COMMIT_TAG + - COMMIT_VERSION=$(echo $CI_COMMIT_TAG | awk -F'stable-' '{print $2}') + - echo $COMMIT_VERSION + + - DEV_TAG=$DEV_CONTAINER_REGISTRY-$COMMIT_VERSION + - echo $DEV_TAG + - docker pull $DEV_TAG + - STABLE_IMAGE=$IMAGE_TAG_STABLE-$COMMIT_VERSION + - docker tag $DEV_TAG $STABLE_IMAGE + - docker push $STABLE_IMAGE + rules: + - if: $CI_COMMIT_TAG =~ /^stable-.*/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a917158 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM alpine:3.16 + +RUN apk update +RUN apk add make gcc python3 expat-static expat-dev libxmlb-dev libstdc++6 nodejs nodejs-dev libc-dev g++ libpq libpq-dev yarn +# RUN yarn install -g serve +RUN yarn global add pm2 + +RUN mkdir -p /usr/share/prosody-muc-rest +RUN mkdir -p /usr/share/prosody-muc-rest/config +ADD app /usr/share/prosody-muc-rest/app + +COPY package.json /usr/share/prosody-muc-rest/package.json +COPY yarn.lock /usr/share/prosody-muc-rest/yarn.lock +COPY config/prosody-muc-rest.js /usr/share/prosody-muc-rest/config/prosody-muc-rest.js + +RUN cd /usr/share/prosody-muc-rest && yarn install + +#RUN npm install /usr/share/prosody-muc-rest/app + +ENTRYPOINT ["pm2-runtime", "/usr/share/prosody-muc-rest/app/app.js"] diff --git a/scan/.keep b/scan/.keep new file mode 100644 index 0000000..e69de29