Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automate releasing to BioSimulators #530

Open
jonrkarr opened this issue Jun 8, 2021 · 2 comments
Open

Automate releasing to BioSimulators #530

jonrkarr opened this issue Jun 8, 2021 · 2 comments

Comments

@jonrkarr
Copy link

jonrkarr commented Jun 8, 2021

To keep the version of tellurium in BioSimulators up to date, we recommend automating the release of new versions to BioSimulators.

This can be done using the GitHub API.

An easy way to do this is with the GitHub action below. This would automatically push tellurium to BioSimulators when releases are published to GitHub. To use the action:

  • Save the YAML below to .github/workflows/release-biosimulators.yml
  • Add two repository "secrets" at https://github.com/sys-bio/tellurium/settings/secrets/actions. Secrets are the mechanism that GitHub provides to use passwords without storing them inside repositories
    • Click the "New repository secret" button
    • Add two secrets:
      • BIOSIMULATORS_GH_USERNAME: the name of the GitHub user who pushes tellurium to BioSimulators (e.g., luciansmith). luciansmith and some others already have permissions for this.
      • BIOSIMULATORS_GH_TOKEN: token for BIOSIMULATORS_GH_USERNAME
  • A token for BIOSIMULATORS_GH_USERNAME can be created a https://github.com/settings/tokens
    • Select scope repo
  • It may also be necessary to enable actions here
name: Update BioSimulators command-line interface and Docker image

on:
  release:
    types:
      - published

jobs:
  updateBioSimulatorsCliAndDockerImage:
    name: Trigger the building and release of the BioSimulators version of tellurium
    runs-on: ubuntu-latest
    env:
      # Owner/repository-id for the GitHub repository for the downstream
      # command-line interface and Docker image.

      DOWNSTREAM_REPOSITORY: biosimulators/Biosimulators_tellurium

      # Username/token to use the GitHub API to trigger an action on the GitHub
      # repository for the downstream command line interface and Docker image.
      # Tokens can be generated at https://github.com/settings/tokens and should
      # have the scope "repo".

      BIOSIMULATORS_GH_USERNAME: ${{ secrets.BIOSIMULATORS_GH_USERNAME }}
      BIOSIMULATORS_GH_TOKEN: ${{ secrets.BIOSIMULATORS_GH_TOKEN }}
    steps:
      - name: Trigger a GitHub action that will build and release the BioSimulators version of tellurium
        run: |
          PACKAGE_VERSION="${GITHUB_REF/refs\/tags\//}"
          WORKFLOW_FILE=ci.yml

          curl -X POST \
               -u ${BIOSIMULATORS_GH_USERNAME}:${BIOSIMULATORS_GH_TOKEN} \
               -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/${DOWNSTREAM_REPOSITORY}/actions/workflows/${WORKFLOW_FILE}/dispatches \
               -d "{\"ref\": \"dev\", \"inputs\": {\"simulatorVersion\": \"${PACKAGE_VERSION}\", \"simulatorVersionLatest\": \"true\"}}"
@jonrkarr jonrkarr changed the title Automate releasing to BioSimualtors Automate releasing to BioSimulators Jun 8, 2021
@luciansmith
Copy link
Contributor

I'd like to tackle this--is there any way to have a sort of 'pre-release' version that isn't made public until the tests have passed? It would be nice to make this a sort of 'final testing before release' step so we could catch rrplugins-failure-like errors going forward.

@jonrkarr
Copy link
Author

jonrkarr commented Nov 2, 2021

There's several options. Everything is designed to be automatable.

The BioSimulators interface to tellurium is built by its own repository. Its tests can be triggered programmatically using the GitHub API. We could set this up to build an image and run tests with a specific revision that hasn't yet been released to PyPI by parameterizing the version of tellurium. Alternatively, you can clone this into your CI workflows and run the tests there.

The GitHub issue-based validation workflow can be run a "test" mode, where the tests are run, but nothing is saved to the BioSimulators database. This relies on a publicly-accessible Docker image. Another option is to install the test suite by cloning it from GitHub and install it with pip. This doesn't require a public image. In fact, the tests can be directly run on the interface without a Docker image (this of course skips testing the building of the image and compatibility with Singularity).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants