Skip to content

Publish Packages

Publish Packages #32

Workflow file for this run

name: Publish Packages
on:
workflow_dispatch:
inputs:
origen_metal_python_package:
description: Publish the Origen Metal python package
default: "false"
origen_python_package:
description: Publish the Origen python package
default: "false"
# build_for_debug_target:
# description: If 'true', does not use the '--release' switch when building Rust libraries
# required: false
# default: "false"
# publish_pypi:
# description: Publish built packages to PyPi
# required: true
# default: false
publish_pypi_test:
description: Publish To PyPI Test Server
required: true
default: "false"
publish_github_release:
description: Publish built packages to Github Release page
required: true
default: "false"
prerelease:
description: Indicate that any release is a pre/dev release
required: true
default: "true"
jobs:
build:
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(vars.SUPPORTED_OS) }}
python-version: ${{ fromJSON(vars.PYTHON_VERSIONS) }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ fromJSON(vars.RUST_VERSION) }}
rustflags:
- name: Override Project Rust Version
run: rustup override set ${{ fromJSON(vars.RUST_VERSION) }}
- name: Check Rust Version
run: |
rustc --version
cargo --version
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Display Python Version
run: python -c "import sys; print(sys.version)"
- name: Install Poetry
run: |
pip install poetry==1.3.2
poetry --version
# Needed to compile keyring library
# Install taken from keyring library:
# https://github.com/hwchen/keyring-rs/blob/v0.10.1/.github/workflows/ci.yaml#L80-L84
- name: install libdbus
run: |
sudo apt update
sudo apt install libdbus-1-dev
if: contains(matrix.os, 'ubuntu')
- name: Build Origen Metal Python Package
working-directory: python/origen_metal
run: poetry build --format wheel
- name: Display Dist Directory
working-directory: python/origen_metal/dist
run: ls
- name: Upload Origen Metal Python Package Artifact
uses: actions/upload-artifact@v3
with:
name: wheels
path: python/origen_metal/dist/origen_metal*
# - name: Build Origen CLI
# working-directory: rust/origen/cli
# run: cargo build --bins --release
# - name: Add Origen to PATH (Linux)
# if: matrix.os == 'ubuntu-latest'
# run: echo "${{ github.workspace }}/rust/origen/target/release" >> $GITHUB_PATH
# - name: Add Origen to PATH (Windows)
# if: matrix.os == 'windows-latest'
# run: echo "${{ github.workspace }}/rust/origen/target/release" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
# - name: Display Origen CLI Version
# run: origen -v
# - name: Build PyAPI
# working-directory: rust/pyapi
# run: cargo build --release
# - name: Setup App Env
# working-directory: python
# run: origen env setup
# - name: Display Origen App Version
# working-directory: python
# run: origen -v
- name: Build Origen Python Package
working-directory: python/origen
run: poetry build --format wheel
- name: Display Dist Directory
working-directory: python/origen/dist
run: ls
- name: Upload Origen Python Package Artifact
uses: actions/upload-artifact@v3
with:
name: wheels
path: python/origen/dist/origen*
# - name: "Publish To PyPi"
# if: ${{ github.event.inputs.publish_pypi }} == true
# working_directory: python
# run: |
# echo "Publishing to PyPi"
# # poetry publish ...
- name: "Publish To PyPi Test Server"
if: ${{ github.event.inputs.publish_pypi_test == 'true' }}
working-directory: python
run: |
echo "Publishing to PyPi Test Server"
poetry config repositories.pypi-test https://test.pypi.org/legacy/
poetry config pypi-token.pypi-test ${{ secrets.PYPI_TEST_SERVER_API_TOKEN }}
poetry publish -r pypi-test
# - name: pypi-publish
# if: ${{ github.event.inputs.publish_pypi_test == 'true' }}
# uses: pypa/gh-action-pypi-publish@v1.4.2
# with:
# packages_dir: python/dist/
# user: __token__
# password: ${{ secrets.PYPI_TEST_SERVER_API_TOKEN }}
# repository_url: https://test.pypi.org/legacy/
# skip_existing: true
# - name: "Publish To Github Releases"
# if: ${{ github.event.inputs.publish_github_release }} == true
# working_directory: python
# run: |
# echo "Publishing to Github Releases"
# # ...
release:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v3
with:
name: wheels
path: wheels
- name: Check wheels directory
run: ls -al ./wheels
- uses: vimtor/action-zip@v1.1
with:
files: wheels
dest: wheels.zip
- name: Figure Out Tag
run: |
echo "tag=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
- name: Display Tag
run: echo commit-${{ env.tag }}
- name: Generate Github Release
if: ${{ github.event.inputs.publish_github_release == 'true' }}
uses: ncipollo/release-action@v1
with:
artifacts: ./wheels.zip
artifactErrorsFailBuild: true
prerelease: ${{ github.event.inputs.prerelease == 'true' }}
commit: ${{ github.sha }}
tag: ${{ env.tag }}