name: Create Release concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: workflow_dispatch: push: branches: - main paths-ignore: - '**/*.md' permissions: contents: write pull-requests: write actions: read pages: write id-token: write env: APP_NAME: pyTermTk jobs: release-please: # runs-on: ubuntu-latest runs-on: self-hosted outputs: rp_out: ${{ toJson(steps.release-please.outputs) }} steps: - uses: actions/checkout@v4 with: ref: ${{ github.sha }} - name: Trust git directory run: git config --global --add safe.directory $GITHUB_WORKSPACE - uses: googleapis/release-please-action@v4 timeout-minutes: 15 id: release-please with: token: ${{ secrets.GH_PAT_TOKEN }} config-file: .release-please-config.json manifest-file: .release-please-manifest.json - name: Print outputs shell: bash env: OUTPUTS: ${{ toJSON(steps.release-please.outputs) }} run: | echo OUTPUTS: "$OUTPUTS" - name: Update Version if: ${{ steps.release-please.outputs.prs_created == 'true'}} shell: bash env: GITHUB_TOKEN: ${{ secrets.GH_PAT_TOKEN }} run: | echo '::group::Setup Git' git config --global user.name 'Eugenio Parodi - Action' git config --global user.email 'ceccopierangioliegenio@googlemail.com' git clone \ -b ${{ fromJson(steps.release-please.outputs.pr).headBranchName }} \ https://${GITHUB_TOKEN}@github.com/ceccopierangiolieugenio/pyTermTk.git \ pyTermTk.new echo '::endgroup::' cd pyTermTk.new echo '::group::Retrieve the Versions' # Update version in the project _VERSION_TTK=$(jq -r '.["libs/pyTermTk" ]' .release-please-manifest.json) _VERSION_DPT=$(jq -r '.["apps/dumbPaintTool"]' .release-please-manifest.json) _VERSION_T_D=$(jq -r '.["apps/ttkDesigner" ]' .release-please-manifest.json) _VERSION_KOD=$(jq -r '.["apps/ttkode" ]' .release-please-manifest.json) _NAME_TTK=$(jq -r '.packages["libs/pyTermTk" ]["package-name"]' .release-please-config.json) _NAME_DPT=$(jq -r '.packages["apps/dumbPaintTool"]["package-name"]' .release-please-config.json) _NAME_T_D=$(jq -r '.packages["apps/ttkDesigner" ]["package-name"]' .release-please-config.json) _NAME_KOD=$(jq -r '.packages["apps/ttkode" ]["package-name"]' .release-please-config.json) echo "Version ${_NAME_TTK}: ${_VERSION_TTK}" echo "Version ${_NAME_DPT}: ${_VERSION_DPT}" echo "Version ${_NAME_T_D}: ${_VERSION_T_D}" echo "Version ${_NAME_KOD}: ${_VERSION_KOD}" echo '::endgroup::' echo '::group::Update the Versions' sed -i \ "s|__version__:str.*|__version__:str = '${_VERSION_TTK}'|" \ libs/pyTermTk/TermTk/__init__.py if grep -q "${_NAME_DPT}: ${_VERSION_DPT}" <<< ' ${{ steps.release-please.outputs.pr }}' ; then sed -i \ "s|__version__:str.*|__version__:str = '${_VERSION_T_D}'|" \ apps/ttkDesigner/ttkDesigner/__init__.py sed "s|'pyTermTk *>=[^']*'|'pyTermTk>=${_VERSION_TTK}'|" -i apps/dumbPaintTool/pyproject.toml fi if grep -q "${_NAME_T_D}: ${_VERSION_T_D}" <<< ' ${{ steps.release-please.outputs.pr }}' ; then sed -i \ "s|__version__:str.*|__version__:str = '${_VERSION_DPT}'|" \ apps/dumbPaintTool/dumbPaintTool/__init__.py sed "s|'pyTermTk *>=[^']*'|'pyTermTk>=${_VERSION_TTK}'|" -i apps/ttkDesigner/pyproject.toml fi if grep -q "${_NAME_KOD}: ${_VERSION_KOD}" <<< ' ${{ steps.release-please.outputs.pr }}' ; then sed -i \ "s|__version__:str.*|__version__:str = '${_VERSION_KOD}'|" \ apps/ttkode/ttkode/__init__.py sed "s|'pyTermTk *>=[^']*'|'pyTermTk>=${_VERSION_TTK}'|" -i apps/ttkode/pyproject.toml fi cp libs/pyTermTk/CHANGELOG.md CHANGELOG.md echo '::endgroup::' echo '::group::Push the Versions' git add \ apps/*/*/__init__.py \ libs/pyTermTk/TermTk/__init__.py \ CHANGELOG.md find . -name pyproject.toml | xargs git add if [[ $(git status --porcelain) ]] ; then git commit -m "chore: updated TermTk and apps to versions to ${_VERSION_TTK}, ${_VERSION_DPT}, ${_VERSION_T_D} ${_VERSION_KOD}" git push fi echo '::endgroup::' pyTermTk-deploy-artifacts: if: ${{ fromJson(needs.release-please.outputs.rp_out)['libs/pyTermTk--release_created'] }} # runs-on: ubuntu-latest runs-on: self-hosted name: Deploy pyTermTk to github release needs: release-please steps: - uses: actions/checkout@v4 with: ref: ${{ github.sha }} - name: Create Artifacts id: create-artifacts shell: bash run: | # _TMP=$(mktmp) _TMP=tmp echo "artifacts_dir=${_TMP}" >> $GITHUB_OUTPUT mkdir -p ${_TMP} find libs/pyTermTk/TermTk -name "*.py" | sed 's,libs/pyTermTk/,,' | sort | xargs tar cvzf ${_TMP}/TermTk.tgz -C libs/pyTermTk find tutorial -name '*.py' -o -name '*.json' | sort | xargs tar cvzf ${_TMP}/tutorial.tgz find \ demo/paint.py \ demo/ttkode.py \ demo/demo.py \ demo/showcase/*.* | sort | xargs tar cvzf ${_TMP}/demo.tgz find \ tests/ansi.images.json \ tests/t.ui/*.* | sort | xargs tar cvzf ${_TMP}/tests.tgz - name: Upload artifatcs to Release shell: bash env: GITHUB_TOKEN: ${{ secrets.GH_PAT_TOKEN }} TAG_NAME: ${{ fromJson(needs.release-please.outputs.rp_out)['libs/pyTermTk--tag_name'] }} run: | _TMP=${{ steps.create-artifacts.outputs.artifacts_dir }} gh release upload ${TAG_NAME} ${_TMP}/TermTk.tgz gh release upload ${TAG_NAME} ${_TMP}/tutorial.tgz gh release upload ${TAG_NAME} ${_TMP}/tests.tgz gh release upload ${TAG_NAME} ${_TMP}/demo.tgz rm -rf ${_TMP} pyTermTk-deploy-sandbox: name: Deploy pyTermTk Sandbox uses: ./.github/workflows/release-sandbox.yml needs: release-please secrets: inherit pyTermTk-deploy-sandbox-bin: if: ${{ fromJson(needs.release-please.outputs.rp_out)['libs/pyTermTk--release_created'] }} name: Deploy pyTermTk Sandbox Binaries uses: ./.github/workflows/release-sandbox-bin.yml needs: - release-please - pyTermTk-deploy-artifacts secrets: inherit pyTermTk-deploy-docs: if: ${{ fromJson(needs.release-please.outputs.rp_out)['libs/pyTermTk--release_created'] }} name: Deploy pyTermTk Docs uses: ./.github/workflows/release-doc.yml needs: - release-please - pyTermTk-deploy-artifacts secrets: inherit publish-pyTermTk: if: ${{ fromJson(needs.release-please.outputs.rp_out)['libs/pyTermTk--release_created'] }} name: Publish pyTermTk uses: ./.github/workflows/python-publish.yml with: pkg_name: pyTermTk pkg_folder: libs/pyTermTk needs: - release-please secrets: inherit publish-ttkDesigner: if: ${{ fromJson(needs.release-please.outputs.rp_out)['apps/ttkDesigner--release_created'] }} name: Publish ttkDesigner uses: ./.github/workflows/python-publish.yml with: pkg_name: ttkDesigner pkg_folder: apps/ttkDesigner needs: - release-please secrets: inherit publish-dumbPaintTool: if: ${{ fromJson(needs.release-please.outputs.rp_out)['apps/dumbPaintTool--release_created'] }} name: Publish dumbPaintTool uses: ./.github/workflows/python-publish.yml with: pkg_name: dumbPaintTool pkg_folder: apps/dumbPaintTool needs: - release-please secrets: inherit publish-dumbPaintTool-itch: if: ${{ fromJson(needs.release-please.outputs.rp_out)['apps/dumbPaintTool--release_created'] }} name: Publish dumbPaintTool on itch.io uses: ./.github/workflows/itch-publish.yml with: pkg_name: dumb-paint-tool needs: - release-please secrets: inherit publish-ttkode: if: ${{ fromJson(needs.release-please.outputs.rp_out)['apps/ttkode--release_created'] }} name: Publish ttkode uses: ./.github/workflows/python-publish.yml with: pkg_name: ttkode pkg_folder: apps/ttkode needs: - release-please secrets: inherit