new_model #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Add a new model | |
# Trigger the workflow on pull request | |
on: workflow_dispatch | |
jobs: | |
# create_new_branch: | |
# if: ${{ startsWith(github.event.issue.title, 'New Model:') && github.event.label.name != 'failed' && github.event.label.name != 'new-model' && github.event.label.name != 'update-model' }} | |
# runs-on: ubuntu-latest | |
# outputs: | |
# BRANCHNAME: ${{ steps.branch.outputs.branchName }} | |
# # All the issue form data | |
# MODELPATH: ${{ steps.get_path.outputs.path }} | |
# WEIGHTS: ${{ steps.get_weights.outputs.weights }} | |
# DOCKER: ${{ steps.get_docker.outputs.docker }} | |
# PYTHON: ${{ steps.python_scripts.outputs.pythons }} | |
# MODELINFO: ${{ env.model_info }} | |
# SAMPLEDATA: ${{ steps.get_data.outputs.sample_data }} | |
# PYTHONS: ${{ env.pythons }} | |
# CONFIG: ${{ steps.get_model_config.outputs.model_config }} | |
# TESTCOMMAND: ${{ steps.get_test_command.outputs.test_command }} | |
# steps: | |
# # This will automatically create a new branch from this issue, using custom config at /.github/issue-branch.yml 🟢 | |
# - name: Create Issue Branch | |
# id: branch | |
# uses: robvanderleek/create-issue-branch@main | |
# env: | |
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# # Set up Python 🟢 | |
# - name: Set up Python | |
# uses: actions/setup-python@v4 | |
# with: | |
# python-version: 3.11 | |
# # Checkout the repository to the GitHub Actions runner 🟢 | |
# - uses: actions/checkout@v4 | |
# with: | |
# ref: ${{ steps.branch.outputs.branchName }} | |
# # Scrape the info from the issue 🟢 | |
# - uses: stefanbuck/github-issue-parser@v3 | |
# id: issue-parser | |
# with: | |
# template-path: .github/ISSUE_TEMPLATE/addModel.yml # optional but recommended | |
# # Scrape info from the form 🟢 | |
# - name: Get the Path | |
# id: get_path | |
# run: echo "path=${{ steps.issue-parser.outputs.issueparser_path }}" >> $GITHUB_OUTPUT | |
# - name: Get the Weights | |
# id: get_weights | |
# run: echo "weights=${{ steps.issue-parser.outputs.issueparser_weights }}" >> $GITHUB_OUTPUT | |
# - name: Get docker folder | |
# id: get_docker | |
# run: echo "docker=${{ steps.issue-parser.outputs.issueparser_docker }}" >> $GITHUB_OUTPUT | |
# - name: Get Python Scripts | |
# id: python_scripts | |
# run: | | |
# echo "pythons<<EOF" >> $GITHUB_ENV | |
# echo "${{ steps.issue-parser.outputs.issueparser_python-scripts }}" >> $GITHUB_ENV | |
# echo "EOF" >> $GITHUB_ENV | |
# - name: Get Model Info | |
# id: get_model_info | |
# run: | | |
# echo "model_info<<EOF" >> $GITHUB_ENV | |
# echo "${{ steps.issue-parser.outputs.issueparser_model_info }}" >> $GITHUB_ENV | |
# echo "EOF" >> $GITHUB_ENV | |
# - name: Get Test Command | |
# id: get_test_command | |
# run: | | |
# echo "test_command=${{ steps.issue-parser.outputs.issueparser_testCommand }}" >> $GITHUB_OUTPUT | |
# - name: Get Sample Data | |
# id: get_data | |
# run: echo "sample_data=${{ steps.issue-parser.outputs.issueparser_sample-data }}" >> $GITHUB_OUTPUT | |
# - name: Get Config | |
# id: get_model_config | |
# run: | | |
# echo "model_config=${{ steps.issue-parser.outputs.issueparser_modelConfig }}" >> $GITHUB_OUTPUT | |
# push-model: | |
# needs: create_new_branch | |
# runs-on: ubuntu-latest | |
# steps: | |
# # Checkout the repository to the GitHub Actions runner to the new branch created for the issue 🟢 | |
# - uses: actions/checkout@v4 | |
# if: needs.create_new_branch.outputs.BRANCHNAME == '' | |
# with: | |
# ref: issue-${{ github.event.issue.number }} | |
# # If branchName is empty use issue number, else, use the branchName 🟢 | |
# - uses: actions/checkout@v4 | |
# if: needs.create_new_branch.outputs.BRANCHNAME != '' | |
# with: | |
# ref: ${{ needs.create_new_branch.outputs.BRANCHNAME }} | |
# # Install svn to clone subdir of github repos 🟢 | |
# - name: Install svn | |
# run: sudo apt-get install subversion | |
# # Get svn url for exporting docker 🟢 | |
# - name: Clone docker folder | |
# run: | | |
# url="${{ needs.create_new_branch.outputs.DOCKER }}" | |
# svn_url=$(echo "$url" | sed -E 's|/tree/[^/]+|/trunk|; s|/blob/[^/]+|/trunk|') | |
# svn export --force $svn_url ./${{ needs.create_new_branch.outputs.MODELPATH }}/docker | |
# # Get svn url for exporting 🟢 | |
# - name: Generate Python SVN URLs | |
# id: generate_urls | |
# run: | | |
# echo "pythons2<<EOF" >> $GITHUB_ENV | |
# python ./.github/workflows/getPythonScripts.py >> $GITHUB_ENV | |
# echo "EOF" >> $GITHUB_ENV | |
# env: | |
# pythons: ${{ needs.create_new_branch.outputs.PYTHONS }} | |
# # Export the urls/clone the scripts 🟢 | |
# - name: Clone python scripts | |
# run: | | |
# cd ./${{ needs.create_new_branch.outputs.MODELPATH }} | |
# svn_urls="${{ env.pythons2 }}" | |
# for svn_url in $svn_urls; do | |
# svn export --force $svn_url | |
# done | |
# # Get svn urls for exporting card and spec urls 🟢 | |
# - name: Generate Model Info SVN URLs | |
# id: generate_model_info_urls | |
# run: | | |
# echo "model_info2<<EOF" >> $GITHUB_ENV | |
# python ./.github/workflows/getModelInfo.py >> $GITHUB_ENV | |
# echo "EOF" >> $GITHUB_ENV | |
# env: | |
# model_info: ${{ needs.create_new_branch.outputs.MODELINFO }} | |
# # Export the urls/clone the model info 🟢 | |
# - name: Clone model info | |
# run: | | |
# model_info="${{ env.model_info2 }}" | |
# for svn_url in $model_info; do | |
# svn export --force $svn_url ./${{ needs.create_new_branch.outputs.MODELPATH }} | |
# done | |
# # Clone config files | |
# - name: Config file clone | |
# # Only run if needs.create_new_branch.outputs.CONFIG is not empty | |
# if: ${{ needs.create_new_branch.outputs.CONFIG != '' }} | |
# run: | | |
# mkdir ./${{ needs.create_new_branch.outputs.MODELPATH }}/config/ | |
# url="${{ needs.create_new_branch.outputs.CONFIG }}" | |
# svn_url=$(echo "$url" | sed -E 's|/tree/[^/]+|/trunk|; s|/blob/[^/]+|/trunk|') | |
# svn export --force $svn_url ./${{ needs.create_new_branch.outputs.MODELPATH }}/config | |
# # Commit the new created files and folders to the branch needs.create_new_branch.outputs.BRANCHNAME 🟢 | |
# - name: Commit and Push the new files | |
# run: | | |
# git config --global user.name "trained_models" | |
# git config --global user.email "trained_models" | |
# git add ${{ needs.create_new_branch.outputs.MODELPATH }} | |
# git commit -m "Added model files" | |
# git push origin ${{ needs.create_new_branch.outputs.BRANCHNAME }} | |
# build: | |
# needs: [create_new_branch, push-model] | |
# runs-on: ubuntu-latest | |
# steps: | |
# # Checkout the repository to the GitHub Actions runner 🟢 | |
# - uses: actions/checkout@v3 | |
# if: needs.create_new_branch.outputs.BRANCHNAME == '' | |
# with: | |
# ref: issue-${{ github.event.issue.number }} | |
# # If branchName is empty use issue number, else, use the branchName 🟢 | |
# - uses: actions/checkout@v3 | |
# if: needs.create_new_branch.outputs.BRANCHNAME != '' | |
# with: | |
# ref: ${{ needs.create_new_branch.outputs.BRANCHNAME }} | |
# # Set up Python | |
# - name: Set up Python | |
# uses: actions/setup-python@v4 | |
# with: | |
# python-version: 3.11 | |
# # Install yaml | |
# - name: Install yaml and oyaml | |
# run: | | |
# pip install pyyaml | |
# pip install oyaml | |
# # Install linkml | |
# - name: Install LinkML | |
# run: pip install linkml | |
# # Create model card and spec.yaml file | |
# - name: Validate model card and spec files | |
# run: | | |
# echo "## Model Card and Spec Validation :white_check_mark:" >> $GITHUB_STEP_SUMMARY | |
# echo "Model Card and spec yaml files are being validated here with LinkML Schema" >> $GITHUB_STEP_SUMMARY | |
# python ./.github/workflows/create_model_card_and_spec.py | |
# env: | |
# model_path: ${{ needs.create_new_branch.outputs.MODELPATH }} | |
# # Update the model's spec.yaml file | |
# - name: Update yaml file | |
# run: | | |
# model_name=$(echo "${{ needs.create_new_branch.outputs.MODELPATH }}" | awk -F '/' '{print $(NF-1)}') | |
# python ./.github/workflows/update_yaml_info.py ${{ needs.create_new_branch.outputs.MODELPATH }}/docker $model_name | |
# # Commit the changes (spec.yaml file and model card) 🟢 | |
# - name: Commit changes | |
# run: | | |
# git config --global user.name "trained_models" | |
# git config --global user.email "trained_models" | |
# git add ${{ needs.create_new_branch.outputs.MODELPATH }}/spec.yaml | |
# git commit -m "Updated spec.yaml" | |
# git push origin ${{ needs.create_new_branch.outputs.BRANCHNAME }} | |
# build-docker: | |
# needs: [create_new_branch, push-model, build] | |
# runs-on: ubuntu-latest | |
# outputs: | |
# IMAGENAME: ${{ steps.set_image_name.outputs.image_name }} | |
# MODELNAME: ${{ steps.set_image_name.outputs.model_name }} | |
# steps: | |
# # Cleanup steps to free up disk space | |
# #- name: Cleanup disk space for large docker images | |
# #run: | | |
# #sudo rm -rf /usr/share/dotnet | |
# #sudo rm -rf /opt/ghc | |
# #sudo rm -rf "/usr/local/share/boost" | |
# #sudo rm -rf /opt/hostedtoolcache | |
# #sudo rm -rf "$AGENT_TOOLSDIRECTORY" | |
# #- name: Free Disk Space (Ubuntu) | |
# #uses: jlumbroso/free-disk-space@main | |
# #with: | |
# # this might remove tools that are actually needed, | |
# # if set to "true" but frees about 6 GB | |
# #tool-cache: false | |
# # all of these default to true, but feel free to set to | |
# # "false" if necessary for your workflow | |
# #android: true | |
# #dotnet: true | |
# #haskell: true | |
# #large-packages: true | |
# #docker-images: false | |
# # Checkout the repository to the GitHub Actions runner 🟢 | |
# - uses: actions/checkout@v3 | |
# if: needs.create_new_branch.outputs.BRANCHNAME == '' | |
# with: | |
# ref: issue-${{ github.event.issue.number }} | |
# # If branchName is empty use issue number, else, use the branchName 🟢 | |
# - uses: actions/checkout@v3 | |
# if: needs.create_new_branch.outputs.BRANCHNAME != '' | |
# with: | |
# ref: ${{ needs.create_new_branch.outputs.BRANCHNAME }} | |
# # Get image name 🟢 | |
# - name: Set docker image name | |
# id: set_image_name | |
# run: | | |
# full_path="${{ needs.create_new_branch.outputs.MODELPATH }}" | |
# model_name=$(echo "$full_path" | awk -F '/' '{print $(NF-1)}') | |
# echo "image_name=neuronets/$model_name" >> $GITHUB_OUTPUT | |
# echo "model_name=$model_name" >> $GITHUB_OUTPUT | |
# push-weights: | |
# needs: [create_new_branch, push-model, build, build-docker] | |
# runs-on: ubuntu-latest | |
# steps: | |
# # Checkout the repository to the GitHub Actions runner to the new branch created for the issue 🟢 | |
# - uses: actions/checkout@v3 | |
# if: needs.create_new_branch.outputs.BRANCHNAME == '' | |
# with: | |
# ref: issue-${{ github.event.issue.number }} | |
# # If branchName is empty use issue number, else, use the branchName 🟢 | |
# - uses: actions/checkout@v3 | |
# if: needs.create_new_branch.outputs.BRANCHNAME != '' | |
# with: | |
# ref: ${{ needs.create_new_branch.outputs.BRANCHNAME }} | |
# # Set up Python | |
# - name: Set up Python | |
# uses: actions/setup-python@v4 | |
# with: | |
# python-version: 3.11 | |
# # Install datalad 🟢 | |
# - name: Install Datalad | |
# id: testing | |
# run: | | |
# sudo apt-get install datalad | |
# python3 -m pip install datalad-osf | |
# pip install requests | |
# git config --global user.name "trained_models" | |
# git config --global user.email "trained_models" | |
# # Get file extensions for the weights and sample data | |
# # - name: Get extensions for weights | |
# # id: get_extensions_weights | |
# # run: | | |
# # echo "weights_ext<<EOF" >> $GITHUB_OUTPUT | |
# # python ./.github/workflows/getFileExtension.py "${{ needs.create_new_branch.outputs.WEIGHTS }}" >> $GITHUB_OUTPUT | |
# # echo "EOF" >> $GITHUB_OUTPUT | |
# # - name: Get extensions for sample data | |
# # id: get_extensions_sample_data | |
# # run: | | |
# # echo "sample_ext<<EOF" >> $GITHUB_OUTPUT | |
# # python ./.github/workflows/getFileExtension.py "${{ needs.create_new_branch.outputs.SAMPLEDATA }}" >> $GITHUB_OUTPUT | |
# # echo "EOF" >> $GITHUB_OUTPUT | |
# #Git annex addurl the weights | |
# - name: Git-annex/Datalad add the weights | |
# env: | |
# OSF_TOKEN: ${{ secrets.OSF_TOKEN }} | |
# run: | | |
# # datalad siblings | |
# mkdir ./${{ needs.create_new_branch.outputs.MODELPATH }}/weights | |
# cd ./${{ needs.create_new_branch.outputs.MODELPATH }}/weights | |
# # datalad download-url --overwrite -m "Added Weights" -O ./${{ needs.create_new_branch.outputs.MODELPATH }}/weights/best_model.${{ steps.get_extensions_weights.outputs.weights_ext }} "${{ needs.create_new_branch.outputs.WEIGHTS }}" | |
# datalad download-url --overwrite -m "Added Sample Dataset" "${{ needs.create_new_branch.outputs.WEIGHTS }}" | |
# datalad save . -m "Added model weights" | |
# #datalad push --to osf-annex2-storage | |
# datalad push --to origin | |
# - name: Git-annex/Datalad add the sample datasets | |
# env: | |
# OSF_TOKEN: ${{ secrets.OSF_TOKEN }} | |
# run: | | |
# mkdir ./${{ needs.create_new_branch.outputs.MODELPATH }}/example-data | |
# cd ./${{ needs.create_new_branch.outputs.MODELPATH }}/example-data | |
# # datalad download-url --overwrite -m "Added Sample Dataset" -O ./${{needs.create_new_branch.outputs.MODELPATH}}/example-data/sample.${{ steps.get_extensions_sample_data.outputs.sample_ext }} "${{needs.create_new_branch.outputs.SAMPLEDATA}}" | |
# datalad download-url --overwrite -m "Added Sample Dataset" "${{ needs.create_new_branch.outputs.SAMPLEDATA }}" | |
# datalad save . -m "Added sample data" | |
# #datalad push --to osf-annex2-storage | |
# datalad push --to origin | |
start-runner: | |
# needs: [create_new_branch, push-model, build, build-docker, push-weights] | |
runs-on: ubuntu-latest | |
outputs: | |
label: ${{ steps.start-ec2-runner.outputs.label }} | |
ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }} | |
steps: | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_KEY_SECRET }} | |
aws-region: ${{ vars.AWS_REGION }} | |
- name: Start EC2 runner | |
id: start-ec2-runner | |
uses: machulav/ec2-github-runner@v2 | |
with: | |
mode: start | |
github-token: ${{ secrets.GH_TOKEN }} | |
ec2-image-id: ${{ vars.AWS_IMAGE_ID }} | |
ec2-instance-type: ${{ vars.AWS_INSTANCE_TYPE }} | |
subnet-id: ${{ vars.AWS_SUBNET }} | |
security-group-id: ${{ vars.AWS_SECURITY_GROUP }} | |
test-model: | |
name: Do the job on the runner | |
# needs: [create_new_branch, push-model, build, build-docker, push-weights, start-runner] # required to start the main job when the runner is ready | |
needs: [start-runner] | |
runs-on: ${{ needs.start-runner.outputs.label }} # run the job on the newly created runner | |
steps: | |
# Setups singularity to the job to make it accessible to other steps | |
# Cleanup steps to free up disk space | |
- name: Cleanup disk space for large docker images | |
run: | | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /opt/ghc | |
sudo rm -rf "/usr/local/share/boost" | |
sudo rm -rf /opt/hostedtoolcache | |
sudo rm -rf "$AGENT_TOOLSDIRECTORY" | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/free-disk-space@main | |
with: | |
# this might remove tools that are actually needed, | |
# if set to "true" but frees about 6 GB | |
tool-cache: false | |
# all of these default to true, but feel free to set to | |
# "false" if necessary for your workflow | |
android: true | |
dotnet: true | |
haskell: true | |
large-packages: true | |
docker-images: false | |
# - uses: actions/checkout@v3 | |
# if: needs.create_new_branch.outputs.BRANCHNAME == '' | |
# with: | |
# ref: issue-${{ github.event.issue.number }} | |
# # If branchName is empty use issue number, else, use the branchName 🟢 | |
- uses: actions/checkout@v3 | |
# if: needs.create_new_branch.outputs.BRANCHNAME != '' | |
# with: | |
# ref: ${{ needs.create_new_branch.outputs.BRANCHNAME }} | |
- name: Install singularity | |
run: | | |
wget https://github.com/sylabs/singularity/releases/download/v4.0.0/singularity-ce_4.0.0-focal_amd64.deb | |
sudo apt install ./singularity-ce_4.0.0-focal_amd64.deb -y | |
singularity version | |
# Build the Docker image 🟢 | |
#- name: Build Docker image | |
#run: | | |
#docker build -t ${{ needs.build-docker.outputs.MODELNAME }} ./${{ needs.create_new_branch.outputs.MODELPATH }}/docker | |
#docker save --output ./${{ needs.create_new_branch.outputs.MODELPATH }}/docker/${{ needs.build-docker.outputs.MODELNAME }}.tar ${{ needs.build-docker.outputs.MODELNAME }} | |
# Convert the docker image to a singularity image | |
#- name: Convert docker image to singularity image | |
#run: | | |
#singularity build ./${{ needs.create_new_branch.outputs.MODELPATH }}/docker/${{ needs.build-docker.outputs.MODELNAME }}.sif docker-archive://./${{ needs.create_new_branch.outputs.MODELPATH }}/docker/${{ needs.build-docker.outputs.MODELNAME }}.tar | |
# Datalad get the sample dataset | |
#- name: Get sample dataset | |
#run: | | |
#sudo apt install python3-pip -y | |
#pip install datalad | |
#git config --global user.name "trained_models" | |
#git config --global user.email "trained_models" | |
#datalad get ./${{ needs.create_new_branch.outputs.MODELPATH }}/weights/ | |
#datalad get ./${{ needs.create_new_branch.outputs.MODELPATH }}/example-data/ | |
#sudo apt install unzip | |
#cd ./${{ needs.create_new_branch.outputs.MODELPATH }}/example-data/ | |
#find . -name "*.zip" -exec unzip {} \; | |
# Push the dataset to the repo | |
#datalad save . -m "Added sample data" | |
#datalad push --to osf-annex2-storage | |
#datalad push --to origin | |
#- name: Get the weights | |
#run: | | |
#cd ./${{ needs.create_new_branch.outputs.MODELPATH }}/weights/ | |
#find . -name "*.zip" -exec unzip {} \; | |
# Push the weights to the repo | |
#datalad save . -m "Added model weights" | |
#datalad push --to osf-annex2-storage | |
#datalad push --to origin | |
#- name: Collect Workflow Telemetry | |
#uses: runforesight/workflow-telemetry-action@v1 | |
#with: | |
#job_summary: true | |
#proc_trace_sys_enable: true | |
#proc_trace_table_show: true | |
# Run in singularity the test command saved under needs.create_new_branch.outputs.DEEPCSR | |
- name: Run test command in Singularity | |
run: | | |
# Parent directory as a bind path in a env variable | |
#singularity exec --nv --bind /actions-runner,/actions-runner/_work/,/actions-runner/_work/${{ github.event.repository.name }}/${{ github.event.repository.name }}/${{ needs.create_new_branch.outputs.MODELPATH }}/,/actions-runner/_work/${{ github.event.repository.name }}/${{ github.event.repository.name }}/${{ needs.create_new_branch.outputs.MODELPATH }}/docker,/actions-runner/_work/${{ github.event.repository.name }}/${{ github.event.repository.name }}/${{ needs.create_new_branch.outputs.MODELPATH }}/weights,/actions-runner/_work/${{ github.event.repository.name }}/${{ github.event.repository.name }}/${{ needs.create_new_branch.outputs.MODELPATH }}/example-data:/output ./${{ needs.create_new_branch.outputs.MODELPATH }}/docker/${{ needs.build-docker.outputs.MODELNAME }}.sif ${{ needs.create_new_branch.outputs.TESTCOMMAND }} | |
docker login -u hvgazula -p dckr_pat_VpAuZs0gh1vNrzENg1b1wsAyWYk | |
# singularity build ./${{ needs.create_new_branch.outputs.MODELPATH }}/docker/${{ needs.build-docker.outputs.MODELNAME }}.sif docker://hvgazula/test:tm-sim | |
# singularity exec --nv --bind /actions-runner/_work/${{ github.event.repository.name }}/${{ github.event.repository.name }}:/output ./${{ needs.create_new_branch.outputs.MODELPATH }}/docker/${{ needs.build-docker.outputs.MODELNAME }}.sif ls | |
singularity build tm-sim.sif docker://hvgazula/test:tm-sim | |
singularity exec --bind /actions-runner/_work/:/output test:tm-sim.sif echo $PWD | |
singularity exec --bind /actions-runner/_work/:/output test:tm-sim.sif ls | |
# Load the Docker image 🟢 | |
#- name: Load Docker image | |
#run: | | |
#docker load --input "./${{ needs.create_new_branch.outputs.MODELPATH }}/docker/${{ needs.build-docker.outputs.MODELNAME }}.tar" | |
#- name: Collect Workflow Telemetry | |
#uses: runforesight/workflow-telemetry-action@v1 | |
#with: | |
#job_summary: true | |
#proc_trace_sys_enable: true | |
#proc_trace_table_show: true | |
# Test model with docker image as well | |
#- name: Run test command in Docker | |
#run: | | |
#docker run --gpus all -v /actions-runner/_work/${{ github.event.repository.name }}/${{ github.event.repository.name }}:/output ${{ needs.build-docker.outputs.MODELNAME }} "cd /output; ${{ needs.create_new_branch.outputs.TESTCOMMAND }}" | |
# Get model's version from model's path | |
#- name: Get model's version | |
#id: modelVersion | |
#run: | | |
# Get the version | |
#model_version=$(echo "${{ needs.create_new_branch.outputs.MODELPATH }}" | awk -F '/' '{print $(NF)}') | |
# Set the version as an output | |
#echo "model_version=$model_version" >> $GITHUB_OUTPUT | |
# Push the Docker image to Docker Hub (only if the PR is merged) 🟢 | |
#- name: Push Docker image | |
#run: | | |
#docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} | |
#docker tag ${{ needs.build-docker.outputs.MODELNAME }} ${{ needs.build-docker.outputs.IMAGENAME }}:${{ steps.modelVersion.outputs.model_version }} | |
#docker push ${{ needs.build-docker.outputs.IMAGENAME }} | |
stop-runner: | |
name: Stop self-hosted EC2 runner | |
# needs: [create_new_branch, push-model, build, build-docker, push-weights, start-runner, test-model] # required to wait when the main job is done | |
needs: [start-runner, test-model] | |
runs-on: ubuntu-latest | |
if: ${{ always() }} | |
# required to stop the runner even if the error happened in the previous jobs | |
steps: | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v1 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_KEY_SECRET }} | |
aws-region: ${{ vars.AWS_REGION }} | |
- name: Stop EC2 runner | |
uses: machulav/ec2-github-runner@v2 | |
with: | |
mode: stop | |
github-token: ${{ secrets.GH_TOKEN }} | |
label: ${{ needs.start-runner.outputs.label }} | |
ec2-instance-id: ${{ needs.start-runner.outputs.ec2-instance-id }} | |
# failed: | |
# runs-on: ubuntu-latest | |
# needs: [create_new_branch, push-model, build, build-docker, push-weights, start-runner, test-model] | |
# if: ${{ failure() }} | |
# steps: | |
# - name: Set labels | |
# uses: actions-cool/issues-helper@v3 | |
# with: | |
# actions: 'set-labels' | |
# token: ${{ secrets.GITHUB_TOKEN }} | |
# issue-number: ${{ github.event.issue.number }} | |
# labels: 'failed' | |
# - name: Create comment | |
# uses: actions-cool/issues-helper@v3 | |
# with: | |
# actions: 'create-comment' | |
# token: ${{ secrets.GITHUB_TOKEN }} | |
# issue-number: ${{ github.event.issue.number }} | |
# body: | | |
# [This is an automated message] Hello @${{ github.event.issue.user.login }}, | |
# 🔴 The folders/scripts you provided did not pass our tests. Please review the Action, and modify this issue's urls accordingly. | |
# When ready, just change the label of this issue to "Ready for testing". | |
# emoji: '+1,eyes' | |
# success: | |
# needs: [create_new_branch, push-model, build, build-docker, push-weights, start-runner, test-model, stop-runner] | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Set labels | |
# uses: actions-cool/issues-helper@v3 | |
# with: | |
# actions: 'set-labels' | |
# token: ${{ secrets.GITHUB_TOKEN }} | |
# issue-number: ${{ github.event.issue.number }} | |
# labels: 'success' | |
# - name: Create comment | |
# uses: actions-cool/issues-helper@v3 | |
# with: | |
# actions: 'create-comment' | |
# token: ${{ secrets.GITHUB_TOKEN }} | |
# issue-number: ${{ github.event.issue.number }} | |
# body: | | |
# [This is an automated message] Hello @${{ github.event.issue.user.login }}. The workflow linked to adding your model finished successfully! Please double check that this issue's tag is "success." | |
# 🟢 A Draft PR should be linked to this issue. Now that your model passed the checks, feel free to change the status of the PR to "ready for review." | |
# ⭐ Thank you for adding a model to Nobrainer-Zoo! | |
# emoji: '+1,hooray,rocket' | |
########################################## | |
# This workflow will add a new model to the zoo | |
# The flow of the workflow is as follows: | |
# 1. Create a new branch from the issue | |
# 2. Scrape the info from the issue | |
# 3. Scrape info from the form | |
# 4. Push the new created files and folders to the branch | |
# 5. Build the model card and spec.yaml file | |
# 6. Update the model's spec.yaml file | |
# 7. Build the docker image | |
# 8. Push the weights and sample data to the datalad repo | |
# 9. Start the self-hosted runner | |
# 10. Test the model/Push docker image to dockerhub | |
# 11. Stop the self-hosted runner | |
# 12. If the model fails, add the failed label and comment | |
# 13. If the model succeeds, add the success label and comment |