--- name: Build release on: # yamllint disable-line rule:truthy push: tags: - '*' workflow_dispatch: jobs: build: name: Build release runs-on: [ubuntu-latest] strategy: fail-fast: false matrix: version: ['slim', 'full'] steps: - name: Setup PHP, with composer and extensions id: setup-php # https://github.com/shivammathur/setup-php uses: shivammathur/setup-php@v2 with: # Should match the minimum required version for SimpleSAMLphp php-version: '8.1' tools: composer:v2, phive extensions: mbstring, xml coverage: none - name: Setup problem matchers for PHP run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - uses: actions/checkout@v4 # Store the version, stripping any v-prefix - name: Write release version run: | { echo "TAG=${{ github.ref_name }}" echo "VERSION=${TAG#v}" echo "COMPOSER_VERSION=$(composer config version)" } >> "$GITHUB_ENV" - name: Validate composer.json and composer.lock run: composer validate - name: Make sure a version is set in composer.json that matches the tag if: "${{ env.COMPOSER_VERSION != env.TAG }}" run: exit 1 - name: Install Composer dependencies run: composer install --no-progress --no-dev --prefer-dist --optimize-autoloader - name: Install SimpleSAMLphp modules env: FILE: ".github/build/${{ matrix.version }}.json" run: | for k in $(jq '.modules | keys | .[]' "$FILE"); do module=$(jq -r ".modules[$k]" "$FILE"); if [ -n "$module" ]; then repository=$(jq -r '.repository' <<< "$module"); v=$(jq -r '.version' <<< "$module"); composer require "$repository:$v" --update-no-dev --ignore-platform-reqs fi done - name: Add composer.phar to the release run: phive --no-progress install --trust-gpg-keys CBB3D576F2A0946F --copy --target ./bin composer - name: Clean release run: | grep export-ignore .gitattributes | cut -d ' ' -f 1 | while IFS= read -r line do rm -rf "$line" done rm -rf .git - name: Build tarball run: | cd .. cp -R simplesamlphp "simplesamlphp-$VERSION" TARGET="/tmp/simplesamlphp-$VERSION-${{ matrix.version }}.tar.gz" # remove -slim from the filename for our minimalistic build TARGET=${TARGET/-slim/} echo "VERSION=$TARGET" >> "$GITHUB_ENV" tar --owner 0 --group 0 -cvzf "$TARGET" "simplesamlphp-$VERSION" rm -rf "simplesamlphp-$VERSION" - name: Save tarball uses: actions/upload-artifact@v4 with: name: release-${{ matrix.version }} path: "$TARGET" retention-days: 1 - name: Calculate SHA checksum (${{ matrix.version }}) run: sha256sum "$TARGET" - name: Run website build if: | startsWith(github.ref, 'refs/tags/v') && contains(github.ref, 'alpha') != true && contains(github.ref, 'beta') != true uses: actions/github-script@v7 with: # Token has to be generated on a user account that controls the docs-repository. # The _only_ scope to select is "Access public repositories", nothing more. github-token: ${{ secrets.PAT_TOKEN }} script: | await github.rest.actions.createWorkflowDispatch({ owner: 'simplesamlphp', repo: 'simplesamlphp.github.io', workflow_id: 'github-pages.yml', ref: 'release' })