Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update actions for release option, fix branch for daily build #3185

Merged
merged 13 commits into from
Jun 29, 2023
2 changes: 1 addition & 1 deletion .github/workflows/daily-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
needs: [call-workflow-tarball, call-workflow-ctest]
permissions:
contents: write # In order to allow tag creation
uses: ./.github/workflows/release.yml
uses: ./.github/workflows/release-files.yml
with:
file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
file_branch: ${{ needs.call-workflow-tarball.outputs.file_branch }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/hdfeos5.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: hdfeos5
name: hdfeos5 dev

on:
workflow_dispatch:
Expand Down
140 changes: 140 additions & 0 deletions .github/workflows/release-files.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
name: hdf5 dev release

# Controls when the action will run. Triggers the workflow on a schedule
on:
workflow_call:
inputs:
file_base:
description: "The common base name of the source tarballs"
required: true
type: string
file_branch:
description: "The branch name for the source tarballs"
required: true
type: string
file_sha:
description: "The sha for the source tarballs"
required: true
type: string

# Minimal permissions to be inherited by any job that doesn't declare its own permissions
permissions:
contents: read

# Previous workflows must pass to get here so tag the commit that created the files
jobs:
create-tag:
runs-on: ubuntu-latest
permissions:
contents: write # In order to allow tag creation
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Get Sources
uses: actions/checkout@v3
with:
fetch-depth: 0

- run: |
git checkout ${{ inputs.file_sha }}

- uses: rickstaa/action-create-tag@v1
id: "tag_create"
with:
commit_sha: ${{ inputs.file_sha }}
tag: "snapshot"
force_push_tag: true
message: "Latest snapshot"

# Print result using the action output.
- run: |
echo "Tag already present: ${{ steps.tag_create.outputs.tag_exists }}"

PreRelease-getfiles:
runs-on: ubuntu-latest
needs: create-tag
environment: snapshots
permissions:
contents: write
steps:
- name: Get file base name
id: get-file-base
run: |
FILE_NAME_BASE=$(echo "${{ inputs.file_base }}")
echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT

# Get files created by tarball script
- name: Get doxygen (Linux)
uses: actions/download-artifact@v3
with:
name: docs-doxygen
path: ${{ github.workspace }}/${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen

- name: Zip Folder
run: zip -r ${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen.zip ./${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen

- name: Get tgz-tarball (Linux)
uses: actions/download-artifact@v3
with:
name: tgz-tarball
path: ${{ github.workspace }}

- name: Get zip-tarball (Windows)
uses: actions/download-artifact@v3
with:
name: zip-tarball
path: ${{ github.workspace }}

# Get files created by cmake-ctest script
- name: Get published binary (Windows)
uses: actions/download-artifact@v3
with:
name: zip-vs2022-binary
path: ${{ github.workspace }}

- name: Get published binary (MacOS)
uses: actions/download-artifact@v3
with:
name: tgz-osx12-binary
path: ${{ github.workspace }}

- name: Get published binary (Linux)
uses: actions/download-artifact@v3
with:
name: tgz-ubuntu-2204-binary
path: ${{ github.workspace }}

- name: PreRelease tag
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: "snapshot"
prerelease: true
files: |
${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen.zip
${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz
${{ steps.get-file-base.outputs.FILE_BASE }}.zip
${{ steps.get-file-base.outputs.FILE_BASE }}-osx12.tar.gz
${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204.tar.gz
${{ steps.get-file-base.outputs.FILE_BASE }}-win_vs2022.zip
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`

- name: Store Release url
run: |
echo "${{ steps.create_release.outputs.upload_url }}" > ./upload_url

# - uses: actions/upload-artifact@v3
# with:
# path: ./upload_url
# name: upload_url

- name: List files for the space (Linux)
run: |
ls -l ${{ github.workspace }}
ls ${{ runner.workspace }}

- name: dev-only-docs
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ${{ github.workspace }}/${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen

173 changes: 48 additions & 125 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,140 +1,63 @@
name: hdf5 dev release
name: hdf5 dev release build

# Controls when the action will run. Triggers the workflow on a schedule
# Controls when the action will run. Triggers the workflow on a manual run
on:
workflow_call:
workflow_dispatch:
inputs:
file_base:
description: "The common base name of the source tarballs"
required: true
type: string
file_branch:
description: "The branch name for the source tarballs"
required: true
tag:
description: 'Release version tag'
type: string
file_sha:
description: "The sha for the source tarballs"
required: false
default: snapshot
environment:
description: 'Environment to locate files'
type: choice
required: true
type: string
default: snapshots
options:
- snapshots
- release

# Minimal permissions to be inherited by any job that doesn't declare its own permissions
permissions:
contents: read

# Previous workflows must pass to get here so tag the commit that created the files
# A workflow run is made up of one or more jobs that can run sequentially or
# in parallel.
jobs:
create-tag:
log-the-inputs:
runs-on: ubuntu-latest
permissions:
contents: write # In order to allow tag creation
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Get Sources
uses: actions/checkout@v3
with:
fetch-depth: 0

- run: |
git checkout ${{ inputs.file_sha }}

- uses: rickstaa/action-create-tag@v1
id: "tag_create"
with:
commit_sha: ${{ inputs.file_sha }}
tag: "snapshot"
force_push_tag: true
message: "Latest snapshot"

# Print result using the action output.
- run: |
echo "Tag already present: ${{ steps.tag_create.outputs.tag_exists }}"

PreRelease-getfiles:
runs-on: ubuntu-latest
needs: create-tag
environment: snapshots
echo "Tag: $TAG"
echo "Environment: $ENVIRONMENT"
env:
TAG: ${{ inputs.tag }}
ENVIRONMENT: ${{ inputs.environment }}

call-workflow-tarball:
needs: log-the-inputs
uses: ./.github/workflows/tarball.yml
with:
use_tag: ${{ inputs.tag }}
use_environ: ${{ inputs.environment }}

call-workflow-ctest:
needs: call-workflow-tarball
uses: ./.github/workflows/cmake-ctest.yml
with:
file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
use_tag: ${{ inputs.tag }}
use_environ: ${{ inputs.environment }}

call-workflow-release:
needs: [call-workflow-tarball, call-workflow-ctest]
permissions:
contents: write
steps:
- name: Get file base name
id: get-file-base
run: |
FILE_NAME_BASE=$(echo "${{ inputs.file_base }}")
echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT

# Get files created by tarball script
- name: Get doxygen (Linux)
uses: actions/download-artifact@v3
with:
name: docs-doxygen
path: ${{ github.workspace }}/${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen

- name: Zip Folder
run: zip -r ${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen.zip ./${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen

- name: Get tgz-tarball (Linux)
uses: actions/download-artifact@v3
with:
name: tgz-tarball
path: ${{ github.workspace }}

- name: Get zip-tarball (Windows)
uses: actions/download-artifact@v3
with:
name: zip-tarball
path: ${{ github.workspace }}

# Get files created by cmake-ctest script
- name: Get published binary (Windows)
uses: actions/download-artifact@v3
with:
name: zip-vs2022-binary
path: ${{ github.workspace }}

- name: Get published binary (MacOS)
uses: actions/download-artifact@v3
with:
name: tgz-osx12-binary
path: ${{ github.workspace }}

- name: Get published binary (Linux)
uses: actions/download-artifact@v3
with:
name: tgz-ubuntu-2204-binary
path: ${{ github.workspace }}

- name: PreRelease tag
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: "snapshot"
prerelease: true
files: |
${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen.zip
${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz
${{ steps.get-file-base.outputs.FILE_BASE }}.zip
${{ steps.get-file-base.outputs.FILE_BASE }}-osx12.tar.gz
${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204.tar.gz
${{ steps.get-file-base.outputs.FILE_BASE }}-win_vs2022.zip
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`

- name: Store Release url
run: |
echo "${{ steps.create_release.outputs.upload_url }}" > ./upload_url

# - uses: actions/upload-artifact@v3
# with:
# path: ./upload_url
# name: upload_url

- name: List files for the space (Linux)
run: |
ls -l ${{ github.workspace }}
ls ${{ runner.workspace }}

- name: dev-only-docs
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ${{ github.workspace }}/${{ steps.get-file-base.outputs.FILE_BASE }}.doxygen
contents: write # In order to allow tag creation
uses: ./.github/workflows/release-files.yml
with:
file_base: ${{ needs.call-workflow-tarball.outputs.file_base }}
file_branch: ${{ needs.call-workflow-tarball.outputs.file_branch }}
file_sha: ${{ needs.call-workflow-tarball.outputs.file_sha }}
use_tag: ${{ inputs.tag }}
use_environ: ${{ inputs.environment }}