code and publishing management

in addition github actions are used for the CI

for the modules

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 name: Automated CI testing # This workflow run automatically for every commit on github it checks the syntax and launch the tests. # | grep . | uniq -c filters out empty lines and then groups consecutive lines together with the number of occurrences on: pull_request: workflow_dispatch: inputs: comment: description: Just a simple comment to know the purpose of the manual build required: false jobs: run_test: runs-on: ubuntu-latest services: mssql: image: mcr.microsoft.com/mssql/server:2017-latest env: ACCEPT_EULA: Y SA_PASSWORD: GitHub999 ports: - 1433:1433 # needed because the mssql container does not provide a health check options: --health-interval=10s --health-timeout=3s --health-start-period=10s --health-retries=10 --health-cmd="/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P ${SA_PASSWORD} -Q 'SELECT 1' || exit 1" steps: - name: Set up Python 3.8 uses: actions/setup-python@v2 with: python-version: 3.8 - name: install linux packages run: | git clone --depth 1 --branch develop https://github.com/openimis/database_ms_sqlserver.git ./sql cd sql/ && bash concatenate_files.sh && cd .. curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list sudo apt-get update sudo ACCEPT_EULA=Y apt-get install -y mssql-tools build-essential dialog apt-utils unixodbc-dev -y python -m pip install --upgrade pip - name: pull openimis backend run: | rm ./openimis -rf git clone --depth 1 --branch develop https://github.com/openimis/openimis-be_py.git ./openimis - name: copy current branch uses: actions/checkout@v2 with: path: './current-module' - name: Update the configuration working-directory: ./openimis run: | export MODULE_NAME="$(echo $GITHUB_REPOSITORY | sed 's#^openimis/openimis-be-\(.*\)_py$#\1#')" echo "the local module called $MODULE_NAME will be injected in openIMIS .json" jq --arg name "$MODULE_NAME" 'if [.modules[].name == ($name)]| max then (.modules[] | select(.name == ($name)) | .pip)|="../current-module" else .modules |= .+ [{name:($name), pip:"../current-module"}] end' openimis.json echo $(jq --arg name "$MODULE_NAME" 'if [.modules[].name == ($name)]| max then (.modules[] | select(.name == ($name)) | .pip)|="../current-module" else .modules |= .+ [{name:($name), pip:"../current-module"}] end' openimis.json) > openimis.json - name: Install openIMIS Python dependencies working-directory: ./openimis run: | pip install -r requirements.txt python modules-requirements.py openimis.json > modules-requirements.txt cat modules-requirements.txt pip install -r modules-requirements.txt - name: Environment info working-directory: ./openimis run: | pip list - name: Initialize DB run: | /opt/mssql-tools/bin/sqlcmd -S localhost,1433 -U SA -P $SA_PASSWORD -Q 'DROP DATABASE IF EXISTS imis' /opt/mssql-tools/bin/sqlcmd -S localhost,1433 -U SA -P $SA_PASSWORD -Q 'CREATE DATABASE imis' /opt/mssql-tools/bin/sqlcmd -S localhost,1433 -U SA -P $SA_PASSWORD -d imis -i sql/output/fullDemoDatabase.sql | grep . | uniq -c env: SA_PASSWORD: GitHub999 ACCEPT_EULA: Y # - name: Check formatting with black # run: | # black --check . - name: Django tests working-directory: ./openimis/openIMIS run: | export MODULE_NAME="$(echo $GITHUB_REPOSITORY | sed 's#^openimis/openimis-be-\(.*\)_py$#\1#')" python -V ls -l python manage.py migrate python init_test_db.py | grep . | uniq -c python manage.py test --keepdb $MODULE_NAME env: SECRET_KEY: secret DEBUG: true #DJANGO_SETTINGS_MODULE: hat.settings DB_HOST: localhost DB_PORT: 1433 DB_NAME: imis DB_USER: sa DB_PASSWORD: GitHub999 #DEV_SERVER: true SITE_ROOT: api REMOTE_USER_AUTHENTICATION: True

for the assembly

And for publishing front end on NPM based on release creation

this use an organization secret set up on the openimis github account, the token is from NPM account is “delcroip“ (to be changed)

 

And for publishing back end on pypi based on release creation

this use an organization secret set up on the openimis github account, the token is from PYPI account is “openimis“