on: push: branches: - "**" name: ๐Ÿงชโœจ Tests Workflow jobs: DatabaseMigrations: name: ๐Ÿงช โœจ Database Migrations runs-on: ubuntu-latest steps: - name: ๐Ÿ›ก๏ธ ๐Ÿ”’ Add Siteworx CA Certificates run: | curl -Ls https://siteworxpro.com/hosted/Siteworx+Root+CA.pem -o /usr/local/share/ca-certificates/sw.crt update-ca-certificates - name: ๐Ÿ“– ๐Ÿ” Checkout Repository Code uses: actions/checkout@v2 with: fetch-depth: 1 - name: ๐Ÿ”‘ ๐Ÿ” Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: ๐ŸŽ๏ธ ๐Ÿ Start Support Containers run: | echo "Starting Support Containers" docker run --rm \ --network "${{ env.JOB_CONTAINER_NAME }}-${{ gitea.job }}-network" \ --name ${{ gitea.job }}-${{ gitea.run_id }}-postgres \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASSWORD=postgres \ -e POSTGRES_DB=postgres \ -p 5432 \ -d postgres:18 echo "Waiting for Postgres to start" sleep 10 - name: ๐Ÿ’ฝ โฌ†๏ธ Run Migrations run: | docker run \ --name ${{ gitea.run_id }}-migrate \ --rm \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ --network "${{ env.JOB_CONTAINER_NAME }}-${{ gitea.job }}-network" \ -w ${{ github.workspace }} \ siteworxpro/migrate:v4.18.3 -database "postgres://postgres:postgres@${{ gitea.job }}-${{ gitea.run_id }}-postgres:5432/postgres?sslmode=disable" -path db/migrations up - name: ๐Ÿ’ฝ โฌ‡๏ธ Rollback Migrations run: | docker run \ --name ${{ gitea.run_id }}-migrate \ --rm \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ --network "${{ env.JOB_CONTAINER_NAME }}-${{ gitea.job }}-network" \ -w ${{ github.workspace }} \ siteworxpro/migrate:v4.18.3 -database "postgres://postgres:postgres@${{ gitea.job }}-${{ gitea.run_id }}-postgres:5432/postgres?sslmode=disable" -path db/migrations down --all - name: ๐Ÿงจ ๐Ÿ’ฅ Tear Down Support Containers if: always() run: | docker stop ${{ gitea.job }}-${{ gitea.run_id }}-postgres LibraryAudit: name: ๐Ÿ›ก๏ธ ๐Ÿ”’ Library Audit runs-on: ubuntu-latest steps: - name: ๐Ÿ›ก๏ธ ๐Ÿ”’ Add Siteworx CA Certificates run: | curl -Ls https://siteworxpro.com/hosted/Siteworx+Root+CA.pem -o /usr/local/share/ca-certificates/sw.crt update-ca-certificates - name: ๐Ÿ“– ๐Ÿ” Checkout Repository Code uses: actions/checkout@v2 with: fetch-depth: 1 - name: ๐Ÿ”‘ ๐Ÿ” Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: ๐Ÿ“– โœจ Install Composer Libraries run: | docker run --rm \ -v composer-cache:/tmp/cache \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ -w ${{ github.workspace }} \ siteworxpro/composer \ install --ignore-platform-reqs --no-interaction --prefer-dist --optimize-autoloader - name: Run Library Audit run: | docker run --rm \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ -w ${{ github.workspace }} \ siteworxpro/composer \ audit LicenseCheck: name: ๐Ÿ›ก๏ธ ๐Ÿ”’ License Check runs-on: ubuntu-latest steps: - name: ๐Ÿ›ก๏ธ ๐Ÿ”’ Add Siteworx CA Certificates run: | curl -Ls https://siteworxpro.com/hosted/Siteworx+Root+CA.pem -o /usr/local/share/ca-certificates/sw.crt update-ca-certificates - name: ๐Ÿ“– ๐Ÿ” Checkout Repository Code uses: actions/checkout@v2 with: fetch-depth: 1 - name: ๐Ÿ”‘ ๐Ÿ” Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: ๐Ÿ“– โœจ Install Composer Libraries run: | docker run --rm \ -v composer-cache:/tmp/cache \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ -w ${{ github.workspace }} \ siteworxpro/composer \ install --ignore-platform-reqs --no-interaction --prefer-dist --optimize-autoloader - name: ๐ŸŽŸ๏ธ ๐Ÿ”ฌ Run License Check run: | docker run --rm \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ -w ${{ github.workspace }} \ siteworxpro/composer \ run tests:license CodeLint: name: ๐Ÿ“ โœจ Code Lint runs-on: ubuntu-latest steps: - name: ๐Ÿ›ก๏ธ ๐Ÿ”’ Add Siteworx CA Certificates run: | curl -Ls https://siteworxpro.com/hosted/Siteworx+Root+CA.pem -o /usr/local/share/ca-certificates/sw.crt update-ca-certificates - name: ๐Ÿ“– ๐Ÿ” Checkout Repository Code uses: actions/checkout@v2 with: fetch-depth: 1 - name: ๐Ÿ”‘ ๐Ÿ” Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: ๐Ÿ“– โœจ Install Composer Libraries run: | docker run --rm \ -v composer-cache:/tmp/cache \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ -w ${{ github.workspace }} \ siteworxpro/composer \ install --ignore-platform-reqs --no-interaction --prefer-dist --optimize-autoloader - name: Run Code Lint run: | docker run --rm \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ -w ${{ github.workspace }} \ siteworxpro/composer \ run tests:lint CodeSniffer: name: ๐Ÿ™ ๐Ÿ” Code Sniffer runs-on: ubuntu-latest steps: - name: ๐Ÿ›ก๏ธ ๐Ÿ”’ Add Siteworx CA Certificates run: | curl -Ls https://siteworxpro.com/hosted/Siteworx+Root+CA.pem -o /usr/local/share/ca-certificates/sw.crt update-ca-certificates - name: ๐Ÿ“– ๐Ÿ” Checkout Repository Code uses: actions/checkout@v2 with: fetch-depth: 1 - name: ๐Ÿ”‘ ๐Ÿ” Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: ๐Ÿ“– โœจ Install Composer Libraries run: | docker run --rm \ -v composer-cache:/tmp/cache \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ -w ${{ github.workspace }} \ siteworxpro/composer \ install --ignore-platform-reqs --no-interaction --prefer-dist --optimize-autoloader - name: Run Code Sniffer run: | docker run --rm \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ -w ${{ github.workspace }} \ siteworxpro/composer \ run tests:phpstan UnitTests: name: ๐Ÿงช โœ… Unit Tests runs-on: ubuntu-latest steps: - name: ๐Ÿ›ก๏ธ ๐Ÿ”’ Add Siteworx CA Certificates run: | curl -Ls https://siteworxpro.com/hosted/Siteworx+Root+CA.pem -o /usr/local/share/ca-certificates/sw.crt update-ca-certificates - name: ๐Ÿ“– ๐Ÿ” Checkout Repository Code uses: actions/checkout@v2 with: fetch-depth: 1 - name: ๐Ÿ”‘ ๐Ÿ” Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: ๐Ÿ“– โœจ Install Composer Libraries run: | docker run --rm \ -v composer-cache:/tmp/cache \ --volumes-from ${{ env.JOB_CONTAINER_NAME }} \ -w ${{ github.workspace }} \ siteworxpro/composer \ install --ignore-platform-reqs --no-interaction --prefer-dist --optimize-autoloader - name: ๐Ÿงช โœ… Run Unit Tests uses: addnab/docker-run-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} image: siteworxpro/composer options: --volumes-from ${{ env.JOB_CONTAINER_NAME }} -w ${{ gitea.workspace }} run: | bin/pcov.sh composer run tests:unit:coverage # - name: ๐Ÿ“ฆ Publish Build Artifacts # env: # NODE_TLS_REJECT_UNAUTHORIZED: 0 # uses: christopherhx/gitea-upload-artifact@v4 # with: # options: --volumes-from ${{ env.JOB_CONTAINER_NAME }} -w ${{ gitea.workspace }} # name: junit-coverage.xml # path: tests/reports/junit.xml # retention-days: 1