[DOCS] Rewrite getting started guide #1350
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: ytld-sub Release | |
on: | |
push: | |
# publish only when pushed to master | |
branches: | |
- master | |
pull_request: | |
env: | |
ACTIONS_STEP_DEBUG: true | |
ACTIONS_RUNNER_DEBUG: true | |
jobs: | |
version: | |
name: version | |
runs-on: ubuntu-latest | |
outputs: | |
pypi_version: ${{ steps.set_outputs.outputs.pypi_version }} | |
local_version: ${{ steps.set_outputs.outputs.local_version }} | |
init_contents: ${{ steps.set_outputs.outputs.init_contents }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: master | |
- name: Set date and commit hash variables | |
run: | | |
echo "DATE=$(date +'%Y.%m.%d')" >> $GITHUB_ENV | |
echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV | |
- name: Count number of commits on master on day, minus 1 to account for post-push | |
run: | | |
echo "DATE_COMMIT_COUNT=$(($(git rev-list --count master --since='${{ env.DATE }} 00:00:00')-1))" >> $GITHUB_ENV | |
- name: Set pypi and local version values | |
run: | | |
echo "LOCAL_VERSION=${{ env.DATE }}+${{ env.COMMIT_HASH }}" >> $GITHUB_ENV | |
if [ ${{ env.DATE_COMMIT_COUNT }} -le "0" ] | |
then | |
echo "PYPI_VERSION=${{ env.DATE }}" >> $GITHUB_ENV | |
else | |
echo "PYPI_VERSION=${{ env.DATE }}.post${{ env.DATE_COMMIT_COUNT }}" >> $GITHUB_ENV | |
fi | |
- name: Test versions | |
run: | | |
echo "${{ env.PYPI_VERSION }}" | |
echo "${{ env.LOCAL_VERSION }}" | |
- id: set_outputs | |
run: | | |
echo "pypi_version=${{ env.PYPI_VERSION }}" >> "$GITHUB_OUTPUT" | |
echo "local_version=${{ env.LOCAL_VERSION }}" >> "$GITHUB_OUTPUT" | |
echo 'init_contents=__pypi_version__ = "${{ env.PYPI_VERSION }}";__local_version__ = "${{ env.LOCAL_VERSION }}"' >> "$GITHUB_OUTPUT" | |
################################################################################################## | |
build-linux: | |
name: build-linux | |
needs: | |
- version | |
strategy: | |
matrix: | |
arch: [ "aarch64", "x86_64" ] | |
runs-on: ubuntu-latest | |
container: | |
image: quay.io/pypa/manylinux_2_28_x86_64 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Write version to init file | |
run: | | |
echo '${{ needs.version.outputs.init_contents }}' > src/ytdl_sub/__init__.py | |
- name: Install base packages | |
run: | | |
cat /etc/os-release | |
dnf update -y | |
dnf install -y epel-release tar wget make gcc openssl-devel bzip2-devel libffi-devel zlib-devel | |
- name: Install Python | |
run: | | |
wget https://www.python.org/ftp/python/3.10.10/Python-3.10.10.tar.xz | |
tar -xf Python-3.10.10.tar.xz | |
cd Python-3.10.10 && ./configure --with-ensurepip=install --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" | |
make -j 8 | |
make altinstall | |
python3.10 --version | |
python3.10 -m ensurepip --upgrade | |
- name: Build Package | |
run: | | |
python3.10 -m pip install -e . | |
python3.10 -m pip install pyinstaller | |
# Build executable | |
pyinstaller ytdl-sub.spec | |
mkdir -p /opt/builds | |
chmod ugo+rwx dist/ytdl-sub | |
dist/ytdl-sub -h | |
mv dist/ytdl-sub /opt/builds/ytdl-sub_${{ matrix.arch }} | |
- name: Upload build | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ytdl-sub_${{ matrix.arch }} | |
path: /opt/builds/ytdl-sub_${{ matrix.arch }} | |
################################################################################################## | |
build-windows: | |
name: build-windows | |
needs: | |
- version | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Write version to init file | |
run: | | |
echo '${{ needs.version.outputs.init_contents }}'> src/ytdl_sub/__init__.py | |
- name: Build Package | |
run: | | |
python -m pip install -e . | |
python -m pip install pyinstaller | |
pyinstaller ytdl-sub.spec | |
.\dist\ytdl-sub.exe -h | |
- name: Upload build | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ytdl-sub_exe | |
path: .\dist\ytdl-sub.exe | |
################################################################################################## | |
github-release: | |
name: github-release | |
needs: | |
- version | |
- build-linux | |
- build-windows | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Write version to init file | |
run: | | |
echo '${{ needs.version.outputs.init_contents }}' > src/ytdl_sub/__init__.py | |
- name: Restore exe build | |
uses: actions/download-artifact@v3 | |
with: | |
name: ytdl-sub_exe | |
path: /opt/builds | |
- name: Restore aarch64 build | |
uses: actions/download-artifact@v3 | |
with: | |
name: ytdl-sub_aarch64 | |
path: /opt/builds | |
- name: Restore x86_64 build | |
uses: actions/download-artifact@v3 | |
with: | |
name: ytdl-sub_x86_64 | |
path: /opt/builds | |
- name: Rename x86_64 build | |
run: | | |
mv /opt/builds/ytdl-sub_x86_64 /opt/builds/ytdl-sub | |
- name: Inspect build directory, rename x86_64 build | |
run: | | |
ls -lh /opt/builds | |
- name: Create Release | |
if: ${{ | |
github.ref == 'refs/heads/master' | |
&& !contains(github.event.head_commit.message, '[DEV]') | |
&& !contains(github.event.head_commit.message, '[DOCS]') | |
}} | |
id: create_release | |
uses: softprops/action-gh-release@v1 | |
with: | |
name: ytdl-sub ${{ needs.version.outputs.pypi_version }} | |
tag_name: ${{ needs.version.outputs.pypi_version }} | |
body: ${{ github.event.head_commit.message }} | |
draft: false | |
prerelease: false | |
files: | | |
/opt/builds/ytdl-sub | |
/opt/builds/ytdl-sub_aarch64 | |
/opt/builds/ytdl-sub.exe | |
pypi-publish: | |
name: pypi-publish | |
needs: | |
- version | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Write version to init file | |
run: | | |
echo '${{ needs.version.outputs.init_contents }}' > src/ytdl_sub/__init__.py | |
- name: Build wheel | |
run: | | |
# Build wheel | |
pip install -e . | |
pip install build | |
python3 -m build | |
- name: Publish distribution 📦 to PyPI | |
if: ${{ | |
github.ref == 'refs/heads/master' | |
&& !contains(github.event.head_commit.message, '[DEV]') | |
&& !contains(github.event.head_commit.message, '[DOCS]') | |
}} | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
password: ${{ secrets.PYPI_API_TOKEN }} |