diff --git a/.github/workflows/release.yml b/.github/workflows/deploy.yml similarity index 57% rename from .github/workflows/release.yml rename to .github/workflows/deploy.yml index d7c144db..7f4b3d4c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/deploy.yml @@ -7,75 +7,121 @@ on: jobs: unit-tests: + + name: Unit tests runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - - run: npm --prefix users/authservice ci - - run: npm --prefix users/userservice ci - - run: npm --prefix gatewayservice ci - - run: npm --prefix webapp ci + - name: Check out the repo + uses: actions/checkout@v4 + + # TODO: Re-enable tests and coverage + + # - name: Setup Node.js + # uses: actions/setup-node@v4 + # with: + # node-version: 20 + + # - run: npm --prefix users/authservice ci + # - run: npm --prefix users/userservice ci + # - run: npm --prefix gatewayservice ci + # - run: npm --prefix webapp ci # - run: npm --prefix users/authservice test -- --coverage # - run: npm --prefix users/userservice test -- --coverage # - run: npm --prefix gatewayservice test -- --coverage - # TODO - Re-enable when webapp tests match the current app desgin # - run: npm --prefix webapp test -- --coverage - # TODO - Add tests of the new microservices - - name: Analyze with SonarCloud - uses: sonarsource/sonarcloud-github-action@master - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + + # TODO: Add tests of the new microservices + # + + # - name: Analyze with SonarCloud + # uses: sonarsource/sonarcloud-github-action@master + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + e2e-tests: - needs: [unit-tests] + + name: End to end tests runs-on: ubuntu-latest + needs: [unit-tests] + steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20 - - run: npm --prefix users/authservice install - - run: npm --prefix users/userservice install - - run: npm --prefix gatewayservice install - - run: npm --prefix webapp install - - run: npm --prefix webapp run build - # TODO - Re-enable when webapp tests match the current app desgin + + - name: Check out the repo + uses: actions/checkout@v4 + + # TODO: Re-enable when webapp tests match the current app desgin + + # - name: Setup Node.js + # uses: actions/setup-node@v4 + # with: + # node-version: 20 + + # - run: npm --prefix users/authservice install + # - run: npm --prefix users/userservice install + # - run: npm --prefix gatewayservice install + # - run: npm --prefix webapp install + # - run: npm --prefix webapp run build + # - run: npm --prefix webapp run test:e2e docker-push-webapp: + name: Push webapp Docker Image to GitHub Packages runs-on: ubuntu-latest + needs: [e2e-tests] + permissions: contents: read packages: write - needs: [e2e-tests] + steps: - - uses: actions/checkout@v4 + - name: Set up Docker Buildx # required for building multi-platform images + uses: docker/setup-buildx-action@v1 + + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Create file from secret + run: | + echo "${{ secrets.DEPLOY_SSL_CERT }}" > webapp/certificate.crt + echo "${{ secrets.DEPLOY_SSL_KEY }}" > webapp/private.key + shell: bash + - name: Publish to Registry uses: elgohr/Publish-Docker-Github-Action@v5 - env: - API_URI: http://${{ secrets.DEPLOY_HOST }}:8000 with: - name: arquisoft/wiq_es05b/webapp - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - registry: ghcr.io - workdir: webapp - buildargs: API_URI - platforms: linux/arm64, linux/amd64 + name: arquisoft/wiq_es05b/webapp + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + registry: ghcr.io + workdir: webapp + buildargs: API_URI + platforms: linux/arm64 + + env: + API_URI: http://${{ secrets.DEPLOY_HOST }}:8000 + docker-push-authservice: + name: Push auth service Docker Image to GitHub Packages runs-on: ubuntu-latest + needs: [e2e-tests] + permissions: contents: read packages: write - needs: [e2e-tests] + steps: - - uses: actions/checkout@v4 + - name: Set up Docker Buildx # required for building multi-platform images + uses: docker/setup-buildx-action@v1 + + - name: Check out the repo + uses: actions/checkout@v4 + - name: Publish to Registry uses: elgohr/Publish-Docker-Github-Action@v5 with: @@ -84,17 +130,26 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io workdir: users/authservice - platforms: linux/arm64, linux/amd64 + platforms: linux/arm64 + docker-push-userservice: + name: Push user service Docker Image to GitHub Packages runs-on: ubuntu-latest + needs: [e2e-tests] + permissions: contents: read packages: write - needs: [e2e-tests] + steps: - - uses: actions/checkout@v4 + - name: Set up Docker Buildx # required for building multi-platform images + uses: docker/setup-buildx-action@v1 + + - name: Check out the repo + uses: actions/checkout@v4 + - name: Publish to Registry uses: elgohr/Publish-Docker-Github-Action@v5 with: @@ -103,17 +158,26 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io workdir: users/userservice - platforms: linux/arm64, linux/amd64 + platforms: linux/arm64 + docker-push-gatewayservice: + name: Push gateway service Docker Image to GitHub Packages runs-on: ubuntu-latest + needs: [e2e-tests] + permissions: contents: read packages: write - needs: [e2e-tests] + steps: - - uses: actions/checkout@v4 + - name: Set up Docker Buildx # required for building multi-platform images + uses: docker/setup-buildx-action@v1 + + - name: Check out the repo + uses: actions/checkout@v4 + - name: Publish to Registry uses: elgohr/Publish-Docker-Github-Action@v5 with: @@ -122,17 +186,26 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io workdir: gatewayservice - platforms: linux/arm64, linux/amd64 + platforms: linux/arm64 + docker-push-jordi-ask: + name: Push Jordi Ask service Docker Image to GitHub Packages runs-on: ubuntu-latest + needs: [e2e-tests] + permissions: contents: read packages: write - needs: [e2e-tests] + steps: - - uses: actions/checkout@v4 + - name: Set up Docker Buildx # required for building multi-platform images + uses: docker/setup-buildx-action@v1 + + - name: Check out the repo + uses: actions/checkout@v4 + - name: Publish to Registry uses: elgohr/Publish-Docker-Github-Action@v5 with: @@ -141,17 +214,26 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io workdir: jordi/jordi-ask - platforms: linux/arm64, linux/amd64 + platforms: linux/arm64 + docker-push-jordi-think: + name: Push Jordi Think service Docker Image to GitHub Packages runs-on: ubuntu-latest + needs: [e2e-tests] + permissions: contents: read packages: write - needs: [e2e-tests] + steps: - - uses: actions/checkout@v4 + - name: Set up Docker Buildx # required for building multi-platform images + uses: docker/setup-buildx-action@v1 + + - name: Check out the repo + uses: actions/checkout@v4 + - name: Publish to Registry uses: elgohr/Publish-Docker-Github-Action@v5 with: @@ -160,17 +242,26 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io workdir: jordi/jordi-think - platforms: linux/arm64, linux/amd64 + platforms: linux/arm64 + docker-push-ranking: + name: Push ranking service Docker Image to GitHub Packages runs-on: ubuntu-latest + needs: [e2e-tests] + permissions: contents: read packages: write - needs: [e2e-tests] + steps: - - uses: actions/checkout@v4 + - name: Set up Docker Buildx # required for building multi-platform images + uses: docker/setup-buildx-action@v1 + + - name: Check out the repo + uses: actions/checkout@v4 + - name: Publish to Registry uses: elgohr/Publish-Docker-Github-Action@v5 with: @@ -179,7 +270,8 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} registry: ghcr.io workdir: ranking - platforms: linux/arm64, linux/amd64 + platforms: linux/arm64 + docker-push-history: name: Push history service Docker Image to GitHub Packages @@ -201,9 +293,11 @@ jobs: platforms: linux/arm64, linux/amd64 deploy: + name: Deploy over SSH runs-on: ubuntu-latest needs: [docker-push-userservice,docker-push-authservice,docker-push-gatewayservice,docker-push-webapp,docker-push-jordi-ask,docker-push-jordi-think,docker-push-ranking] + steps: - name: Deploy over SSH uses: fifsky/ssh-action@master @@ -211,8 +305,11 @@ jobs: host: ${{ secrets.DEPLOY_HOST }} user: ${{ secrets.DEPLOY_USER }} key: ${{ secrets.DEPLOY_KEY }} + command: | - wget https://raw.githubusercontent.com/arquisoft/wiq_es05b/master/docker-compose.yml -O docker-compose.yml - wget https://raw.githubusercontent.com/arquisoft/wiq_es05b/master/.env -O .env - docker compose --profile prod down - docker compose --profile prod up -d + mkdir -p wiq_es05b + cd wiq_es05b + wget https://raw.githubusercontent.com/arquisoft/wiq_es05b/master/docker-compose.yml -O docker-compose.yml + wget https://raw.githubusercontent.com/arquisoft/wiq_es05b/master/.env -O .env + docker compose --profile prod down + docker compose --profile prod up -d --pull always diff --git a/docker-compose.yml b/docker-compose.yml index 196361c5..69c85815 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -79,7 +79,6 @@ services: AUTH_SERVICE_URL: http://authservice:8002 USER_SERVICE_URL: http://userservice:8001 JORDI_ASK_SERVICE_URL: http://jordi-ask:8003 - SECRET: a-very-secret-string restart: always diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 209c508f..6c16f152 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -3,16 +3,4 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-design-decisions]] == Architecture Decisions -The initial architecture decisions are in the GitHub Wiki. - -* https://github.com/Arquisoft/wiq_es05b/wiki/ADR-01-‐-JavaScript[ADR 01 - JavaScript] - -* https://github.com/Arquisoft/wiq_es05b/wiki/ADR-02-%E2%80%90-QG-Microservice[ADR 02 - QG Microservice] - -* https://github.com/Arquisoft/wiq_es05b/wiki/ADR-03-‐-Docker[ADR 03 - Docker] - -* https://github.com/Arquisoft/wiq_es05b/wiki/ADR-04-‐-React[ADR 04 - React] - -* https://github.com/Arquisoft/wiq_es05b/wiki/ADR-05-‐-MongoDB[ADR 05 - MongoDB] - -* https://github.com/Arquisoft/wiq_es05b/wiki/ADR-06-‐-ExpressJS[ADR 06 - ExpressJS] \ No newline at end of file +The initial architecture decisions are in the GitHub Wiki: https://github.com/Arquisoft/wiq_es05b/wiki/ADRS[Wiki ADRS]