Skip to content
100 changes: 100 additions & 0 deletions .github/workflows/constructor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Set this workflow up to run on pushes to the main branch
name: Constructor
on:
push:
branches:
- master

jobs:
constructor-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Conda
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
activate-environment: constructor

- name: Create Conda environment
shell: bash -el {0}
run: |
conda install -c conda-forge constructor conda-libmamba-solver
mkdir out && cd out && constructor ../conda

- name: Upload Constructor output
uses: actions/upload-artifact@v4
with:
name: CQ-editor-master-Linux-x86_64
path: out/*.*
constructor-windows:
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Conda
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
activate-environment: constructor

- name: Create Conda environment
shell: bash -el {0}
run: |
conda install -c conda-forge constructor conda-libmamba-solver
mkdir out && cd out && constructor ../conda

- name: Upload Constructor output
uses: actions/upload-artifact@v4
with:
name: CQ-editor-master-Windows-x86_64
path: out/*.*
constructor-macos-arm64:
runs-on: macos-14
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Conda
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
activate-environment: constructor

- name: Create Conda environment
shell: bash -el {0}
run: |
conda install -c conda-forge constructor conda-libmamba-solver
mkdir out && cd out && constructor ../conda

- name: Upload Constructor output
uses: actions/upload-artifact@v4
with:
name: CQ-editor-master-MacOSX-ARM64
path: out/*.*
constructor-macos-x86_64:
runs-on: macos-13
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Conda
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
activate-environment: constructor

- name: Create Conda environment
shell: bash -el {0}
run: |
conda install -c conda-forge constructor conda-libmamba-solver
mkdir out && cd out && constructor ../conda

- name: Upload Constructor output
uses: actions/upload-artifact@v4
with:
name: CQ-editor-master-MacOSX-x86_64
path: out/*.*
10 changes: 5 additions & 5 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ install:
- cmd: miniconda.exe /S /InstallationType=JustMe /D=%MINICONDA_DIRNAME%
- cmd: set "PATH=%MINICONDA_DIRNAME%;%MINICONDA_DIRNAME%\\Scripts;%PATH%"
- cmd: activate
- mamba info
- mamba env create --name cqgui -f cqgui_env.yml
- conda info
- conda env create -y --name cqgui -f cqgui_env.yml
- sh: source activate cqgui
- cmd: activate cqgui
- mamba list
- mamba install -y pytest pluggy pytest-qt
- mamba install -y pytest-mock pytest-cov pytest-repeat codecov pyvirtualdisplay
- conda list
- conda install -y pytest pluggy pytest-qt
- conda install -y pytest-mock pytest-cov pytest-repeat codecov pyvirtualdisplay

build: false

Expand Down
186 changes: 123 additions & 63 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,80 +9,140 @@ trigger:
pr:
- master

resources:
repositories:
- repository: templates
type: github
name: CadQuery/conda-packages
endpoint: CadQuery
# resources:
# repositories:
# - repository: templates
# type: github
# name: jmwright/conda-packages
# endpoint: CadQuery

parameters:
- name: minor
type: object
default:
- 11
- name: location
type: string
default: 'conda'

stages:
stages:
- stage: build_conda_package
jobs:
- ${{ each minor in parameters.minor }}:
- template: conda-build.yml@templates
parameters:
name: Linux
vmImage: 'ubuntu-latest'
py_maj: 3
py_min: ${{minor}}
conda_bld: 3.21.6
- job: Linux_3_${{ minor }}
timeoutInMinutes: 360

- stage: build_installers
jobs:
- template: constructor-build.yml@templates
parameters:
name: linux
vmImage: 'ubuntu-latest'
- template: constructor-build.yml@templates
parameters:
name: win
vmImage: 'windows-latest'
- template: constructor-build.yml@templates
parameters:
name: macos
vmImage: 'macOS-latest'
pool:
vmImage: ubuntu-latest

- stage: upload_installers
jobs:
- job: upload_to_github
condition: ne(variables['Build.Reason'], 'PullRequest')
pool:
vmImage: ubuntu-latest
steps:
- download: current
artifact: installer_ubuntu-latest
- download: current
artifact: installer_windows-latest
- download: current
artifact: installer_macOS-latest
- bash: cp $(Pipeline.Workspace)/installer*/*.* .
- task: GitHubRelease@1
inputs:
gitHubConnection: github.com_oauth
assets: CQ-editor-*.*
action: edit
tag: nightly
target: d8e247d15001bf785ef7498d922b4b5aa017a9c9
addChangeLog: false
assetUploadMode: replace
isPreRelease: true
steps:

