name: hdf5 dev tarball # Controls when the action will run. Triggers the workflow on a schedule on: workflow_call: inputs: # use_tag: # description: 'Release version tag' # type: string # required: false # default: snapshot use_environ: description: 'Environment to locate files' type: string required: true default: snapshots outputs: has_changes: description: "Whether there were changes the previous day" value: ${{ jobs.check_commits.outputs.has_changes }} file_base: description: "The common base name of the source tarballs" value: ${{ jobs.create_tarball.outputs.file_base }} file_branch: description: "The branch used for the source tarballs" value: ${{ jobs.check_commits.outputs.branch_ref }} file_sha: description: "The sha used for the source tarballs" value: ${{ jobs.check_commits.outputs.branch_sha }} permissions: contents: read # A workflow run is made up of one or more jobs that can run sequentially or # in parallel jobs: check_commits: name: Check for recent commits runs-on: ubuntu-latest outputs: has_changes: ${{ steps.check-new-commits.outputs.has-new-commits }} branch_ref: ${{ steps.get-branch-name.outputs.BRANCH_REF }} branch_sha: ${{ steps.get-branch-sha.outputs.BRANCH_SHA }} steps: - name: Get branch name id: get-branch-name env: GITHUB_REF: ${{ github.ref }} GITHUB_REF_NAME: ${{ github.ref_name }} GITHUB_HEAD_REF: ${{ github.head_ref }} #run: echo "${{ env.GITHUB_REF_NAME }} | grep -P '[0-9]+/merge' &> /dev/null && BRANCH_REF=${{ env.GITHUB_HEAD_REF }} || BRANCH_REF=${{ env.GITHUB_REF_NAME }}" >> $GITHUB_OUTPUT run: echo "BRANCH_REF=${{ env.GITHUB_HEAD_REF || env.GITHUB_REF_NAME }}" >> $GITHUB_OUTPUT - name: Get branch sha id: get-branch-sha env: GITHUB_SHA: ${{ github.sha }} GITHUB_WF_SHA: ${{ github.workflow_sha }} run: | SHORT_SHA=$(echo "${{ env.GITHUB_WF_SHA }}" | cut -c1-7) echo "BRANCH_SHA=$SHORT_SHA" >> $GITHUB_OUTPUT - name: Check for changed source id: check-new-commits uses: adriangl/check-new-commits-action@v1 with: seconds: 86400 # One day in seconds branch: '${{ steps.get-branch-name.outputs.branch_ref }}' if: ${{ inputs.use_environ == 'snapshots' }} - run: echo "You have ${{ steps.check-new-commits.outputs.new-commits-number }} new commit(s) in ${{ steps.get-branch-name.outputs.BRANCH_REF }} ✅!" if: ${{ steps.check-new-commits.outputs.has-new-commits == 'true' }} - run: echo "Short commit sha is ${{ steps.get-branch-sha.outputs.BRANCH_SHA }}!" create_tarball: name: Create a source tarball runs-on: ubuntu-latest needs: check_commits if: ${{ ((inputs.use_environ == 'snapshots') && (needs.check_commits.outputs.has_changes == 'true')) || (inputs.use_environ == 'release') }} outputs: file_base: ${{ steps.set-file-base.outputs.FILE_BASE }} steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Get Sources uses: actions/checkout@v4.1.1 with: path: hdfsrc - name: Install Autotools Dependencies (Linux, serial) run: | sudo apt update sudo apt install automake autoconf libtool libtool-bin gzip dos2unix - name: Retrieve version id: version run: | cd "$GITHUB_WORKSPACE/hdfsrc" echo "TAG_VERSION=$(bin/h5vers)" >> $GITHUB_OUTPUT - name: Set file base name id: set-file-base run: | if [[ '${{ inputs.use_environ }}' == 'snapshots' && '${{ needs.check_commits.outputs.has_changes }}' == 'true' ]] then FILE_NAME_BASE=$(echo "hdf5-${{ needs.check_commits.outputs.branch_ref }}-${{ needs.check_commits.outputs.branch_sha }}") else FILE_NAME_BASE=$(echo "hdf5-${{ steps.version.outputs.TAG_VERSION }}") fi echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT shell: bash - name: Create snapshot file base name id: create-file-base if: ${{ (inputs.use_environ == 'snapshots') && (needs.check_commits.outputs.has_changes == 'true') }} run: | cd "$GITHUB_WORKSPACE/hdfsrc" bin/release -d $GITHUB_WORKSPACE --branch ${{ needs.check_commits.outputs.branch_ref }} --revision gzip zip shell: bash - name: Create release file base name id: create-rel-base if: ${{ (inputs.use_environ == 'release') }} run: | cd "$GITHUB_WORKSPACE/hdfsrc" bin/release -d $GITHUB_WORKSPACE gzip zip cmake-tgz cmake-zip shell: bash - name: List files in the repository run: | ls -l ${{ github.workspace }} ls $GITHUB_WORKSPACE # Save files created by release script - name: Save tgz-tarball uses: actions/upload-artifact@v4 with: name: tgz-tarball path: ${{ steps.set-file-base.outputs.FILE_BASE }}.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` - name: Save zip-tarball uses: actions/upload-artifact@v4 with: name: zip-tarball path: ${{ steps.set-file-base.outputs.FILE_BASE }}.zip if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` - name: Save NEWSLETTER uses: actions/upload-artifact@v4 with: name: NEWSLETTER path: ./hdfsrc/release_docs/NEWSLETTER.txt if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`