You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
197 lines
6.6 KiB
197 lines
6.6 KiB
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 '.["libs/pyTermTk"]' .release-please-manifest.json) |
|
_VERSION_DPT=$(jq '.["apps/dumbPaintTool"]' .release-please-manifest.json) |
|
_VERSION_T_D=$(jq '.["apps/ttkDesigner"]' .release-please-manifest.json) |
|
echo "Version TermTk: ${_VERSION_TTK}" |
|
echo "Version dumbPaintTool: ${_VERSION_DPT}" |
|
echo "Version ttkDesigner: ${_VERSION_T_D}" |
|
echo '::endgroup::' |
|
|
|
echo '::group::Update the Versions' |
|
sed -i \ |
|
"s|__version__:str.*|__version__:str = ${_VERSION_TTK}|" \ |
|
libs/pyTermTk/TermTk/__init__.py |
|
sed -i \ |
|
"s|__version__:str.*|__version__:str = ${_VERSION_DPT}|" \ |
|
apps/dumbPaintTool/dumbPaintTool/__init__.py |
|
sed -i \ |
|
"s|__version__:str.*|__version__:str = ${_VERSION_T_D}|" \ |
|
apps/ttkDesigner/ttkDesigner/__init__.py |
|
|
|
# Update required version in any pyproject.toml |
|
# that depend on pyTermTk |
|
find . -name pyproject.toml | |
|
xargs sed -i \ |
|
"s|'pyTermTk >= [^']*'|'pyTermTk >= ${_VERSION_TTK}'|" |
|
cp libs/pyTermTk/CHANGELOG.md CHANGELOG.md |
|
echo '::endgroup::' |
|
|
|
echo '::group::Push the Versions' |
|
git add \ |
|
libs/pyTermTk/TermTk/TTkCore/cfg.py \ |
|
apps/dumbPaintTool/dumbPaintTool/__init__.py \ |
|
apps/ttkDesigner/ttkDesigner/__init__.py \ |
|
libs/pyTermTk/TermTk/__init__.py \ |
|
CHANGELOG.md |
|
find . -name pyproject.toml | |
|
xargs git add |
|
|
|
git commit -m "chore: updated TermTk and apps to versions to ${_VERSION_TTK}, ${_VERSION_DPT}, ${_VERSION_T_D}" |
|
git push |
|
echo '::endgroup::' |
|
|
|
pyTermTk-deploy-artifacts: |
|
if: ${{ fromJson(needs.release-please.outputs.rp_out)['libs/TermTk--release_created'] }} |
|
runs-on: ubuntu-latest |
|
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_OUTPUTS |
|
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)['TermTk--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/TermTk--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/TermTk--release_created'] }} |
|
name: Deploy pyTermTk Docs |
|
uses: ./.github/workflows/release_doc.yml |
|
needs: |
|
- release-please |
|
- pyTermTk-deploy-artifacts |
|
secrets: inherit |
|
|
|
pyTermTk-publish: |
|
if: ${{ fromJson(needs.release-please.outputs.rp_out)['libs/TermTk--release_created'] }} |
|
name: Publish pyTermTk |
|
uses: ./.github/workflows/python-publish.yml |
|
with: |
|
pkg_folder: libs/pyTermTk |
|
pkg_name: pyTermTk |
|
needs: |
|
- release-please |
|
secrets: inherit |
|
|
|
# pyTermTk-deploy-build: |
|
# if: ${{ fromJson(needs.release-please.outputs.rp_out)['libs/TermTk--release_created'] }} |
|
# name: Deploy pyTermTk to pypi |
|
# shell: bash |
|
# run: | |
|
# gh release upload ${TAG_NAME} tmp/TermTk.tgz
|
|
|