Merge pull request #326 from gloggi/generateSonstiges_lindo #710
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
unit-tests: | |
name: "Unit tests" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: docker-compose up -d qualix db node mail | |
- uses: ./.github/actions/wait-for-container-startup | |
- run: docker-compose exec -T qualix php artisan config:clear --env=testing | |
- run: docker-compose exec -T qualix vendor/bin/phpunit | |
frontend-tests: | |
name: "Frontend tests" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: docker-compose up -d qualix db node mail | |
- uses: ./.github/actions/wait-for-container-startup | |
- run: docker-compose exec -T node npm run test | |
e2e-tests: | |
name: "End-to-end tests" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: docker-compose up -d qualix db node mail e2e-mocks | |
- uses: ./.github/actions/wait-for-container-startup | |
- run: docker-compose run e2e run | |
- uses: actions/upload-artifact@v2 | |
if: always() | |
with: | |
name: cypress-output | |
path: | | |
./cypress/screenshots | |
./cypress/videos | |
ci-passed-event: | |
name: "Send out CI success event" | |
if: ${{ github.event_name == 'push' }} | |
needs: | |
- unit-tests | |
- frontend-tests | |
- e2e-tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: peter-evans/repository-dispatch@v1 | |
env: | |
REPO_ACCESS_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }} | |
if: env.REPO_ACCESS_TOKEN != null | |
with: | |
token: ${{ secrets.REPO_ACCESS_TOKEN }} | |
event-type: ci-passed | |
client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}' | |
get-environment-name: | |
name: "Extract environment name" | |
runs-on: ubuntu-latest | |
outputs: | |
environment: ${{ steps.extract.outputs.environment }} | |
steps: | |
- id: extract | |
run: echo "environment=$(echo $GITHUB_REF | sed -e '/^refs\/heads\/deploy-\(.*\)$/!d;s//\1/')" >> $GITHUB_OUTPUT | |
- env: | |
EXTRACTED: ${{ steps.extract.outputs.environment }} | |
run: 'echo "Extracted environment name: $EXTRACTED"' | |
deploy: | |
name: "Deploy" | |
if: ${{ github.event_name == 'push' && needs.get-environment-name.outputs.environment }} | |
needs: | |
- unit-tests | |
- frontend-tests | |
- e2e-tests | |
- get-environment-name | |
environment: ${{ needs.get-environment-name.outputs.environment }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: sudo apt-get update -y && sudo apt-get install -y lftp | |
- uses: shimataro/ssh-key-action@v2 | |
with: | |
key: ${{ secrets.SSH_PRIVATE_KEY }} | |
known_hosts: ${{ secrets.SSH_KNOWN_HOSTS }} | |
- run: sudo apt-get update -y && sudo apt-get install -y lftp | |
- uses: ./.github/actions/deploy | |
with: | |
ssh-username: ${{ secrets.SSH_USERNAME }} | |
ssh-host: ${{ secrets.SSH_HOST }} | |
ssh-directory: ${{ secrets.SSH_DIRECTORY }} | |
app-name: ${{ secrets.APP_NAME }} | |
app-key: ${{ secrets.APP_KEY }} | |
app-url: ${{ secrets.APP_URL }} | |
app-contact-link: ${{ secrets.APP_CONTACT_LINK }} | |
app-contact-text: ${{ secrets.APP_CONTACT_TEXT }} | |
db-host: ${{ secrets.DB_HOST }} | |
db-database: ${{ secrets.DB_DATABASE }} | |
db-username: ${{ secrets.DB_USERNAME }} | |
db-password: ${{ secrets.DB_PASSWORD }} | |
mail-mailer: ${{ secrets.MAIL_MAILER }} | |
mail-host: ${{ secrets.MAIL_HOST }} | |
mail-port: ${{ secrets.MAIL_PORT }} | |
mail-username: ${{ secrets.MAIL_USERNAME }} | |
mail-password: ${{ secrets.MAIL_PASSWORD }} | |
mail-from-address: ${{ secrets.MAIL_FROM_ADDRESS }} | |
hitobito-base-url: ${{ secrets.HITOBITO_BASE_URL }} | |
hitobito-client-uid: ${{ secrets.HITOBITO_CLIENT_UID }} | |
hitobito-client-secret: ${{ secrets.HITOBITO_CLIENT_SECRET }} | |
collaboration-enabled: ${{ secrets.COLLABORATION_ENABLED }} | |
collaboration-signaling-servers: ${{ secrets.COLLABORATION_SIGNALING_SERVERS }} | |
sentry-laravel-dsn: ${{ secrets.SENTRY_LARAVEL_DSN }} | |
sentry-user-feedback-url: ${{ secrets.SENTRY_USER_FEEDBACK_URL }} | |
sentry-csp-report-uri: ${{ secrets.SENTRY_CSP_REPORT_URI }} | |
sentry-vue-dsn: ${{ secrets.SENTRY_VUE_DSN }} | |
- uses: getsentry/action-release@v1 | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_RELEASE_TRACKING_AUTH_TOKEN }} | |
SENTRY_ORG: ${{ secrets.SENTRY_ORG }} | |
if: env.SENTRY_AUTH_TOKEN != null | |
with: | |
environment: ${{ needs.get-environment-name.outputs.environment }} | |
projects: ${{ secrets.SENTRY_PROJECTS }} | |
ignore_missing: true | |
ignore_empty: true |