Merge pull request #1960 from eirannejad/jmcouffin-patch-1 #385
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: 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/[email protected] | |
- 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 |