From 7bb585760e7607b15cd9823b8bde665437ca1c66 Mon Sep 17 00:00:00 2001 From: DrunkBatya Date: Mon, 13 May 2024 05:30:42 -0400 Subject: [PATCH 1/5] Add CI/CD --- .dockerignore | 3 +++ .github/workflows/build.yml | 45 +++++++++++++++++++++++++++++++++++++ Dockerfile | 8 +++---- 3 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.dockerignore b/.dockerignore index 72e8ffc..c2c6dd5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,4 @@ * +!*.js +!*.json +!/bin diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..970c88e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,45 @@ +name: 'Build and push' + +on: + push: + branches: + - dev + tags: + - '*' + +jobs: + build: + runs-on: ubuntu-22.04 + steps: + - name: 'Checkout code' + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: 'Set image tag and name' + id: tag + run: | + IMAGE_TAG="master" + if [[ "${{ github.ref }}" == "refs/tags/"* ]]; then + REF=${{ github.ref }}; + TAG_FULL=${REF#refs/*/}; + IMAGE_TAG=${TAG_FULL//\//_}; + fi + echo "image_tag=${IMAGE_TAG}" >> $GITHUB_OUTPUT + echo "image_name=${{ secrets.IMAGE_NAME }}" >> $GITHUB_OUTPUT + + - name: 'Login to Docker Hub' + uses: docker/login-action@v2 + with: + username: ${{ secrets.REGISTRY_LOGIN }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: 'Set up Docker Buildx' + uses: docker/setup-buildx-action@v2 + + - name: 'Build and push dev' + id: docker_build + uses: docker/build-push-action@v4 + with: + push: true + tags: ${{steps.tag.outputs.image_name}}:${{steps.tag.outputs.image_tag}} diff --git a/Dockerfile b/Dockerfile index 6e8b874..9d8ef12 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ FROM node:14-alpine -ARG ReviewMeVersion=2 +ADD . /app/ +WORKDIR /app -# Workaroudn when building on an AWS EC2 c5/m5/t3 instance -# RUN npm config set unsafe-perm true +RUN npm install -g . -RUN npm install -g @trademe/reviewme@${ReviewMeVersion} +CMD reviewme From 37cac47811320102c12f47edbb60c036322b9562 Mon Sep 17 00:00:00 2001 From: DrunkBatya Date: Mon, 13 May 2024 05:32:07 -0400 Subject: [PATCH 2/5] Rename master branch in workflow --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 970c88e..b4e70e2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,7 +3,7 @@ name: 'Build and push' on: push: branches: - - dev + - master tags: - '*' From d94a8f5adcb9e1230d221df655a5b9ab3e9d6f93 Mon Sep 17 00:00:00 2001 From: DrunkBatya Date: Mon, 13 May 2024 05:36:07 -0400 Subject: [PATCH 3/5] Add layer caching to CI/CD --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b4e70e2..c1daad4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,3 +43,5 @@ jobs: with: push: true tags: ${{steps.tag.outputs.image_name}}:${{steps.tag.outputs.image_tag}} + cache-from: type=registry,ref=${{ steps.tag.outputs.image_name }}:buildcache + cache-to: type=registry,ref=${{ steps.tag.outputs.image_name }}:buildcache,mode=max From 757000f7a755cd3630589eaf027f08fd7982f8fc Mon Sep 17 00:00:00 2001 From: DrunkBatya Date: Mon, 13 May 2024 05:38:43 -0400 Subject: [PATCH 4/5] Rename build stage in CI/CD --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c1daad4..a1cf714 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,7 +37,7 @@ jobs: - name: 'Set up Docker Buildx' uses: docker/setup-buildx-action@v2 - - name: 'Build and push dev' + - name: 'Build and push' id: docker_build uses: docker/build-push-action@v4 with: From c73d1feabcaced2cc40e1a197a6351b0bf9b17d9 Mon Sep 17 00:00:00 2001 From: DrunkBatya Date: Thu, 30 May 2024 04:05:24 -0400 Subject: [PATCH 5/5] Add creating directory for persistence --- reviews.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/reviews.js b/reviews.js index bf8420f..3acf146 100644 --- a/reviews.js +++ b/reviews.js @@ -2,6 +2,7 @@ const request = require('request'); const appstore = require('./appstorereviews.js'); const googlePlay = require('./googleplayreviews.js'); const fs = require('fs'); +const dataDir = "/var/lib/reviewme"; const REVIEWS_STORES = { "APP_STORE": "app-store", @@ -10,13 +11,17 @@ const REVIEWS_STORES = { var published_reviews; try { - published_reviews = JSON.parse(fs.readFileSync('./published_reviews.json')); + published_reviews = JSON.parse(fs.readFileSync(dataDir + '/published_reviews.json')); } catch (err) { published_reviews = {} } (function () { exports.start = function start(config) { + if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); + } + if (!config.store) { // Determine from which store reviews are downloaded config.store = (config.appId.indexOf("\.") > -1) ? REVIEWS_STORES.GOOGLE_PLAY : REVIEWS_STORES.APP_STORE; @@ -52,7 +57,7 @@ exports.markReviewAsPublished = function (config, review) { console.log("INFO: Review marked as published: " + JSON.stringify(published_reviews[config.appId])); } - fs.writeFileSync('./published_reviews.json', JSON.stringify(published_reviews), { flag: 'w' }) + fs.writeFileSync(dataDir + '/published_reviews.json', JSON.stringify(published_reviews), { flag: 'w' }) }; exports.reviewPublished = function (config, review) {