From c37f35a7da390a90bd1482476976f20698e99b1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Wed, 12 Jun 2019 22:31:25 +0200 Subject: [PATCH 1/4] Fix #470 Define env variables $BRANCH and $CYPRESS_RETRIES Source: https://graysonkoonce.com/getting-the-current-branch-name-during-a-pull-request-in-travis-ci/ ------ Cypress is looking for a env var by default. See: https://docs.cypress.io/guides/guides/command-line.html#cypress-run So I guess, all what we have to do is to give the env var another name. I also added a measure to avoid running out of quota: Disable recording if dependabot just updates dependencies. --- .travis.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 42b427a11..4ca819f67 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,6 +21,9 @@ install: - wait-on http://localhost:7474 script: + - export CYPRESS_RETRIES=1 + - export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi) + - echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=$PR, BRANCH=$BRANCH" # Backend - docker-compose exec backend yarn run lint - docker-compose exec backend yarn run test:jest --ci --verbose=false --coverage @@ -34,7 +37,9 @@ script: - docker-compose exec webapp yarn run test --ci --verbose=false --coverage - docker-compose exec -d backend yarn run test:before:seeder # Fullstack - - CYPRESS_RETRIES=1 yarn run cypress:run + # Disable recording cypress tests if we just update dependencies. This is to + # avoid running out of quota. + - if [[ $BRANCH == *"dependabot"* ]]; then yarn run cypress:run; else yarn run cypress:run --record; fi # Coverage - codecov From 4166936e5f293e6ccd8d5e9f66b09897efde47dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Wed, 12 Jun 2019 23:24:40 +0200 Subject: [PATCH 2/4] Fix #800 Ok, so apparently all we have to do is to remove the `/api` prefix from fixImageUrlMiddleware. I guess that's just a leftover. --- backend/src/middleware/fixImageUrlsMiddleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/middleware/fixImageUrlsMiddleware.js b/backend/src/middleware/fixImageUrlsMiddleware.js index c930915bf..e2340c4dd 100644 --- a/backend/src/middleware/fixImageUrlsMiddleware.js +++ b/backend/src/middleware/fixImageUrlsMiddleware.js @@ -6,7 +6,7 @@ const legacyUrls = [ export const fixUrl = url => { legacyUrls.forEach(legacyUrl => { - url = url.replace(legacyUrl, '/api') + url = url.replace(legacyUrl, '/') }) return url } From 1ffa3cd0467e345c8dcc96c9b38a6610b1528acd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Wed, 12 Jun 2019 23:55:42 +0200 Subject: [PATCH 3/4] Fix #799 For target `production` the badges were simply not copied. It also explains why we never saw that error in development. For development we use docker build target `build-and-test`. FYI: @ulfgebhardt @Tirokk @ogerly --- backend/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/Dockerfile b/backend/Dockerfile index d24f2747e..f0251bddc 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -24,4 +24,5 @@ RUN yarn run build FROM base as production ENV NODE_ENV=production COPY --from=builder /nitro-backend/dist ./dist +COPY ./public/img/ ./public/img/ RUN yarn install --frozen-lockfile --non-interactive From 113cf04c607af05980f9eeb99d586b5d501bfbe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Thu, 13 Jun 2019 00:06:42 +0200 Subject: [PATCH 4/4] Fix build --- backend/src/middleware/fixImageUrlsMiddleware.js | 5 ++++- backend/src/middleware/fixImageUrlsMiddleware.spec.js | 11 +++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/backend/src/middleware/fixImageUrlsMiddleware.js b/backend/src/middleware/fixImageUrlsMiddleware.js index e2340c4dd..3bfa8537a 100644 --- a/backend/src/middleware/fixImageUrlsMiddleware.js +++ b/backend/src/middleware/fixImageUrlsMiddleware.js @@ -6,8 +6,11 @@ const legacyUrls = [ export const fixUrl = url => { legacyUrls.forEach(legacyUrl => { - url = url.replace(legacyUrl, '/') + url = url.replace(legacyUrl, '') }) + if (!url.startsWith('/')) { + url = `/${url}` + } return url } diff --git a/backend/src/middleware/fixImageUrlsMiddleware.spec.js b/backend/src/middleware/fixImageUrlsMiddleware.spec.js index b2d808dd9..0da66811a 100644 --- a/backend/src/middleware/fixImageUrlsMiddleware.spec.js +++ b/backend/src/middleware/fixImageUrlsMiddleware.spec.js @@ -1,12 +1,19 @@ import { fixImageURLs } from './fixImageUrlsMiddleware' describe('fixImageURLs', () => { + describe('edge case: image url is exact match of legacy url', () => { + it('replaces it with `/`', () => { + const url = 'https://api-alpha.human-connection.org' + expect(fixImageURLs(url)).toEqual('/') + }) + }) + describe('image url of legacy alpha', () => { it('removes domain', () => { const url = 'https://api-alpha.human-connection.org/uploads/4bfaf9172c4ba03d7645108bbbd16f0a696a37d01eacd025fb131e5da61b15d9.png' expect(fixImageURLs(url)).toEqual( - '/api/uploads/4bfaf9172c4ba03d7645108bbbd16f0a696a37d01eacd025fb131e5da61b15d9.png', + '/uploads/4bfaf9172c4ba03d7645108bbbd16f0a696a37d01eacd025fb131e5da61b15d9.png', ) }) }) @@ -16,7 +23,7 @@ describe('fixImageURLs', () => { const url = 'https://staging-api.human-connection.org/uploads/1b3c39a24f27e2fb62b69074b2f71363b63b263f0c4574047d279967124c026e.jpeg' expect(fixImageURLs(url)).toEqual( - '/api/uploads/1b3c39a24f27e2fb62b69074b2f71363b63b263f0c4574047d279967124c026e.jpeg', + '/uploads/1b3c39a24f27e2fb62b69074b2f71363b63b263f0c4574047d279967124c026e.jpeg', ) }) })