Skip to content

Update _build.py

Update _build.py #359

Workflow file for this run

name: pyRevitCI
on:
# when PRs from forked repos are merged
push:
branches:
- develop
# when PR from develop->master is created
pull_request:
branches:
- master
# manual run
workflow_dispatch:
env:
ReleaseBranch: "master"
jobs:
build:
runs-on: windows-latest
steps:
- name: Report Context
run: |
echo "run: ${{ github.run_number }}"
echo "job: ${{ github.job }}"
echo "event_name: ${{ github.event_name }}"
echo "event_path: ${{ github.event_path }}"
echo "repository: ${{ github.repository }}"
echo "ref: ${{ github.ref }}"
echo "head_ref: ${{ github.head_ref }}"
echo "base_ref: ${{ github.base_ref }}"
echo "commit: ${{ github.sha }}"
- name: Checkout Repository
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
- name: Checkout Submodules
uses: snickerbockers/submodules-init@7ce9774442c0c2d4728e6d3f66141df2102e4cbc
- name: Prepare Python 3.10
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Prepare pipenv
run: |
pip install pipenv
pipenv install
- name: Prepare msbuild
uses: microsoft/setup-msbuild@v1.1
- name: Prepare git
uses: fregante/setup-git-user@v1
- name: Check Build Environment
run: pipenv run pyrevit check
- name: Update Copyright Info
run: |
pipenv run pyrevit set year
- name: Update Certificate
env:
CERTIFICATE: ${{ secrets.CERTIFICATE }}
CERTIFICATEPASSWORD: ${{ secrets.PASSWORD }}
CERTIFICATESHA1: "${{ secrets.CERTIFICATESHA1 }}"
CERTIFICATENAME: "${{ secrets.CERTIFICATENAME }}"
run: |
pipenv run pyrevit sign addcert
# WIP only
- name: Update Build Info (WIP)
if: (github.base_ref != env.ReleaseBranch)
run: |
pipenv run pyrevit set build wip
# RELEASE only
- name: Update Build Info (Release)
if: (github.base_ref == env.ReleaseBranch)
run: |
pipenv run pyrevit set build release
- name: Publish Build Info
run: |
pipenv run pyrevit set products
- name: Build Products
run: |
pipenv run pyrevit build products
- name: Get Build Version
id: buildversion
uses: juliangruber/read-file-action@v1
with:
path: pyrevitlib/pyrevit/version
- name: Get Install Version
id: installversion
uses: juliangruber/read-file-action@v1
with:
path: release/version
- name: Sign Products
env:
CERTIFICATE: ${{ secrets.CERTIFICATE }}
CERTIFICATEPASSWORD: ${{ secrets.PASSWORD }}
CERTIFICATESHA1: "${{ secrets.CERTIFICATESHA1 }}"
CERTIFICATENAME: "${{ secrets.CERTIFICATENAME }}"
run: |
pipenv run pyrevit sign products
- name: Build Installers
run: |
pipenv run pyrevit build installers
- name: Sign Installers
env:
CERTIFICATE: ${{ secrets.CERTIFICATE }}
CERTIFICATEPASSWORD: ${{ secrets.PASSWORD }}
CERTIFICATESHA1: "${{ secrets.CERTIFICATESHA1 }}"
CERTIFICATENAME: "${{ secrets.CERTIFICATENAME }}"
run: |
pipenv run pyrevit sign installers
# default retention period is 90 days
# https://github.com/marketplace/actions/upload-a-build-artifact#retention-period
- name: Upload Installers
uses: actions/upload-artifact@v3
with:
name: pyrevit-installers
path: |
dist/pyRevit_${{ steps.installversion.outputs.content }}_signed.exe
dist/pyRevit_${{ steps.installversion.outputs.content }}_admin_signed.exe
dist/pyRevit_CLI_${{ steps.installversion.outputs.content }}_signed.exe
dist/pyRevit_CLI_${{ steps.installversion.outputs.content }}_admin_signed.exe
dist/pyRevit_CLI_${{ steps.installversion.outputs.content }}_admin_signed.msi
dist/pyrevit-cli.${{ steps.installversion.outputs.content }}.nupkg
- name: Generate Release Notes (Release)
if: (github.base_ref == env.ReleaseBranch)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pipenv run pyrevit report releasenotes > release_notes.md
- name: Commit & Tag Changes (Release)
if: (github.base_ref == env.ReleaseBranch)
# configure git and commit changes
run: |
pipenv run pyrevit build commit
git push
git push --tags
- name: Publish Release (Release)
id: publish_release
if: (github.base_ref == env.ReleaseBranch)
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.buildversion.outputs.content }}
name: pyRevit v${{ steps.installversion.outputs.content }}
body_path: release_notes.md
draft: true
prerelease: false
files: |
dist/pyRevit_${{ steps.installversion.outputs.content }}_signed.exe
dist/pyRevit_${{ steps.installversion.outputs.content }}_admin_signed.exe
dist/pyRevit_CLI_${{ steps.installversion.outputs.content }}_signed.exe
dist/pyRevit_CLI_${{ steps.installversion.outputs.content }}_admin_signed.exe
dist/pyRevit_CLI_${{ steps.installversion.outputs.content }}_admin_signed.msi
dist/pyrevit-cli.${{ steps.installversion.outputs.content }}.nupkg
- name: Publish Choco Packages (Release)
if: (github.base_ref == env.ReleaseBranch)
run: |
choco apikey --key ${{ secrets.CHOCO_TOKEN}} --source https://push.chocolatey.org/
choco push dist/pyrevit-cli.${{ steps.installversion.outputs.content }}.nupkg -s https://push.chocolatey.org/
- name: Merge To Master (Release)
if: (github.base_ref == env.ReleaseBranch)
# configure git and commit changes
run: |
git checkout ${{ github.base_ref }}
git merge ${{ github.head_ref }}
git push
git checkout ${{ github.head_ref }}
- name: Notify Issue Threads (WIP)
if: (github.ref == 'refs/heads/develop')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pipenv run pyrevit notify wip https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
- name: Notify Issue Threads (Release)
if: (github.base_ref == env.ReleaseBranch)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pipenv run pyrevit notify release ${{ steps.publish_release.outputs.url }}
- name: Increment Version & Commit (Release)
if: (github.base_ref == env.ReleaseBranch)
run: |
pipenv run pyrevit set next-version
git push