diff --git a/.github/workflows/call-php-static-checks-and-test.yml b/.github/workflows/call-php-static-checks-and-test.yml index ee7133e..97404f9 100644 --- a/.github/workflows/call-php-static-checks-and-test.yml +++ b/.github/workflows/call-php-static-checks-and-test.yml @@ -18,8 +18,7 @@ jobs: source-directory: './src' disable-phan: ${{ vars.DISABLE_PHAN_CHECK == 'true' || false }} secrets: - opj-package-user: ${{ secrets.OPJ_PACKAGE_USER }} - opj-package-api-key: ${{ secrets.OPJ_PACKAGE_API_KEY }} + opj-package-registry: "${{ secrets.OPJ_PACKAGE_USER }}|${{ secrets.OPJ_PACKAGE_API_KEY }}|${{ vars.OPJ_PACKAGE_URL }}" call-check-and-build-remote: # call remote workflow if repository name is Composer.corelibs-composer-all @@ -32,6 +31,5 @@ jobs: source-directory: './src' disable-phan: ${{ vars.DISABLE_PHAN_CHECK == 'true' || false }} secrets: - opj-package-user: ${{ secrets.OPJ_PACKAGE_USER }} - opj-package-api-key: ${{ secrets.OPJ_PACKAGE_API_KEY }} + opj-package-registry: "${{ secrets.OPJ_PACKAGE_USER }}|${{ secrets.OPJ_PACKAGE_API_KEY }}|${{ vars.OPJ_PACKAGE_URL }}" diff --git a/.github/workflows/php-static-checks-and-tests.yml b/.github/workflows/php-static-checks-and-tests.yml index 72cce08..2fc58e7 100644 --- a/.github/workflows/php-static-checks-and-tests.yml +++ b/.github/workflows/php-static-checks-and-tests.yml @@ -36,12 +36,9 @@ on: default: './src' description: 'Directory where the PHP source code is located, relative to the repository root' secrets: - opj-package-user: - required: true - description: 'Username for private package repository' - opj-package-api-key: - required: true - description: 'API key for private package repository' + opj-package-registry: + required: false + description: 'Package registry login infos: user|token|url[:user|token|url:...]' jobs: setup: @@ -50,13 +47,24 @@ jobs: php-version: ${{ steps.set-matrix.outputs.php-version }} phpunit-version: ${{ steps.set-matrix.outputs.phpunit-version }} operating-system: ${{ steps.set-matrix.outputs.operating-system }} + opj-package-registry: ${{ steps.set-matrix.outputs.opj-package-registry }} steps: - name: Set matrix values id: set-matrix + env: + OPJ_PACKAGE_REGISTRY: ${{ secrets.opj-package-registry }} run: | echo "php-version=$(echo '${{ inputs.php-version }}' | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | jq -R . | jq -cs .)" >> $GITHUB_OUTPUT echo "phpunit-version=$(echo '${{ inputs.phpunit-version }}' | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | jq -R . | jq -cs .)" >> $GITHUB_OUTPUT echo "operating-system=$(echo '${{ inputs.operating-system }}' | tr ',' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | jq -R . | jq -cs .)" >> $GITHUB_OUTPUT + # take the secrets opj-package-registry, split by ":" for each entry + # then split by "|" for each entry to get user, token, url + # then create a JSON array of objects with user, token, url + if [ -n "$OPJ_PACKAGE_REGISTRY" ]; then + echo "opj-package-registry=$(echo "$OPJ_PACKAGE_REGISTRY" | tr ':' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | jq -R 'split("|") | {user: .[0], token: .[1], url: .[2]}' | jq -cs .)" >> $GITHUB_OUTPUT + else + echo "opj-package-registry=[]" >> $GITHUB_OUTPUT + fi; php-check-and-test-matrix: needs: setup @@ -82,17 +90,6 @@ jobs: tools: composer, ${{ inputs.disable-phan == false && 'phan, ' || '' }}phpstan, phpcs, phpunit:${{ matrix.phpunit-version }}, cs2pr # coverage: pcov coverage: xdebug - # env: - # # Does not work, hast to be set in dependencies step, see below in "install dependencies" - # COMPOSER_AUTH: | - # { - # "http-basic": { - # "packages.omnicomproduction.jp": { - # "username": "${{ secrets.OPJ_PACKAGE_USER }}", - # "password": "${{ secrets.OPJ_PACKAGE_API_KEY }}" - # } - # } - # } - name: Check Tools setup id: check-tools run: | @@ -151,9 +148,23 @@ jobs: key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }} restore-keys: ${{ runner.os }}-composer- - - name: Install dependencies + - name: Authenticate to private package repository + env: + OPJ_PACKAGE_REGISTRY: ${{ needs.setup.outputs.opj-package-registry }} run: | - composer config http-basic.packages.omnicomproduction.jp "${{ secrets.opj-package-user }}" "${{ secrets.opj-package-api-key }}" + # opj-package-registry is a JSON array of objects with user, token, url + for entry in $(echo "$OPJ_PACKAGE_REGISTRY" | jq -c '.[]'); do + user=$(echo "$entry" | jq -r '.user') + token=$(echo "$entry" | jq -r '.token') + url=$(echo "$entry" | jq -r '.url') + # if user, token or url is empty, skip this entry + if [ -z "$user" ] || [ -z "$token" ] || [ -z "$url" ]; then + echo "⚠️ Warning: Skipping invalid registry entry: $entry" + continue + fi + echo "Authenticating to private package repository: $url with user: $user" + composer config http-basic."$url" "$user" "$token" + done composer install --prefer-dist working-directory: ${{ inputs.composer-directory }} @@ -203,13 +214,16 @@ jobs: phpunit --colors=never \ --no-coverage \ --coverage-text=phpunit-coverage.txt \ - --coverage-clover=phpunit-openclover.xml + --coverage-clover=phpunit-openclover.xml \ + --log-junit=phpunit-junit.log else phpunit --colors=never \ --no-coverage \ --coverage-text=phpunit-coverage.txt \ --only-summary-for-coverage-text \ - --coverage-openclover=phpunit-openclover.xml + --coverage-openclover=phpunit-openclover.xml \ + --log-junit=phpunit-junit.log \ + --log-otr=phpunit-otr.log fi; - name: Code Coverage Summary Report @@ -293,6 +307,35 @@ jobs: } >> $GITHUB_STEP_SUMMARY fi + if [ -f phpunit-junit.log ]; then + { + echo "