Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 26 additions & 8 deletions .github/workflows/docker-hub-publish.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
name: Publish mdast_cli image to Docker Hub

# Публикация выполняется только по тегу, как и выкладка на PyPI: иначе каждый
# коммит в main перезаписывал образ latest и заново публиковал тот же номер.
on:
push:
branches:
- main
tags:
- '*'

jobs:
tests:
Expand All @@ -25,6 +27,22 @@ jobs:
steps:
- uses: actions/checkout@v7

# Версия образа берётся из тега, а не прописывается в файле руками:
# раньше её приходилось править в двух местах при каждом релизе.
- name: Check tag matches package version
run: |
set -eu
pkg_version="$(sed -n "s/.*version=['\"]\([^'\"]*\).*/\1/p" setup.py | head -1)"
if [ -z "$pkg_version" ]; then
echo "::error::Не удалось определить версию в setup.py"
exit 1
fi
if [ "$GITHUB_REF_NAME" != "$pkg_version" ]; then
echo "::error::Тег $GITHUB_REF_NAME не совпадает с версией в setup.py ($pkg_version)"
exit 1
fi
echo "Тег и версия совпадают: $pkg_version"

- name: docker login
env:
DOCKER_USER: ${{secrets.DOCKER_USER}}
Expand All @@ -33,13 +51,13 @@ jobs:
docker login -u $DOCKER_USER -p $DOCKER_PASSWORD

- name: Build the Docker image
run: >-
docker build . --file Dockerfile
-t mobilesecurity/mdast_cli:${{ github.ref_name }}
-t mobilesecurity/mdast_cli:latest

run: docker build . --file Dockerfile -t mobilesecurity/mdast_cli:2026.8.6 -t mobilesecurity/mdast_cli:latest

- name: Docker Hub push tagged image
run: docker push mobilesecurity/mdast_cli:${{ github.ref_name }}

- name: Docker Hub push latest image
run: docker push mobilesecurity/mdast_cli:latest

- name: Docker Hub push tagged image

run: docker push mobilesecurity/mdast_cli:2026.8.6
41 changes: 24 additions & 17 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
name: Publish mdast_cli 🐍 distributions to PyPI

on:
push:
branches:
- main
# Публикация выполняется только по тегу. Раньше workflow запускался на каждый
# push в main, из-за чего любой нерелизный коммит пересобирал уже выложенную
# версию и падал с "400 File already exists".
on:
push:
tags:
- '*'

jobs:
tests:
Expand All @@ -29,17 +32,22 @@ jobs:
with:
python-version: '3.12'

# - name: Linter flake8
# uses: py-actions/flake8@v2.2.1
# with:
# exclude: "build,dist,check_mdast_cli,googleplay_pb2.py"
# max-line-length: "120"
#
# - name: Linter isort
# uses: isort/isort-action@v1.1.0
# with:
# configuration: "--skip ./docker --skip ./venv --skip ./check_mdast_cli --line-length 120 --check-only"
# requirements-files: "requirements.txt"
# Тег задаёт имя релиза, а версию пакета определяет setup.py. Разъехавшись,
# они выложат под тегом дистрибутив с другим номером, и откатить это на PyPI
# уже нельзя - файлы неизменяемы.
- name: Check tag matches package version
run: |
set -eu
pkg_version="$(sed -n "s/.*version=['\"]\([^'\"]*\).*/\1/p" setup.py | head -1)"
if [ -z "$pkg_version" ]; then
echo "::error::Не удалось определить версию в setup.py"
exit 1
fi
if [ "$GITHUB_REF_NAME" != "$pkg_version" ]; then
echo "::error::Тег $GITHUB_REF_NAME не совпадает с версией в setup.py ($pkg_version)"
exit 1
fi
echo "Тег и версия совпадают: $pkg_version"

- name: Install pypa/build
run: >-
Expand All @@ -65,8 +73,7 @@ jobs:
repository-url: https://test.pypi.org/legacy/

- name: Publish distribution 📦 to PyPI
if: github.event_name == 'push'
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_CLI_TOKEN }}
password: ${{ secrets.PYPI_API_CLI_TOKEN }}