# this step is needed for OCC to find fonts
- bash: |
sudo apt-get -q -y install gsfonts xfonts-utils && \
sudo mkfontscale /usr/share/fonts/type1/gsfonts/ && \
sudo mkfontdir /usr/share/fonts/type1/gsfonts/
condition: eq( variables['Agent.OS'], 'Linux' )
displayName: 'Help OCC find fonts'

# Ubunut install opengl items
- ${{ if contains('ubuntu-latest', 'Ubuntu') }}:
- bash: |
sudo apt-get update && \
sudo apt-get -q -y install libglu1-mesa-dev freeglut3-dev mesa-common-dev
displayName: 'Install OpenGL headers'

- template: conda-enable.yml
parameters:
vmImage: ubuntu-latest

- bash: conda create --yes --quiet --name build_env -c conda-forge conda-build boa conda-verify libarchive python=3.12 anaconda-client
displayName: Create Anaconda environment

- bash: |
cd ${{ parameters.location }} && \
conda run -n build_env conda mambabuild -c conda-forge -c cadquery --output-folder . . && \
full_path=$(conda run -n build_env conda build --output -c conda-forge -c cadquery --output-folder . . ) && \
echo $full_path && \
base_name=$(basename $full_path) && \
split_name=($(IFS=-; tmp=($base_name); echo ${tmp[@]})) && \
package_name=${split_name[@]: 0 : ${#split_name[@]} - 2} && \
package_name=${package_name/ /-} && \
version_name=${split_name[-2]} && \
echo "Removing $base_name" && \
conda run -n build_env anaconda -v -t $TOKEN remove --force "cadquery/$package_name/$version_name" && \
echo "Uploading $full_path" && \
conda run -n build_env anaconda -v -t $TOKEN upload -u cadquery --force $full_path && \
cd ..
displayName: 'Run conda build'
failOnStderr: false
condition: ne(variables['Build.Reason'], 'PullRequest')
env:
PYTHON_VERSION: 3.${{ minor }}
PACKAGE_VERSION: $(Build.SourceBranchName)
TOKEN: $(anaconda.TOKEN)

- bash: |
cd ${{ parameters.location }} && \
conda run -n build_env conda mambabuild -c conda-forge -c cadquery . && \
cd ..
displayName: 'Run conda build without upload'
failOnStderr: false
condition: eq(variables['Build.Reason'], 'PullRequest')
env:
PYTHON_VERSION: 3.${{ minor }}
PACKAGE_VERSION: $(Build.SourceBranchName)
TOKEN: $(anaconda.TOKEN)

# - stage: build_installers
# jobs:
# - template: constructor-build.yml@templates
# parameters:
# name: linux
# vmImage: 'ubuntu-latest'
# - template: constructor-build.yml@templates
# parameters:
# name: win
# vmImage: 'windows-latest'
# - template: constructor-build.yml@templates
# parameters:
# name: macos
# vmImage: 'macOS-latest'

# - stage: upload_installers
# jobs:
# - job: upload_to_github
# condition: ne(variables['Build.Reason'], 'PullRequest')
# pool:
# vmImage: ubuntu-latest
# steps:
# - download: current
# artifact: installer_ubuntu-latest
# - download: current
# artifact: installer_windows-latest
# - download: current
# artifact: installer_macOS-latest
# - bash: cp $(Pipeline.Workspace)/installer*/*.* .
# - task: GitHubRelease@1
# inputs:
# gitHubConnection: github.com_oauth
# assets: CQ-editor-*.*
# action: edit
# tag: nightly
# target: d8e247d15001bf785ef7498d922b4b5aa017a9c9
# addChangeLog: false
# assetUploadMode: replace
# isPreRelease: true

# stage left for debugging, disabled by default
- stage: verify
condition: False
jobs:
- job: verify_linux
pool:
vmImage: ubuntu-latest
steps:
- download: current
artifact: installer_ubuntu-latest
- bash: cp $(Pipeline.Workspace)/installer*/*.* .
- bash: sh ./CQ-editor-master-Linux-x86_64.sh -b -p dummy && cd dummy && ./run.sh
# - stage: verify
# condition: False
# jobs:
# - job: verify_linux
# pool:
# vmImage: ubuntu-latest
# steps:
# - download: current
# artifact: installer_ubuntu-latest
# - bash: cp $(Pipeline.Workspace)/installer*/*.* .
# - bash: sh ./CQ-editor-master-Linux-x86_64.sh -b -p dummy && cd dummy && ./run.sh