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.
 
 
 
 
 

309 lines
10 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
APP_TTK: libs/pyTermTk
jobs:
release-please:
# runs-on: ubuntu-latest
runs-on: self-hosted
outputs:
rp_out: ${{ toJson(steps.release-please.outputs) }}
matrix: ${{ steps.set-matrix.outputs.matrix }}
matrix-pypi: ${{ steps.set-matrix.outputs.matrix_pypi }}
matrix-itch: ${{ steps.set-matrix.outputs.matrix_itch }}
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: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Update Version
if: ${{ steps.release-please.outputs.prs_created == 'true'}}
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GH_PAT_TOKEN }}
RP_OUT: ${{ toJson(steps.release-please.outputs) }}
run: |
_get_name(){
_ITEM=$1
jq -r ".packages[\"${_ITEM}\"][\"package-name\"]" .release-please-config.json
}
_get_version(){
_ITEM=$1
jq -r ".[\"${_ITEM}\"]" .release-please-manifest.json
}
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::🍧 Print the Versions'
release-helper \
--config .release-please-config.json \
--manifest .release-please-manifest.json \
info <<< '{}'
echo '::endgroup::'
echo '::group::🍓 Update the Versions'
_VERSION_TTK=$(_get_name ${APP_TTK})
sed -i \
"s|__version__:str.*|__version__:str = '${_VERSION_TTK}'|" \
libs/pyTermTk/TermTk/__init__.py
release-helper \
--config .release-please-config.json \
--manifest .release-please-manifest.json \
upgrade <<< ${RP_OUT}
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"
git push
fi
echo '::endgroup::'
- name: Define the Matrix strategy
id: set-matrix
env:
RP_OUT: ${{ toJson(steps.release-please.outputs) }}
run: |
echo "matrix<<_EOF" >> $GITHUB_OUTPUT
release-helper \
--config .release-please-config.json \
--manifest .release-please-manifest.json \
matrix all <<< ${RP_OUT} >> $GITHUB_OUTPUT
echo "_EOF" >> $GITHUB_OUTPUT
echo "matrix_itch<<_EOF" >> $GITHUB_OUTPUT
release-helper \
--config .release-please-config.json \
--manifest .release-please-manifest.json \
matrix itch <<< ${RP_OUT} >> $GITHUB_OUTPUT
echo "_EOF" >> $GITHUB_OUTPUT
echo "matrix_pypi<<_EOF" >> $GITHUB_OUTPUT
release-helper \
--config .release-please-config.json \
--manifest .release-please-manifest.json \
matrix pypi <<< ${RP_OUT} >> $GITHUB_OUTPUT
echo "_EOF" >> $GITHUB_OUTPUT
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-pypi:
if: ${{ needs.release-please.outputs.matrix-pypi != '[]' }}
name: Publish pypi ${{ matrix.name }}
needs:
- release-please
strategy:
matrix:
include: ${{ fromJson(needs.release-please.outputs.matrix-pypi) }}
uses: ./.github/workflows/python-publish.yml
with:
pkg_name: ${{ matrix.name }}
pkg_folder: ${{ matrix.path }}
secrets: inherit
# publish-itch:
# name: Publish Itch ${{ matrix.name }}
# needs:
# - release-please
# - generate-matrix
# runs-on: self-hosted
# strategy:
# matrix:
# include: ${{ fromJson(needs.generate-matrix.outputs.matrix-itch) }}
# steps:
# - name: Build ${{ matrix.name }}
# run: |
# echo "Building ${{ matrix.name }} at path: ${{ matrix.path }}"
# uses: ./.github/workflows/itch-publish.yml
# with:
# pkg_name: dumb-paint-tool
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
notify:
if: ${{ needs.release-please.outputs.matrix != '[]' }}
name: Notify ${{ matrix.name }} to the socials
needs:
- release-please
runs-on: self-hosted
strategy:
matrix:
include: ${{ fromJson(needs.release-please.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
shell: bash
run:
pip install -e 'tools/ci[social]'
- name: Notify ${{ matrix.name }} on Discord
env:
RN: ${{ matrix.release-notes }}
MESSAGE: ${{ matrix.release-notes }}
DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }}
run: |
notify-discord ${{ matrix.name }} v${{ matrix.version }}
- name: Notify ${{ matrix.name }} on Github Discussion
env:
RN: ${{ matrix.release-notes }}
MESSAGE: ${{ matrix.release-notes }}
GITHUB_TOKEN: ${{ secrets.GH_PAT_TOKEN }}
GH_DISCUSSION_TOKEN: ${{ secrets.GH_DISCUSSION_TOKEN }}
run: |
notify-gh-discussion ${{ matrix.name }} v${{ matrix.version }}
- name: Notify ${{ matrix.name }} on Bluesky
env:
BLUESKY_APP_PWD: ${{ secrets.BLUESKY_APP_PWD }}
BLUESKY_APP_IDENTIFIER: ${{ secrets.BLUESKY_APP_IDENTIFIER }}
run: |
notify-bluesky ${{ matrix.name }} v${{ matrix.version }}
- name: Notify ${{ matrix.name }} on Twitter
env:
X_API_KEY: ${{ secrets.X_API_KEY }}
X_API_SECRET: ${{ secrets.X_API_SECRET }}
X_ACCESS_TOKEN: ${{ secrets.X_ACCESS_TOKEN }}
X_ACCESS_TOKEN_SECRET: ${{ secrets.X_ACCESS_TOKEN_SECRET }}
run: |
notify-twitter ${{ matrix.name }} ${{ matrix.version }}