name: "Tests" concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: IMAGE: appwrite-dev on: [pull_request] jobs: setup: name: Setup & Build Appwrite Image runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: # We must fetch at least the immediate parents so that if this is # a pull request then we can checkout the head. fetch-depth: 2 # Fetch submodules submodules: recursive # If this run was triggered by a pull request event, then checkout # the head of the pull request instead of the merge commit. - run: git checkout HEAD^2 if: ${{ github.event_name == 'pull_request' }} # This is a separate action that sets up buildx runner - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Build Appwrite uses: docker/build-push-action@v3 with: context: . push: false tags: ${{ env.IMAGE }} load: true cache-from: type=gha cache-to: type=gha,mode=max # outputs: type=docker,dest=/tmp/${{ env.IMAGE }}.tar build-args: | DEBUG=false TESTING=true VERSION=dev - name: Save Docker Images run: | docker compose images docker compose images | sed '1d' | awk '{ print $2 ":" $3 }' | sort -u # docker save $(docker compose images | sed '1d' | awk '{ print $2 ":" $3 }' | sort -u) -o allinone.tar # - name: Cache Docker Image # uses: actions/cache@v3 # with: # key: ${{ env.IMAGE }}-${{ github.sha }} # path: /tmp/${{ env.IMAGE }}.tar # - name: Upload Docker Image # uses: actions/upload-artifact@v3 # with: # name: ${{ env.IMAGE }} # path: /tmp/${{ env.IMAGE }}.tar # unit_test: # name: Unit Test # runs-on: ubuntu-latest # needs: setup # steps: # - name: checkout # uses: actions/checkout@v2 # with: # fetch-depth: 1 # submodules: recursive # - name: Load Cache # uses: actions/cache@v3 # with: # key: ${{ env.IMAGE }}-${{ github.sha }} # path: /tmp/${{ env.IMAGE }}.tar # fail-on-cache-miss: true # - name: Load and Start Appwrite # run: | # docker load --input /tmp/${{ env.IMAGE }}.tar # docker compose up -d # sleep 10 # - name: Doctor # run: docker compose exec -T appwrite doctor # - name: Environment Variables # run: docker compose exec -T appwrite vars # - name: Run Unit Tests # run: docker compose exec appwrite test /usr/src/code/tests/unit # e2e_test: # name: E2E Test # runs-on: ubuntu-latest # needs: setup # strategy: # fail-fast: false # matrix: # services: [Account,Avatars,Console,Databases,Functions,GraphQL,Health,Locale,Projects,Realtime,Storage,Teams,Users,Webhooks] # steps: # - name: checkout # uses: actions/checkout@v2 # with: # fetch-depth: 2 # submodules: recursive # - name: Load Cache # uses: actions/cache@v3 # with: # key: ${{ env.IMAGE }}-${{ github.sha }} # path: /tmp/${{ env.IMAGE }}.tar # fail-on-cache-miss: true # - name: Load and Start Appwrite # run: | # docker load --input /tmp/${{ env.IMAGE }}.tar # docker compose up -d # sleep 20 # - name: Run ${{matrix.services}} Tests # run: docker compose exec -T appwrite test /usr/src/code/tests/e2e/Services/${{matrix.services}} --debug