Projektworkflows

610644ae9328059c33a272d08b90c75d?s=47 Oliver Klee
September 17, 2019

 Projektworkflows

610644ae9328059c33a272d08b90c75d?s=128

Oliver Klee

September 17, 2019
Tweet

Transcript

  1. September 2019 Oliver Klee | @oliklee
 seminare@oliverklee.de Projektworkflows

  2. Semantic Versioning

  3. Major.Minor.Patch Semantic Versioning

  4. Breaking.Feature.Bugfix Semantic Versioning

  5. .. Semantic Versioning

  6. 1.2.1 … 1.2.3 1.2.1 … 1.3.0 1.2.1 … 2.0.0 Semantic

    Versioning
  7. Projekte 
 vs.
 Libraries

  8. Projekte Libraries Lockfiles haben eine composer.lock, package-lock.json Lockfiles composer.lock, package-lock.json

    werden Git-ignoriert TYPO3-Sites, Apps TYPO3-Extensions, Abhängigkeiten Abhängigkeiten
 eher spezifisch Abhängigkeiten
 möglichst flexibel
  9. Commit- Messages

  10. Codes in Commit-Messages [RELEASE] Release of TYPO3 9.5.9 [BUGFIX] Use

    workspace overlays in Record Path [TASK] Remove deprecated options in YouTube iFrame API [BUGFIX] Ensure manually updated slug is saved correctly [BUGFIX] Avoid double slash in cache directory [BUGFIX] Set module menu state on render time [BUGFIX] Dump processed files from 3rd party FAL-drivers [TASK] Add .rst file for 88045 [BUGFIX] Incorrect HTTP range specification in Linkvalidator [FEATURE] Make prepending slash in TCA slug configurable
  11. Text in Commit-Messages [BUGFIX] Fix frontend error handling when root

    page is protected If the root page is accessed directly, we add a check whether the page could be fetched with ignored group permissions. If that is the case, an access denied is triggered. If the root page also has the extendToSubPages flag set, we must not remove the page from the root line, which would trigger a service unavailable handling, but instead keep the root line and trigger a page not found.
  12. übliche
 Dateien

  13. CHANGELOG.md ## 2.2.0 ### Added - Mention the 9LTS campaign

    in the BE module (#224) - Display the speaker image in the event single view (#220) - Add Speaker.image (#217) ### Changed - Change from GPL V3 to GPL V2+ (#221) - Pass user object in modifySalutation hook (#215) - Rename and namespace the DataHandler hook class (#206) - Skip the DB cleanup in the new functional tests (#204) ### Removed - Remove deprecated "replaces" entry from composer.json (#222) - Remove unsupported properties from TCA type "select" (#191) ### Fixed - Fix the homepage URL in the composer.json (#228) - Fix the CSV export label in the BE module in TYPO3 8 (#225)
  14. .gitignore (Beispiel) /.idea /vendor /var/log/* !/var/log/.gitkeep !/var/log/production/.gitkeep /var/cache/* !/var/cache/.gitkeep /var/storage/*

    !/var/storage/.gitkeep /.env /node_modules *.map .DS_Store thumbs.db
  15. .gitattributes (Beispiel) /.gitattributes export-ignore /.github/ export-ignore /.gitignore export-ignore /.travis.yml export-ignore

    /CODE_OF_CONDUCT.md export-ignore /config/ export-ignore /phpcs.xml.dist export-ignore /tests/ export-ignore
  16. Git- Workflows

  17. GitHub-Flow

  18. Git-
 Flow

  19. Continuous Integration

  20. Softwarequalität steigern Code-
 Reviews automatisierte
 Tests
 (z.B. Unit-Tests) statische Analyse


    (Code-Checker)
  21. Deployment

  22. Deployment-Lösungen PHP Deployer TYPO3 Surf … Ruby Capistrano (Heroku) …

    nur Git Heroku …
  23. Composer

  24. Private Packagist "repositories": [ { "type": "composer", "url": "https://packages.example.com/" },

  25. Repositories per Git "repositories": [ { "type": "composer", "url": "https://packages.example.com/"

    }, { "type": "vcs", "url": "https://github.com/igorw/monolog" },
  26. Repositories per Pfad "repositories": [ { "type": "composer", "url": "https://packages.example.com/"

    }, { "type": "vcs", "url": "https://github.com/igorw/monolog" }, { "type": "path", "url": "packages/*" },
  27. Repositories per Pfad "repositories": [ { "type": "composer", "url": "https://packages.example.com/"

    }, { "type": "vcs", "url": "https://github.com/igorw/monolog" }, { "type": "path", "url": "packages/*" }, { "type": "path", "url": "../../src/typo3/ext/shopsystem", "symlink": true }, ],
  28. Patches für Pakete "extra": { "patches": { "vendor/package": { "Bug

    #1234: Something is wrong": "patches/1234.diff" } } } composer.json
  29. Patches für Pakete "extra": { "patches-file": "composer.patches.json", "enable-patching": true }

    { "patches": { "vendor/package": { "Bug #1234: Something is wrong": "patches/1234.diff" } } } composer.json composer-patches.json
  30. PHP-Module "require": { "php": "^5.6.0 || ~7.0.0 || ~7.1.0 ||

    ~7.2.0 || ~7.3.0", "ext-dom": "*", "ext-libxml": "*", "symfony/css-selector": "^3.4.0 || ^4.0.0" },
  31. require vs. require-dev "require": { "php": "^5.6.0 || ~7.0.0 ||

    ~7.1.0 || ~7.2.0 || ~7.3.0", "ext-dom": "*", "ext-libxml": "*", "symfony/css-selector": "^3.4.0 || ^4.0.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.15.3", "squizlabs/php_codesniffer": "^3.4.2", "phpmd/phpmd": "^2.7.0", "phpunit/phpunit": "^5.7.27" },
  32. Roave-Security-Advisories "require-dev": { "helhum/dotenv-connector": "^2.1.2", "typo3-console/composer-typo3-auto-install": "^0.2.1", "typo3-console/php-server-command": "^0.2.2", "nimut/testing-framework":

    "^4.1.5", "phpunit/phpunit": "^7.1.5", "helhum/typo3-deployer-recipe": "dev-master", "squizlabs/php_codesniffer": "^3.4.2", "friendsofphp/php-cs-fixer": "^2.15.2", "helmich/typo3-typoscript-lint": "^2.0.1", "smichaelsen/no-insecure-typo3-extensions": "dev-master", "roave/security-advisories": "dev-master" },
  33. Plattform (für Projekte) "config": { "platform": { "php": "7.2.9" }

    },
  34. Composer-Skripte "scripts": { "ci:php": "find *.php packages -name '*.php' -print0

    | xargs -0 -n 1 -P 4 php -l", "ci:php:sniff": "phpcs packages/shop packages/site“, "ci:ts": "typoscript-lint -c config/tslint.yaml --ansi -n -- fail-on-warnings -vvv packages/site/Configuration/TypoScript", "ci:tests:unit": "phpunit -c config/UnitTests.xml" "ci:tests": [ "@ci:tests:unit" ], "ci:dynamic": [ "@ci:tests" ], "ci:static": [ "@ci:php", "@ci:php:sniff", "@ci:ts" ], "ci": [ "@ci:static", "@ci:dynamic"
  35. Composer-Skripte & Deployer "scripts": { "db:pull": [ "dep typo3:uploads:clone", "dep

    typo3:database:dump", "typo3cms database:import < /tmp/data.sql", "rm /tmp/data.sql", "typo3cms cleanup:updatereferenceindex" ], "logs:pull": "dep typo3:logs:pull“ }
  36. Faker für Fake-Daten $faker = Faker\Factory::create(); echo $faker->name; // 'Lucy

    Cechtelar'; echo $faker->address; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700" echo $faker->text; // Dolores sit sint laboriosam dolorem culpa et autem. // Beatae nam sunt fugit et sit et mollitia sed. // Fuga deserunt tempora facere magni omnis. Omnis quia // temporibus laudantium sit minima sint.
  37. TYPO3

  38. .env TYPO3_CONTEXT='Development' TYPO3_ROUTING_HOSTNAME_DEFAULT='127.0.1:8080' TYPO3_ROUTING_HOSTNAME_EN='127.0.1:8081' TYPO3_ENCRYPTION_KEY='24a4330722…b3e4' TYPO3_INSTALL_SITE_NAME=‚Shopping' TYPO3_INSTALL_TOOL_PASSWORD='$pbkdf2-sha256$25000$X…uS0' TYPO3_INSTALL_DB_DBNAME='typo3_local' TYPO3_INSTALL_DB_HOST='localhost' TYPO3_INSTALL_DB_PASSWORD='typo3'

    TYPO3_INSTALL_DB_USER='typo3' TYPO3_GFX_PROCESSOR_PATH='/opt/local/bin/' TYPO3_INSTALL_DB_PORT='' TYPO3_INSTALL_DB_DRIVER='' TYPO3_INSTALL_DB_UNIX_SOCKET='' ## Collmex login credentials COLLMEX_LOGIN_USER='…' COLLMEX_LOGIN_PASSWORD='…' ## Feature switches FEATURE_SWITCH_TRANSMIT_ORDER_TO_ACCOUNTING='0'