You've already forked Mailu
							
							
				mirror of
				https://github.com/Mailu/Mailu.git
				synced 2025-10-30 23:37:43 +02:00 
			
		
		
		
	Switch to github actions for CI/CD
This commit is contained in:
		
							
								
								
									
										276
									
								
								.github/worfklows/CI.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										276
									
								
								.github/worfklows/CI.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,276 @@ | ||||
|  | ||||
|  | ||||
| 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. | ||||
| # | ||||
| # 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 }} | ||||
|           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 | ||||
|  | ||||
|  | ||||
							
								
								
									
										56
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -1,56 +0,0 @@ | ||||
| branches: | ||||
|   only: | ||||
|     - staging | ||||
|     - testing | ||||
|     - '1.5' | ||||
|     - '1.6' | ||||
|     - '1.7' | ||||
|     - '1.8' | ||||
|     - master | ||||
|     # version tags, e.g. 1.7.1 | ||||
|     - /^1\.[5678]\.\d+$/ | ||||
|     # pre-releases, e.g. 1.8-pre1 | ||||
|     - /^1\.8-pre\d+$/ | ||||
|     # test branches, e.g. test-debian | ||||
|     - /^test-[\w\-\.]+$/ | ||||
|  | ||||
| sudo: required | ||||
| services: docker | ||||
| addons: | ||||
|   apt: | ||||
|     packages: | ||||
|       - docker-ce | ||||
|  | ||||
| env: | ||||
|   - MAILU_VERSION=${TRAVIS_BRANCH////-} | ||||
|  | ||||
| language: python | ||||
| python: | ||||
|   - "3.6" | ||||
| install: | ||||
|   - pip install -r tests/requirements.txt | ||||
|   - sudo curl -L https://github.com/docker/compose/releases/download/1.23.0-rc3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose | ||||
|   - sudo chmod +x /usr/local/bin/docker-compose | ||||
|  | ||||
| before_script: | ||||
|   - docker-compose -v | ||||
|   - echo "$DOCKER_PW" | docker login --username $DOCKER_UN --password-stdin  | ||||
|   - docker-compose -f tests/build.yml build | ||||
|   - sudo -- sh -c 'mkdir -p /mailu && cp -r tests/certs /mailu && chmod 600 /mailu/certs/*' | ||||
|  | ||||
|  | ||||
| script: | ||||
| # test.py, test name and timeout between start and tests. | ||||
|   - python tests/compose/test.py core 1 | ||||
|   - python tests/compose/test.py fetchmail 1 | ||||
|   - travis_wait python tests/compose/test.py filters 10 | ||||
|   - python tests/compose/test.py rainloop 1 | ||||
|   - python tests/compose/test.py roundcube 1 | ||||
|   - python tests/compose/test.py webdav 1 | ||||
|  | ||||
| deploy: | ||||
|   provider: script | ||||
|   script: bash tests/deploy.sh | ||||
|   on: | ||||
|     all_branches: true | ||||
|     condition: -n $DOCKER_UN | ||||
| @@ -1,3 +1,4 @@ | ||||
| status = [ | ||||
|   "continuous-integration/travis-ci/push" | ||||
|   "CI-Done" | ||||
| ] | ||||
|  | ||||
|   | ||||
							
								
								
									
										5
									
								
								tests/compose/filters/00_create_users.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								tests/compose/filters/00_create_users.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| echo "Creating user required for next test ..." | ||||
| # Should not fail and update the password; update mode | ||||
| docker-compose -f tests/compose/filters/docker-compose.yml exec -T admin flask mailu admin admin mailu.io 'password' --mode=update || exit 1 | ||||
| docker-compose -f tests/compose/filters/docker-compose.yml exec -T admin flask mailu user user mailu.io 'password' || exit 1 | ||||
| echo "User created successfully" | ||||
		Reference in New Issue
	
	Block a user