Build and upload gcc rpm packages #40
This file contains hidden or 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: Build and upload gcc rpm packages | |
| on: | |
| workflow_run: | |
| workflows: [ "spc-download" ] | |
| types: | |
| - completed | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.arch == 'x86_64' && 'ubuntu-24.04' || 'ubuntu-24.04-arm' }} | |
| container: | |
| image: almalinux:${{ matrix.alma }} | |
| defaults: | |
| run: | |
| shell: bash | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| BASH_ENV: /tmp/gha-bashenv | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| php-version: [ 8.2, 8.3, 8.4 ] | |
| arch: [ x86_64, arm64 ] | |
| alma: [ 8, 9, 10 ] | |
| steps: | |
| - name: Set architecture variables | |
| run: | | |
| if [[ "${{ matrix.arch }}" == "arm64" ]]; then | |
| echo "RPM_ARCH=aarch64" >> $GITHUB_ENV | |
| else | |
| echo "RPM_ARCH=${{ matrix.arch }}" >> $GITHUB_ENV | |
| fi | |
| - name: Bootstrap container | |
| run: | | |
| dnf -y install epel-release dnf-plugins-core | |
| dnf -y install \ | |
| wget perl \ | |
| ruby rubygems ruby-devel make rpm-build rpmdevtools \ | |
| openssh rsync createrepo_c \ | |
| git jq tar gzip which sudo xz | |
| if [[ "${{ matrix.alma }}" -eq 8 || "${{ matrix.alma }}" -eq 9 ]]; then | |
| dnf -y install gcc-toolset-14 | |
| source /opt/rh/gcc-toolset-14/enable | |
| touch "$BASH_ENV" | |
| echo 'source /opt/rh/gcc-toolset-14/enable' >> "$BASH_ENV" | |
| else | |
| dnf -y install g++ | |
| fi | |
| gem install --no-document fpm | |
| curl -#fSL https://dl.static-php.dev/static-php-cli/bulk/php-8.4.11-cli-linux-${{ env.RPM_ARCH }}.tar.gz | tar -xz -C /usr/local/bin && \ | |
| chmod +x /usr/local/bin/php | |
| dnf -y install glibc-langpack-en glibc-locale-source | |
| localedef -i en_US -f UTF-8 en_US.UTF-8 | |
| - name: Install composer | |
| run: | | |
| wget https://raw.githubusercontent.com/composer/getcomposer.org/f3108f64b4e1c1ce6eb462b159956461592b3e3e/web/installer -O - -q | php -- --quiet | |
| mv composer.phar /usr/bin/composer | |
| - name: Install re2c | |
| run: | | |
| if [[ "${{ matrix.alma }}" -eq 9 || "${{ matrix.alma }}" -eq 10 ]]; then | |
| dnf -y install re2c | |
| else | |
| dnf -y install python39 | |
| curl -L https://github.com/skvadrik/re2c/releases/download/4.3/re2c-4.3.tar.xz | tar xJ | |
| cd re2c-4.3 | |
| ./configure | |
| make -j2 | |
| make install | |
| cd .. | |
| rm -rf re2c-4.3 | |
| fi | |
| - name: Set up SSH key | |
| uses: webfactory/ssh-agent@v0.8.0 | |
| with: | |
| ssh-private-key: ${{ secrets.GITHUBRPMHENDERKESPRIVATEKEY }} | |
| - name: Add remote host to known_hosts | |
| run: | | |
| mkdir -p ~/.ssh | |
| cat >> /root/.ssh/known_hosts <<'EOF' | |
| rpm.henderkes.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPQq0y77dDEtxECVMhCxjcqiV369goMcbInsY/d+F1yXGwqOXQ6RqIEzgaVhgq0joMJT5BiGXNXQ+OI10/KtzGI= | |
| rpm.henderkes.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2laCc5jifgjL/2zLzgP1E/X3kouXdaZv00KtAV1DOO5umThoWzb16cswnVtjtLUEMIuo9rPLB79xX2Asa+nN3uMgJDANnr/xnhRoI++yOGLga40/O69U88j5x+5FXODscH/k4n85mfcjzm/fZLXcHlb17ibCmU20I3v46sydn95Pp4/ShDvqsHVB4gWEKJ+jStkooUz2H1UZ8ZquNtaPTlmkOeClNj6gxag74P5b9VB6M5YNac2Emi3Nm0dYkc+BL0Qv+NEtFR1lR63DLa3O/NGTALGJYGmTUkjwiv8KygegaKhd2zxESmWhV7eYIPax8zL+GE9sX1Xwwh1huS0vsuwr2dXPP1/q5slz1AQV/lx85fGdiHc0F8RUXwqXbvGxZJheTuC/Mgu0cFzp5gqO4kTP28X+9fokzScBKBCIfObDXrl7rZgTXAA8IQ5gHk1tGchaEOIcDsjdISW5HVOiwocYSwUNMHzuZ08qAulatIywtOGcWVRdvOs7TcvSgfZ0= | |
| rpm.henderkes.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICaB5IjokRHAH0Y9pzVe/Jx3s6cn0OADJ9uTxQQubBMu | |
| EOF | |
| chmod 600 /root/.ssh/known_hosts | |
| - name: Get PHP version | |
| run: | | |
| # Get current PHP version using the PHP API | |
| php_version=$(curl -s "https://www.php.net/releases/index.php?json&version=${{ matrix.php-version }}" | jq -r '.version') | |
| echo "Current PHP version: ${php_version}" | |
| echo "PHP_VERSION=${php_version}" >> $GITHUB_ENV | |
| - name: Set target folder | |
| run: echo "TARGET_DIR=el${{ matrix.alma }}" >> $GITHUB_ENV | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Composer install | |
| run: composer install | |
| - name: Download artifact from spc-download.yml | |
| uses: dawidd6/action-download-artifact@v11 | |
| with: | |
| workflow: spc-download.yml | |
| name: downloads-tarball | |
| - name: Extract with permissions | |
| run: | | |
| mkdir -p vendor/crazywhalecc/static-php-cli/downloads | |
| tar -xzf downloads.tar.gz -C vendor/crazywhalecc/static-php-cli/downloads | |
| rm downloads.tar.gz | |
| - name: Build PHP and packages | |
| run: | | |
| php bin/spp all --target=native-native-gnu --type=rpm --phpv=${{ matrix.php-version }} | |
| - name: Upload packages | |
| run: | | |
| rsync -av --ignore-existing dist/rpm/*.rpm github@rpm.henderkes.com:/home/github/rpm/${{ env.RPM_ARCH }}/${{ env.TARGET_DIR }}/ | |
| - name: Update repository metadata | |
| run: | | |
| ssh github@rpm.henderkes.com "cd /home/github/rpm/${{ env.RPM_ARCH }}/${{ env.TARGET_DIR }}/ && rm -rf repodata && createrepo_static && createrepo_c ." | |
| - name: "Upload logs" | |
| if: ${{ failure() }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: build-logs-${{ matrix.arch }}-el${{ matrix.alma }}-php${{ matrix.php-version }} | |
| path: vendor/crazywhalecc/static-php-cli/log | |
| # - name: Install tmate | |
| # if: ${{ failure() }} | |
| # run: | | |
| # case "${{ matrix.arch }}" in | |
| # x86_64) | |
| # arch="amd64" | |
| # ;; | |
| # arm64) | |
| # arch="arm64v8" | |
| # ;; | |
| # esac | |
| # dir="tmate-2.4.0-static-linux-$arch" | |
| # curl -L "https://github.com/tmate-io/tmate/releases/download/2.4.0/$dir.tar.xz" | tar -xJ -O "$dir/tmate" > /usr/bin/tmate | |
| # chmod +x /usr/bin/tmate | |
| # | |
| # - name: Setup tmate session | |
| # if: ${{ failure() }} | |
| # uses: mxschmitt/action-tmate@v3 | |
| # with: | |
| # install-dependencies: false | |
| # sudo: false |