chore(release): 1.9.3 #18
Workflow file for this run
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_github | |
on: | |
workflow_dispatch: | |
inputs: | |
release: | |
description: 'Release after build' | |
required: true | |
default: 'no' | |
push: | |
tags: | |
- "[0-9]+.[0-9]+.[0-9]+" | |
env: | |
BUILD_PYTHON_VERSION: 3.8 | |
BUILD_POETRY_VERSION: 1.6.1 | |
PACKAGE_NAME: evernote-backup | |
MODULE_NAME: evernote_backup | |
jobs: | |
build_python: | |
runs-on: ubuntu-latest | |
env: | |
POETRY_VIRTUALENVS_CREATE: false | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Set up Python ${{ env.BUILD_PYTHON_VERSION }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.BUILD_PYTHON_VERSION }} | |
- name: Set up Poetry ${{ env.BUILD_POETRY_VERSION }} | |
uses: abatilo/actions-poetry@v2 | |
with: | |
poetry-version: ${{ env.BUILD_POETRY_VERSION }} | |
- name: Export requirements | |
run: poetry export --without-hashes -f requirements.txt --output requirements.txt | |
- name: Build project for distribution | |
run: poetry build | |
- name: Save release python requirements | |
uses: actions/upload-artifact@v3 | |
with: | |
name: release_dist_reqs | |
path: requirements.txt | |
- name: Save release python packages | |
uses: actions/upload-artifact@v3 | |
with: | |
name: release_dist_python | |
path: dist | |
build_binaries: | |
needs: build_python | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- os: macos-latest | |
OS_CODE: macos | |
- os: ubuntu-latest | |
OS_CODE: linux | |
- os: windows-latest | |
OS_CODE: win | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get version | |
if: matrix.os == 'macos-latest' | |
shell: bash | |
run: | | |
APP_VERSION=$(perl -n -e'/^__version__ = "([^"]+)"$/ && print $1' ${{ env.MODULE_NAME }}/version.py) | |
echo "APP_VERSION=$APP_VERSION" >> $GITHUB_ENV | |
- name: Get version | |
if: matrix.os != 'macos-latest' | |
shell: bash | |
run: | | |
APP_VERSION=$(sed -n 's/^__version__ = "\([^"]\+\)"$/\1/p' ${{ env.MODULE_NAME }}/version.py) | |
echo "APP_VERSION=$APP_VERSION" >> $GITHUB_ENV | |
- name: Load release python requirements | |
uses: actions/download-artifact@v3 | |
with: | |
name: release_dist_reqs | |
- name: Set up Python ${{ env.BUILD_PYTHON_VERSION }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.BUILD_PYTHON_VERSION }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pyinstaller | |
pip install -r requirements.txt | |
- name: Build with pyinstaller | |
run: pyinstaller ${{ env.PACKAGE_NAME }}.spec | |
- name: Make directory for bins | |
run: mkdir dist_bin | |
- name: Pack up binary for macos | |
if: matrix.os == 'macos-latest' | |
run: zip -q -j dist_bin/bin_${{ env.MODULE_NAME }}_${{ env.APP_VERSION }}_${{ matrix.OS_CODE }}_x64.zip ./dist/${{ env.PACKAGE_NAME }} | |
- name: Pack up binary for linux | |
if: matrix.os == 'ubuntu-latest' | |
run: tar -zcvf dist_bin/bin_${{ env.MODULE_NAME }}_${{ env.APP_VERSION }}_${{ matrix.OS_CODE }}_x64.tar.gz -C ./dist ${{ env.PACKAGE_NAME }} | |
- name: Pack up binary for windows | |
if: matrix.os == 'windows-latest' | |
run: | | |
choco install zip | |
zip -q -j dist_bin/bin_${{ env.MODULE_NAME }}_${{ env.APP_VERSION }}_${{ matrix.OS_CODE }}_x64.zip ./dist/${{ env.PACKAGE_NAME }}.exe | |
- name: Save release binaries for ${{ matrix.OS_CODE }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: release_dist_bin_${{ matrix.OS_CODE }} | |
path: dist_bin | |
release: | |
if: github.event_name == 'push' || github.event.inputs.release == 'yes' | |
needs: [build_binaries] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Extract release changelog | |
run: | | |
sed "0,/### \[/d;/### \[/Q" CHANGELOG.md > release_changelog | |
echo -n "**Full Changelog**: " >> release_changelog | |
sed -n 's/### \[.*\](\(.*\)) (.*/\1/p' CHANGELOG.md | head -1 >> release_changelog | |
- name: Get tag version | |
run: | | |
APP_VERSION=$(sed -n 's/^__version__ = "\([^"]\+\)"$/\1/p' ${{ env.MODULE_NAME }}/version.py) | |
echo "TAG_VERSION=v$APP_VERSION" >> $GITHUB_ENV | |
- name: Load release python packages | |
uses: actions/download-artifact@v3 | |
with: | |
name: release_dist_python | |
path: dist | |
- name: Load release binaries for linux | |
uses: actions/download-artifact@v3 | |
with: | |
name: release_dist_bin_linux | |
path: dist | |
- name: Load release binaries for windows | |
uses: actions/download-artifact@v3 | |
with: | |
name: release_dist_bin_win | |
path: dist | |
- name: Load release binaries for macos | |
uses: actions/download-artifact@v3 | |
with: | |
name: release_dist_bin_macos | |
path: dist | |
- name: Create Release | |
uses: ncipollo/release-action@v1 | |
with: | |
bodyFile: release_changelog | |
artifacts: "dist/*" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ env.TAG_VERSION }} | |
draft: true |