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: "Build & publish - PROD" | |
on: | |
release: | |
types: [released] | |
jobs: | |
run-tests: | |
name: "Run tests job" | |
uses: ./.github/workflows/_tests.yml | |
secrets: inherit | |
build-n-publish: | |
name: Build and publish Python 🐍 distributions 📦 to PyPI | |
needs: [run-tests] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.12 | |
- uses: pdm-project/setup-pdm@v3 | |
name: Setup PDM | |
with: | |
python-version: 3.12 | |
architecture: x64 | |
enable-pep582: true | |
cache: true | |
cache-dependency-path: "**/pdm.lock" | |
- name: Publish distribution 📦 to PyPI | |
run: pdm publish --repository pypi --username __token__ --password ${{ secrets.PYPI_API_TOKEN }} --verbose | |
generate-docs: | |
name: Generate latest library 📚 documentation 📄 | |
needs: [run-tests] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
pages: write | |
id-token: write | |
env: | |
MKDOCS_EXECUTE_JUPYTER: false # execution is done before rendering documentation | |
MKDOCS_DEV: false | |
FORCE_TERMINAL_MODE: true | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
token: ${{ secrets.CICD_PAT_TOKEN }} | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.12" | |
- uses: actions/cache@v3 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-prod-${{ hashFiles('**/pdm.lock') }} | |
restore-keys: | | |
${{ runner.os }}-pip-prod- | |
- name: Install pdm | |
run: pip install pdm | |
- name: Regenerate lock with environment markers | |
run: pdm lock --update-reuse --strategy inherit_metadata | |
- name: Generate requirements.txt | |
run: pdm export --no-default -G docs -G visualization -G cli-dev -f requirements -o requirements.txt | |
- name: Install dependencies | |
run: pip install --no-deps -r requirements.txt | |
- name: Install overturemaestro | |
run: | | |
pdm build -v -d dist | |
pip install 'overturemaestro[cli] @ file://'"$(pwd)/$(find dist -name '*.whl')" --user | |
- name: Configure Git user | |
run: | | |
git config --local user.email "github-actions[bot]@users.noreply.github.com" | |
git config --local user.name "github-actions[bot]" | |
- name: Prepare DuckDB dependency | |
run: | | |
wget https://github.com/duckdb/duckdb/releases/download/v1.1.0/duckdb_cli-linux-amd64.zip | |
unzip duckdb_cli-linux-amd64.zip | |
chmod a+x ./duckdb | |
- name: Test required commands | |
run: | | |
./duckdb :memory: "SELECT 1" | |
OvertureMaestro -h | |
- name: Execute jupyter notebooks | |
run: | | |
mv ./duckdb ./examples/duckdb | |
jupyter nbconvert --to notebook --inplace --execute $(find examples/ -type f -name "*.ipynb") --ExecutePreprocessor.kernel_name='python3' | |
rm ./examples/duckdb | |
- uses: jannekem/run-python-script-action@v1 | |
name: Replace copyright date | |
with: | |
script: | | |
import time | |
file_name = "mkdocs.yml" | |
with open(file_name) as f: | |
data = f.read().replace('{current_year}', time.strftime("%Y")) | |
with open(file_name, "w") as f: | |
f.write(data) | |
- name: Create remote for overturemaestro-docs repository | |
run: git remote add origin-overturemaestro-docs https://github.com/kraina-ai/overturemaestro-docs | |
- name: Fetch gh-pages branch | |
run: git fetch origin-overturemaestro-docs gh-pages --depth=1 | |
- name: Publish latest documentation | |
run: mike deploy --remote origin-overturemaestro-docs --rebase --push --update-aliases ${{github.ref_name}} latest | |
deploy-docs: | |
name: Deploy documentation 📄 to Github Pages 🌐 | |
needs: [generate-docs] | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
pages: write | |
id-token: write | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: 'kraina-ai/overturemaestro-docs' | |
ref: 'gh-pages' | |
token: ${{ secrets.CICD_PAT_TOKEN }} | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
# Upload entire repository | |
path: '.' | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |