mirror of
https://github.com/KosinskiLab/AlphaPulldown.git
synced 2026-06-04 14:14:24 +08:00
253 lines
7.9 KiB
YAML
253 lines
7.9 KiB
YAML
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'
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="refresh" content="0; url=coverage/">
|
|
<title>AlphaPulldown Coverage</title>
|
|
</head>
|
|
<body>
|
|
<p>Redirecting to the latest coverage report...</p>
|
|
<p><a href="coverage/">Open coverage report</a></p>
|
|
</body>
|
|
</html>
|
|
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
|