Release workflow run #322
This file contains 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: Release workflow run | |
on: | |
push: | |
branches: [ 'feature/automated_release' ] | |
# branches: [ 'master', 'main', 'develop', 'feature/automated_release' ] | |
# tags: [ 'v*' ] | |
# pull_request: | |
# branches: [ 'master', 'main', 'develop' ] | |
schedule: | |
- cron: '0 2 * * *' # daily | |
workflow_dispatch: | |
inputs: | |
branch: | |
description: 'Branch or tag to retrieve the binaries from' | |
required: false | |
default: 'master' | |
jobs: | |
# release_job: | |
# uses: ./.github/workflows/release_binaries.yml | |
# with: | |
# branch: master | |
# target: nightly | |
# get_latest_tag: | |
# runs-on: ubuntu-latest | |
# outputs: | |
# tag: ${{ fromJson(steps.get_latest_release.outputs.data).tag_name }} | |
# steps: | |
# - uses: octokit/request-action@v2.x | |
# id: get_latest_release | |
# with: | |
# route: GET /repos/{owner}/{repo}/releases/latest | |
# owner: coolprop | |
# repo: coolprop | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# - run: "echo latest release id: ${{ fromJson(steps.get_latest_release.outputs.data).id }}" | |
# - run: "echo latest release tag: ${{ fromJson(steps.get_latest_release.outputs.data).tag_name }}" | |
set_vars: | |
runs-on: ubuntu-latest | |
outputs: | |
branch: ${{ steps.propagate_vars.outputs.branch }} | |
target: ${{ steps.propagate_vars.outputs.target }} | |
webdir: ${{ steps.propagate_vars.outputs.webdir }} | |
steps: | |
# Start with the branch or tag for the source code | |
- run: echo "BRANCH=${{ (inputs.branch == '' && 'master') || inputs.branch }}" >> $GITHUB_ENV | |
# Try to parse the branch as a version number | |
- run: | | |
set +e | |
echo "TARGET=$(echo ${{ env.BRANCH }} | grep -Eo '[0-9]+(\.[0-9]+)*')" >> $GITHUB_ENV | |
# Check whether we could parse it or not, use branch or nightly otherwise | |
- if: "${{ env.TARGET == '' }}" | |
run: echo "TARGET=${{ (env.BRANCH == 'master' && 'nightly') || env.BRANCH }}" >> $GITHUB_ENV | |
- run: echo "WEBDIR=${{ (env.TARGET == 'nightly' && 'dev') || '.' }}" >> $GITHUB_ENV | |
- id: propagate_vars | |
run: | | |
echo "branch=${{ env.BRANCH }}" >> $GITHUB_OUTPUT | |
echo "target=${{ env.TARGET }}" >> $GITHUB_OUTPUT | |
echo "webdir=${{ env.WEBDIR }}" >> $GITHUB_OUTPUT | |
collect_binaries: | |
needs: [set_vars] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu] | |
workflow: [javascript_builder.yml, library_shared.yml, windows_installer.yml, docs_docker-run.yml, libreoffice_builder.yml] # , mathcad_builder.yml, python_buildwheels.yml] | |
uses: ./.github/workflows/release_get_artifact.yml | |
with: | |
branch: ${{ needs.set_vars.outputs.branch }} | |
workflow: ${{ matrix.workflow }} | |
prepare_mathcad: | |
needs: [set_vars] | |
# Call the mathcad_builder workflow here direclty | |
# Doesn't work through the matrix calls to release_get_artifact above and no output results for troubleshooting. | |
uses: ./.github/workflows/mathcad_builder.yml | |
# Stores artifact under binaries-MathcadPrime consistent with the other builds | |
secrets: inherit | |
prepare_sources: | |
needs: [set_vars] | |
name: Prepare the source code | |
runs-on: ubuntu-latest | |
steps: | |
- name: Fetch the sources | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ needs.set_vars.outputs.branch }} | |
submodules: 'recursive' | |
path: source | |
- name: Update the headers | |
run: | | |
pushd source | |
git reset --hard HEAD | |
python "dev/generate_headers.py" | |
find . -iwholename "*/.git*" -prune -exec rm -rf {} \; | |
popd | |
zip -rq CoolProp_sources.zip source | |
mkdir -p binaries/source | |
mv CoolProp_sources.zip binaries/source/ | |
- name: Store artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: binaries-source | |
path: binaries | |
retention-days: 1 | |
deploy_files: | |
needs: [set_vars, collect_binaries, prepare_mathcad, prepare_sources] | |
name: Deploy collected files | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download binaries | |
uses: actions/download-artifact@v4 | |
with: | |
# Get all unique artifacts starting with "binaries-" per the pattern | |
# per requirements of actions/download-artifact@v4 | |
pattern: binaries-* | |
# Allow multiple artifacts matching the patter to be merged | |
# into the same binaries directory. | |
merge-multiple: true | |
path: binaries | |
- name: Create info files | |
run: | | |
echo "CoolProp ${{ needs.set_vars.outputs.target }} binaries" > binaries/README.rst.txt | |
echo "-------------------------" >> binaries/README.rst.txt | |
echo -n "Binaries of the \`CoolProp project <http://coolprop.sourceforge.net>\`_ " >> binaries/README.rst.txt | |
echo "updated on $(date +%F) at $(date +%X) $(date +%Z)." >> binaries/README.rst.txt | |
cat binaries/README.rst.txt | |
mkdir -p binaries/Python | |
echo "Please use the following commands to install CoolProp for Python:" > binaries/Python/README.txt | |
echo "nightly: python -m pip install -i https://test.pypi.org/simple/ CoolProp" >> binaries/Python/README.txt | |
echo "release: python -m pip install --upgrade CoolProp" >> binaries/Python/README.txt | |
cat binaries/Python/README.txt | |
- name: Display structure of downloaded files | |
run: | | |
set -x | |
ls -R | |
du -sh | |
- name: Install SSH key | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
key: ${{ secrets.SF_SSH_KEY }} | |
name: id_rsa-${{ secrets.SF_SSH_USER }} | |
known_hosts: ${{ secrets.SF_HOST_KEYS }} | |
config: | | |
Host frs.sf.net-${{ secrets.SF_SSH_USER }} | |
HostName frs.sf.net | |
User ${{ secrets.SF_SSH_USER }} | |
IdentityFile ~/.ssh/id_rsa-${{ secrets.SF_SSH_USER }} | |
PubkeyAcceptedKeyTypes +ssh-rsa | |
if_key_exists: fail # replace / ignore / fail; optional (defaults to fail) | |
- name: Fix the docs | |
run: | | |
rm -rf binaries/github-pages | |
tar -xzf binaries/docs/*documentation*.tar.gz | |
mkdir -p html/v4 | |
rsync frs.sf.net-${{ secrets.SF_SSH_USER }}:/home/frs/project/coolprop/CoolProp/4.2.5/coolpropv425docs.zip coolpropv4docs.zip | |
unzip -qo coolpropv4docs.zip -d html/v4 | |
zip -rq documentation.zip html | |
rm -rf binaries/docs/* | |
mv documentation.zip binaries/docs/ | |
- name: Upload using rsync over SSH | |
run: | | |
RSYNC_DRY_RUN= | |
RSYNC_OPTS="-a --chmod=Dug=rwx,Do=rx,Fug=rw,Fo=r -z --stats --delete" | |
rsync $RSYNC_DRY_RUN $RSYNC_OPTS "binaries/" frs.sf.net-${{ secrets.SF_SSH_USER }}:/home/frs/project/coolprop/CoolProp/${{ needs.set_vars.outputs.target }} | |
rsync $RSYNC_DRY_RUN $RSYNC_OPTS "html/" frs.sf.net-${{ secrets.SF_SSH_USER }}:/home/project-web/coolprop/htdocs/${{ needs.set_vars.outputs.webdir }} |