Skip to content

chore(release): 0.3.0 #42

chore(release): 0.3.0

chore(release): 0.3.0 #42

Workflow file for this run

name: release_github
on:
workflow_dispatch:
inputs:
release:
description: 'Release after build'
required: true
default: 'no'
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
env:
BUILD_PYTHON_VERSION: 3.8
BUILD_POETRY_VERSION: 1.6.1
PACKAGE_NAME: enex2notion
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.PACKAGE_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.PACKAGE_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.PACKAGE_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.PACKAGE_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.PACKAGE_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.PACKAGE_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