name: CI on: push: branches: - staging - testing - '1.5' - '1.6' - '1.7' - '1.8' - master # version tags, e.g. 1.7.1 - '[1-9].[0-9].[0-9]' # pre-releases, e.g. 1.8-pre1 - 1.8-pre[0-9] # test branches, e.g. test-debian - test-* ############################################### # REQUIRED secrets # DOCKER_UN: ${{ secrets.Docker_Login }} # Username of docker login for pushing the images to repo $DOCKER_ORG # DOCKER_PW: ${{ secrets.Docker_Password }} # Password of docker login for pushing the images to repo $DOCKER_ORG # DOCKER_ORG: ${{ secrets.DOCKER_ORG }} # The docker repository where the images are pushed to. # DOCKER_ORG_TESTS: ${{ secrets.DOCKER_ORG_TESTS }} # The docker repository for test images. Only used for the branch TESTING (BORS try). # Add the above secrets to your github repo to determine where the images will be pushed. ################################################ jobs: build: name: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Extract branch name shell: bash run: | echo "BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV - name: install python packages run: python3 -m pip install -r tests/requirements.txt - name: check docker-compose version run: docker-compose -v - name: login docker env: DOCKER_UN: ${{ secrets.Docker_Login }} DOCKER_PW: ${{ secrets.Docker_Password }} DOCKER_ORG: ${{ secrets.DOCKER_ORG }} run: echo "$DOCKER_PW" | docker login --username $DOCKER_UN --password-stdin # In this step, this action saves a list of existing images, # the cache is created without them in the post run. # It also restores the cache if it exists. - uses: satackey/action-docker-layer-caching@v0.0.11 # Ignore the failure of a step and avoid terminating the job. continue-on-error: true - name: build all docker images env: MAILU_VERSION: ${{ env.BRANCH }} TRAVIS_BRANCH: ${{ env.BRANCH }} DOCKER_ORG: ${{ secrets.DOCKER_ORG }} run: docker-compose -f tests/build.yml build #NOTE: It appears the filter test depends on the core test. The filter test requires an email user #that is created by the core test. core-test: name: core test runs-on: ubuntu-latest needs: - build steps: - uses: actions/checkout@v2 - name: Extract branch name shell: bash run: | echo "BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV - name: install python packages run: python3 -m pip install -r tests/requirements.txt - uses: satackey/action-docker-layer-caching@v0.0.11 # Ignore the failure of a step and avoid terminating the job. continue-on-error: true - name: copy all certs run: sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*' - name: test core suite run: python tests/compose/test.py core 1 env: MAILU_VERSION: ${{ env.BRANCH }} TRAVIS_BRANCH: ${{ env.BRANCH }} DOCKER_ORG: ${{ secrets.DOCKER_ORG }} filter-test: name: filter test runs-on: ubuntu-latest needs: - build steps: - uses: actions/checkout@v2 - name: Extract branch name shell: bash run: | echo "BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV - name: install python packages run: python3 -m pip install -r tests/requirements.txt - uses: satackey/action-docker-layer-caching@v0.0.11 # Ignore the failure of a step and avoid terminating the job. continue-on-error: true - name: copy all certs run: sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*' - name: 'test clamvav' run: python tests/compose/test.py filters 2 env: MAILU_VERSION: ${{ env.BRANCH }} TRAVIS_BRANCH: ${{ env.BRANCH }} DOCKER_ORG: ${{ secrets.DOCKER_ORG }} fetch-test: name: fetch test runs-on: ubuntu-latest needs: - build steps: - uses: actions/checkout@v2 - name: Extract branch name shell: bash run: | echo "BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV - name: install python packages run: python3 -m pip install -r tests/requirements.txt - uses: satackey/action-docker-layer-caching@v0.0.11 # Ignore the failure of a step and avoid terminating the job. continue-on-error: true - name: copy all certs run: sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*' - name: test fetch run: python tests/compose/test.py fetchmail 1 env: MAILU_VERSION: ${{ env.BRANCH }} TRAVIS_BRANCH: ${{ env.BRANCH }} DOCKER_ORG: ${{ secrets.DOCKER_ORG }} rainloop-test: name: rainloop test runs-on: ubuntu-latest needs: - build steps: - uses: actions/checkout@v2 - name: Extract branch name shell: bash run: | echo "BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV - name: install python packages run: python3 -m pip install -r tests/requirements.txt - uses: satackey/action-docker-layer-caching@v0.0.11 # Ignore the failure of a step and avoid terminating the job. continue-on-error: true - name: copy all certs run: sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*' - name: test rainloop run: python tests/compose/test.py rainloop 1 env: MAILU_VERSION: ${{ env.BRANCH }} TRAVIS_BRANCH: ${{ env.BRANCH }} DOCKER_ORG: ${{ secrets.DOCKER_ORG }} roundcube-test: name: roundcube test runs-on: ubuntu-latest needs: - build steps: - uses: actions/checkout@v2 - name: Extract branch name shell: bash run: | echo "BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV - name: install python packages run: python3 -m pip install -r tests/requirements.txt - uses: satackey/action-docker-layer-caching@v0.0.11 # Ignore the failure of a step and avoid terminating the job. continue-on-error: true - name: copy all certs run: sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*' - name: test roundcube run: python tests/compose/test.py roundcube 1 env: MAILU_VERSION: ${{ env.BRANCH }} TRAVIS_BRANCH: ${{ env.BRANCH }} DOCKER_ORG: ${{ secrets.DOCKER_ORG }} webdav-test: name: webdav test runs-on: ubuntu-latest needs: - build steps: - uses: actions/checkout@v2 - name: Extract branch name shell: bash run: | echo "BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV - name: install python packages run: python3 -m pip install -r tests/requirements.txt - uses: satackey/action-docker-layer-caching@v0.0.11 # Ignore the failure of a step and avoid terminating the job. continue-on-error: true - name: copy all certs run: sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*' - name: test webdav run: python tests/compose/test.py webdav 1 env: MAILU_VERSION: ${{ env.BRANCH }} TRAVIS_BRANCH: ${{ env.BRANCH }} DOCKER_ORG: ${{ secrets.DOCKER_ORG }} deploy: name: deploy step runs-on: ubuntu-latest needs: - build - core-test - filter-test - fetch-test - rainloop-test - roundcube-test - webdav-test steps: - uses: actions/checkout@v2 - name: Extract branch name shell: bash run: | echo "BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV - name: install python packages run: python3 -m pip install -r tests/requirements.txt - uses: satackey/action-docker-layer-caching@v0.0.11 # Ignore the failure of a step and avoid terminating the job. continue-on-error: true - name: copy all certs run: sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*' - name: login docker env: DOCKER_UN: ${{ secrets.Docker_Login }} DOCKER_PW: ${{ secrets.Docker_Password }} run: echo "$DOCKER_PW" | docker login --username $DOCKER_UN --password-stdin - name: build all docker images run: docker-compose -f tests/build.yml build env: MAILU_VERSION: ${{ env.BRANCH }} TRAVIS_BRANCH: ${{ env.BRANCH }} DOCKER_ORG: ${{ secrets.DOCKER_ORG }} - name: deploy built docker images env: DOCKER_UN: ${{ secrets.Docker_Login }} DOCKER_PW: ${{ secrets.Docker_Password }} DOCKER_ORG: ${{ secrets.DOCKER_ORG }} DOCKER_ORG_TESTS: ${{ secrets.DOCKER_ORG_TESTS }} MAILU_VERSION: ${{ env.BRANCH }} TRAVIS_BRANCH: ${{ env.BRANCH }} TRAVIS_COMMIT_MESSAGE: ${{ github.event.head_commit.message }} run: bash tests/deploy.sh # This job is watched by bors. It only complets if building,testing and deploy worked. ci-success: name: CI-Done #Returns true when none of the **previous** steps have failed or been canceled. if: ${{ success() }} needs: - deploy runs-on: ubuntu-latest steps: - name: CI/CD succeeded. run: exit 0