name: pyzebra CI/CD pipeline on: push: branches: - main tags: - '*' jobs: prepare: runs-on: pyzebra steps: - name: Set up Conda run: | source /opt/miniconda3/etc/profile.d/conda.sh conda config --add channels conda-forge conda config --set solver libmamba test-env: runs-on: pyzebra needs: prepare if: github.ref == 'refs/heads/main' steps: - name: Checkout repository uses: actions/checkout@v4 - name: Build and deploy to testing env: BUILD_DIR: ${{ runner.temp }}/conda_build run: | source /opt/miniconda3/etc/profile.d/conda.sh conda build --no-anaconda-upload --output-folder $BUILD_DIR ./conda-recipe conda remove --name test --all --keep-env -y conda install --name test --channel $BUILD_DIR python=3.8 pyzebra -y sudo systemctl restart pyzebra-test.service prod-env: runs-on: pyzebra needs: prepare if: startsWith(github.ref, 'refs/tags/') steps: - name: Checkout repository uses: actions/checkout@v4 - name: Build, upload and deploy to production run: | source /opt/miniconda3/etc/profile.d/conda.sh conda build --token ${{ secrets.ANACONDA_TOKEN }} ./conda-recipe conda remove --name prod --all --keep-env -y conda install --name prod --use-local python=3.8 pyzebra -y sudo systemctl restart pyzebra-prod.service cleanup: runs-on: pyzebra needs: [test-env, prod-env] if: always() steps: - name: Cleanup run: | source /opt/miniconda3/etc/profile.d/conda.sh conda build purge-all