name: AlphaPulldown-CI-CD on: pull_request: push: branches: - main release: types: [published] workflow_dispatch: permissions: contents: read jobs: smoke-tests: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.10", "3.11"] defaults: run: shell: bash -el {0} steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: conda-incubator/setup-miniconda@v3 with: environment-file: environment.yml activate-environment: AlphaPulldown python-version: ${{ matrix.python-version }} auto-update-conda: true use-mamba: true - run: | pip install -e .[test] - run: | pytest -n auto --dist loadfile test/unit pytest test/integration #export PYTHONPATH=$PWD/alphapulldown/analysis_pipeline:$PYTHONPATH ## Test analysis pipeline #conda install -c bioconda biopandas #pip install pyrosetta-installer #python -c 'import pyrosetta_installer; pyrosetta_installer.install_pyrosetta()' #pytest -s test/test_pdb_analyser.py #pytest -s test/test_get_good_inter_pae.py coverage: runs-on: ubuntu-latest defaults: run: shell: bash -el {0} steps: - uses: actions/checkout@v4 with: submodules: recursive - uses: conda-incubator/setup-miniconda@v3 with: environment-file: environment.yml activate-environment: AlphaPulldown python-version: "3.11" auto-update-conda: true use-mamba: true - run: | pip install -e .[test] - run: | pytest -n auto --dist loadfile test/unit \ --cov=alphapulldown \ --cov-config=.coveragerc \ --cov-report= pytest test/integration \ --cov=alphapulldown \ --cov-config=.coveragerc \ --cov-append \ --cov-report= coverage report --skip-covered --show-missing coverage xml -o coverage.xml coverage json -o coverage.json coverage html -d htmlcov python test/tools/check_function_coverage.py --report-only coverage.json coverage report --fail-under=25 --skip-covered --show-missing - name: Prepare coverage site run: | mkdir -p _site/coverage cp -R htmlcov/. _site/coverage/ cat > _site/index.html <<'EOF'
Redirecting to the latest coverage report...
EOF - name: Coverage summary run: | { echo "## Coverage reports" echo "" echo "- Raw artifact: \`coverage-reports\`" echo "- HTML entrypoint inside artifact: \`htmlcov/index.html\`" echo "- Latest browsable HTML report is published from the \`main\` branch via the Pages job." } >> "$GITHUB_STEP_SUMMARY" - uses: actions/upload-artifact@v4 with: name: coverage-reports path: | coverage.json coverage.xml htmlcov - name: Upload coverage site artifact if: github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') uses: actions/upload-pages-artifact@v3 with: path: _site coverage-pages: if: github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') needs: coverage runs-on: ubuntu-latest permissions: pages: write id-token: write contents: read environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - id: deployment uses: actions/deploy-pages@v4 - name: Pages summary run: | { echo "## Coverage HTML" echo "" echo "Latest coverage site: ${{ steps.deployment.outputs.page_url }}" } >> "$GITHUB_STEP_SUMMARY" build-alphafold2-container: runs-on: ubuntu-latest steps: - uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - uses: actions/checkout@v4 - run: rm -rf /opt/hostedtoolcache - uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - uses: docker/setup-buildx-action@v3 - name: Build and push alphafold2 container if: github.event_name == 'push' uses: docker/build-push-action@v5 with: context: . file: ./docker/alphafold2.dockerfile push: true tags: ${{ secrets.DOCKER_USERNAME }}/alphafold2:latest ssh: default - name: Build and push alphafold2 container with version if: github.event_name == 'release' && github.event.action == 'published' uses: docker/build-push-action@v5 with: context: . file: ./docker/alphafold2.dockerfile push: true tags: ${{ secrets.DOCKER_USERNAME }}/alphafold2:${{ github.event.release.tag_name }} ssh: default # build-alphalink-container: # runs-on: ubuntu-latest # steps: # - uses: webfactory/ssh-agent@v0.9.0 # with: # ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} # - uses: actions/checkout@v4 # - run: rm -rf /opt/hostedtoolcache # - uses: docker/login-action@v3 # with: # username: ${{ secrets.DOCKER_USERNAME }} # password: ${{ secrets.DOCKER_PASSWORD }} # - uses: docker/setup-buildx-action@v3 # - name: Build and push alphalink container # if: github.event_name == 'push' # uses: docker/build-push-action@v5 # with: # context: . # file: ./docker/alphalink.dockerfile # push: true # tags: ${{ secrets.DOCKER_USERNAME }}/alphalink:latest # ssh: default # - name: Build and push alphalink container with version # if: github.event_name == 'release' && github.event.action == 'published' # uses: docker/build-push-action@v5 # with: # context: . # file: ./docker/alphalink.dockerfile # push: true # tags: ${{ secrets.DOCKER_USERNAME }}/alphalink:${{ github.event.release.tag_name }} # ssh: default build-alphafold3-container: runs-on: ubuntu-latest steps: - uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - uses: actions/checkout@v4 - run: rm -rf /opt/hostedtoolcache - uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - uses: docker/setup-buildx-action@v3 - name: Build and push alphafold3 container if: github.event_name == 'push' uses: docker/build-push-action@v5 with: context: . file: ./docker/alphafold3.dockerfile push: true tags: ${{ secrets.DOCKER_USERNAME }}/alphafold3:latest ssh: default - name: Build and push alphafold3 container with version if: github.event_name == 'release' && github.event.action == 'published' uses: docker/build-push-action@v5 with: context: . file: ./docker/alphafold3.dockerfile push: true tags: ${{ secrets.DOCKER_USERNAME }}/alphafold3:${{ github.event.release.tag_name }} ssh: default