| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, | |
| # software distributed under the License is distributed on an | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| # KIND, either express or implied. See the License for the | |
| # specific language governing permissions and limitations | |
| # under the License. | |
| name: RC | |
| on: | |
| push: | |
| tags: | |
| - '*-rc*' | |
| concurrency: | |
| group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| archive: | |
| name: Archive | |
| runs-on: ubuntu-26.04 | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Prepare for tag | |
| if: github.ref_type == 'tag' | |
| run: | | |
| version=${GITHUB_REF_NAME#v} | |
| version=${version%-rc*} | |
| rc=${GITHUB_REF_NAME##*-rc} | |
| echo "VERSION=${version}" >> ${GITHUB_ENV} | |
| echo "RC=${rc}" >> ${GITHUB_ENV} | |
| echo "VERSION=${version}" | |
| echo "RC=${rc}" | |
| - name: Archive | |
| run: | | |
| ARCHIVE_FILE_NAME="apache-iceberg-cpp-${VERSION}" | |
| tar_gz="${ARCHIVE_FILE_NAME}.tar.gz" | |
| echo "TAR_GZ=${tar_gz}" >> ${GITHUB_ENV} | |
| git archive HEAD --prefix "${ARCHIVE_FILE_NAME}/" --output "${tar_gz}" | |
| sha512sum "${tar_gz}" > "${tar_gz}.sha512" | |
| - name: Audit | |
| run: | | |
| dev/release/run_rat.sh "${TAR_GZ}" | |
| - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 | |
| with: | |
| name: archive | |
| path: | | |
| apache-iceberg-cpp-* | |
| verify: | |
| name: Verify | |
| needs: | |
| - archive | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| max-parallel: 15 | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - macos-26 | |
| - ubuntu-26.04 | |
| # - windows-latest | |
| include: | |
| - os: ubuntu-26.04 | |
| CC: gcc-14 | |
| CXX: g++-14 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 | |
| with: | |
| name: archive | |
| - name: Set compilers on Ubuntu | |
| if: ${{ startsWith(matrix.os, 'ubuntu') }} | |
| run: | | |
| echo "CC=${{ matrix.CC }}" >> $GITHUB_ENV | |
| echo "CXX=${{ matrix.CXX }}" >> $GITHUB_ENV | |
| - name: Install dependencies on Ubuntu | |
| if: ${{ startsWith(matrix.os, 'ubuntu') }} | |
| shell: bash | |
| run: sudo apt-get update && sudo apt-get install -y libcurl4-openssl-dev libssl-dev | |
| - name: Verify | |
| run: | | |
| tar_gz=$(echo apache-iceberg-cpp-*.tar.gz) | |
| version=${tar_gz#apache-iceberg-cpp-} | |
| version=${version%.tar.gz} | |
| version=${version%%-rc*} | |
| if [ "${GITHUB_REF_TYPE}" = "tag" ]; then | |
| rc=${GITHUB_REF_NAME##*-rc} | |
| else | |
| rc=100 | |
| fi | |
| echo "VERSION=${version}" | |
| echo "RC=${rc}" | |
| # The verify_rc.sh script will untar and | |
| # run cmake, build, tests (ctest) and install | |
| VERIFY_SIGN=0 VERIFY_DOWNLOAD=0 dev/release/verify_rc.sh "${version}" "${rc}" | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| upload: | |
| name: Upload | |
| if: github.ref_type == 'tag' | |
| needs: | |
| - verify | |
| runs-on: ubuntu-26.04 | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 | |
| with: | |
| name: archive | |
| - name: Upload | |
| run: | | |
| gh release create ${GITHUB_REF_NAME} \ | |
| --prerelease \ | |
| --title "Apache Iceberg C++ ${GITHUB_REF_NAME}" \ | |
| --generate-notes \ | |
| --verify-tag \ | |
| apache-iceberg-cpp-*.tar.gz \ | |
| apache-iceberg-cpp-*.tar.gz.sha* | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |