|
@ -1,3 +1,16 @@ |
|
|
|
|
|
# Copyright 2020 IT Projects Labs |
|
|
|
|
|
# |
|
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
|
# you may not use this file except in compliance with the License. |
|
|
|
|
|
# You may obtain a copy of the License at |
|
|
|
|
|
# |
|
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0 |
|
|
|
|
|
# |
|
|
|
|
|
# Unless required by applicable law or agreed to in writing, software |
|
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS, |
|
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
|
|
|
|
# See the License for the specific language governing permissions and |
|
|
|
|
|
# limitations under the License. |
|
|
name: "DINAR" |
|
|
name: "DINAR" |
|
|
|
|
|
|
|
|
on: |
|
|
on: |
|
@ -6,6 +19,10 @@ on: |
|
|
jobs: |
|
|
jobs: |
|
|
pre-commit: |
|
|
pre-commit: |
|
|
name: "pre-commit" |
|
|
name: "pre-commit" |
|
|
|
|
|
# Let Quick Review/Tests run first |
|
|
|
|
|
needs: |
|
|
|
|
|
- review |
|
|
|
|
|
- tests |
|
|
runs-on: ubuntu-latest |
|
|
runs-on: ubuntu-latest |
|
|
steps: |
|
|
steps: |
|
|
- name: Checkout Repo |
|
|
- name: Checkout Repo |
|
@ -42,14 +59,14 @@ jobs: |
|
|
python-version: "3.7.x" |
|
|
python-version: "3.7.x" |
|
|
- name: Install python tools |
|
|
- name: Install python tools |
|
|
run: | |
|
|
run: | |
|
|
pip install plumbum PyGithub |
|
|
|
|
|
|
|
|
pip install plumbum PyGithub pyyaml |
|
|
- name: Analyze PR |
|
|
- name: Analyze PR |
|
|
run: | |
|
|
run: | |
|
|
# sets environment variables that available in next steps via $ {{ env.PR_... }} notation |
|
|
# sets environment variables that available in next steps via $ {{ env.PR_... }} notation |
|
|
cd REPO |
|
|
cd REPO |
|
|
python ../DINAR/workflow-files/analyze-pr.py ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ github.event.number }} |
|
|
|
|
|
|
|
|
python ../DINAR/workflow-files/analyze-modules.py updated ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ github.event.number }} |
|
|
- name: HOW TO RUN LOCALLY |
|
|
- name: HOW TO RUN LOCALLY |
|
|
#if: "env.PR_UPDATED_MODULES_INSTALLABLE != ''" |
|
|
|
|
|
|
|
|
#if: "env.PR_MODULES != ''" |
|
|
run: | |
|
|
run: | |
|
|
cat << 'EOF' |
|
|
cat << 'EOF' |
|
|
To test updates run: |
|
|
To test updates run: |
|
@ -68,7 +85,8 @@ jobs: |
|
|
git -C pr-files fetch origin $REVISION |
|
|
git -C pr-files fetch origin $REVISION |
|
|
git -C pr-files checkout FETCH_HEAD |
|
|
git -C pr-files checkout FETCH_HEAD |
|
|
docker-compose pull |
|
|
docker-compose pull |
|
|
export MODULES=${{ env.PR_UPDATED_MODULES_INSTALLABLE }} |
|
|
|
|
|
|
|
|
export MODULES=${{ env.PR_MODULES }} |
|
|
|
|
|
export LOAD_MODULES=${{ env.PR_MODULES_LOAD }} |
|
|
EOF |
|
|
EOF |
|
|
|
|
|
|
|
|
if [ "${{ github.event.pull_request.base.ref }}" == "10.0" ]; then |
|
|
if [ "${{ github.event.pull_request.base.ref }}" == "10.0" ]; then |
|
@ -92,3 +110,149 @@ jobs: |
|
|
EOF |
|
|
EOF |
|
|
# TODO: post this message when Github guys make access to post message in PR |
|
|
# TODO: post this message when Github guys make access to post message in PR |
|
|
#> Sent by [DINAR :construction_worker_man:](https://github.com/itpp-labs/DINAR) via `.github/workflows/DINAR-pr.yml` |
|
|
#> Sent by [DINAR :construction_worker_man:](https://github.com/itpp-labs/DINAR) via `.github/workflows/DINAR-pr.yml` |
|
|
|
|
|
- name: Check Python Version |
|
|
|
|
|
run: |
|
|
|
|
|
echo "::set-env name=PY::$(python --version --version | sha256sum | cut -d' ' |
|
|
|
|
|
-f1)" |
|
|
|
|
|
- uses: actions/cache@v1 |
|
|
|
|
|
with: |
|
|
|
|
|
path: ~/.cache/pre-commit |
|
|
|
|
|
key: pre-commit|${{ env.PY }}|${{ hashFiles('REPO/.pre-commit-config.yaml') }} |
|
|
|
|
|
- name: Install pre-commit |
|
|
|
|
|
run: | |
|
|
|
|
|
pip install pre-commit |
|
|
|
|
|
- name: PRE-COMMIT against updated files only |
|
|
|
|
|
run: | |
|
|
|
|
|
cd REPO |
|
|
|
|
|
git fetch origin ${{ github.event.pull_request.base.ref }} |
|
|
|
|
|
pre-commit run --show-diff-on-failure --color=always --origin HEAD --source origin/${{ github.event.pull_request.base.ref }} |
|
|
|
|
|
|
|
|
|
|
|
tests: |
|
|
|
|
|
name: "Quick Tests" |
|
|
|
|
|
runs-on: ubuntu-latest |
|
|
|
|
|
steps: |
|
|
|
|
|
- name: Checkout Repo |
|
|
|
|
|
uses: actions/checkout@v2 |
|
|
|
|
|
with: |
|
|
|
|
|
path: REPO |
|
|
|
|
|
- name: Checkout DINAR |
|
|
|
|
|
uses: actions/checkout@v2 |
|
|
|
|
|
with: |
|
|
|
|
|
path: DINAR |
|
|
|
|
|
repository: itpp-labs/DINAR |
|
|
|
|
|
ref: master # TODO: use fixed version |
|
|
|
|
|
- name: Configure docker |
|
|
|
|
|
run: | |
|
|
|
|
|
bash DINAR/workflow-files/configure-docker.sh ${{ secrets.DINAR_TOKEN }} |
|
|
|
|
|
- name: Install python tools |
|
|
|
|
|
run: | |
|
|
|
|
|
pip install plumbum PyGithub pyyaml |
|
|
|
|
|
- name: Download Docker images with preinstalled modules |
|
|
|
|
|
run: | |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml config |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml pull |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml up --no-start |
|
|
|
|
|
- name: Analyze PR |
|
|
|
|
|
run: | |
|
|
|
|
|
# Get list of installed modules |
|
|
|
|
|
ODOO_BASE_MODULES=$(docker inspect \ |
|
|
|
|
|
--format '{{ index .Config.Labels "dinar.odoo.modules"}}' \ |
|
|
|
|
|
dinar_odoo_1) |
|
|
|
|
|
|
|
|
|
|
|
# sets environment variables that available in next steps via $ {{ env.PR_... }} notation |
|
|
|
|
|
cd REPO |
|
|
|
|
|
python ../DINAR/workflow-files/analyze-modules.py updated ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ github.event.number }} $ODOO_BASE_MODULES |
|
|
|
|
|
- name: Install json parser |
|
|
|
|
|
run: | |
|
|
|
|
|
sudo apt-get install jq |
|
|
|
|
|
- name: Install Additional Dependencies (Modules) |
|
|
|
|
|
if: env.PR_MODULES_DEPS != '' |
|
|
|
|
|
run: | |
|
|
|
|
|
# Install new dependencies without tests |
|
|
|
|
|
export MODULES="${{ env.PR_MODULES_DEPS }}" |
|
|
|
|
|
export LOAD_MODULES="${{ env.PR_MODULES_LOAD }}" |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml config |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml up --abort-on-container-exit |
|
|
|
|
|
- name: Install Additional Dependencies (Packages) |
|
|
|
|
|
if: env.PR_DEPS != '' |
|
|
|
|
|
run: | |
|
|
|
|
|
# TODO https://github.com/itpp-labs/DINAR/issues/42 |
|
|
|
|
|
exit 1 |
|
|
|
|
|
- name: Prepare DINAR with additional dependencies |
|
|
|
|
|
if: env.PR_MODULES_DEPS != '' || env.PR_DEPS != '' |
|
|
|
|
|
run: | |
|
|
|
|
|
# Save artifacts for local run and for integrations Tests |
|
|
|
|
|
bash DINAR/workflow-files/save-docker-layers.sh new-deps/ |
|
|
|
|
|
echo $MODULES > new-deps/modules.txt |
|
|
|
|
|
- name: Save DINAR with dependencies |
|
|
|
|
|
if: env.PR_MODULES_DEPS != '' || env.PR_DEPS != '' |
|
|
|
|
|
uses: actions/upload-artifact@v1 |
|
|
|
|
|
with: |
|
|
|
|
|
name: new-deps |
|
|
|
|
|
path: new-deps/ |
|
|
|
|
|
- name: Test updated modules |
|
|
|
|
|
if: env.PR_MODULES != '' |
|
|
|
|
|
run: | |
|
|
|
|
|
export MODULES="${{ env.PR_MODULES }}" |
|
|
|
|
|
export LOAD_MODULES="${{ env.PR_MODULES_LOAD }}" |
|
|
|
|
|
export ODOO_EXTRA_ARG=--test-enable |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml config |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml up --abort-on-container-exit |
|
|
|
|
|
|
|
|
|
|
|
tests-all: |
|
|
|
|
|
name: Integration Tests |
|
|
|
|
|
# Let Quick Review/Tests run first |
|
|
|
|
|
# This job uses artifacts from "Quick Tests" |
|
|
|
|
|
needs: |
|
|
|
|
|
- tests |
|
|
|
|
|
- review |
|
|
|
|
|
runs-on: ubuntu-latest |
|
|
|
|
|
steps: |
|
|
|
|
|
- name: Checkout Repo |
|
|
|
|
|
uses: actions/checkout@v2 |
|
|
|
|
|
with: |
|
|
|
|
|
path: REPO |
|
|
|
|
|
- name: Checkout DINAR |
|
|
|
|
|
uses: actions/checkout@v2 |
|
|
|
|
|
with: |
|
|
|
|
|
path: DINAR |
|
|
|
|
|
repository: itpp-labs/DINAR |
|
|
|
|
|
ref: master # TODO: use fixed version |
|
|
|
|
|
- name: Install python tools |
|
|
|
|
|
run: | |
|
|
|
|
|
pip install plumbum pyyaml |
|
|
|
|
|
- name: Download Additional Dependencies artifact |
|
|
|
|
|
uses: actions/download-artifact@v1 |
|
|
|
|
|
with: |
|
|
|
|
|
name: new-deps |
|
|
|
|
|
path: new-deps/ |
|
|
|
|
|
- name: Check artifact |
|
|
|
|
|
if: failure() |
|
|
|
|
|
run: | |
|
|
|
|
|
echo "::set-env name=ARTIFACT::0" |
|
|
|
|
|
- name: Configure Docker |
|
|
|
|
|
run: | |
|
|
|
|
|
bash DINAR/workflow-files/configure-docker.sh ${{ secrets.DINAR_TOKEN }} |
|
|
|
|
|
- name: Analyze PR |
|
|
|
|
|
run: | |
|
|
|
|
|
# sets environment variables that available in next steps via $ {{ env.PR_... }} notation |
|
|
|
|
|
DEPS_MODULES=$(cat new-deps/modules.txt || true) |
|
|
|
|
|
cd REPO |
|
|
|
|
|
python ../DINAR/workflow-files/analyze-modules.py all "$DEPS_MODULES" |
|
|
|
|
|
- name: Download base images |
|
|
|
|
|
run: | |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml config |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml pull |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml up --no-start |
|
|
|
|
|
- name: Apply new-deps artifact |
|
|
|
|
|
if: env.ARTIFACT != '0' |
|
|
|
|
|
run: | |
|
|
|
|
|
bash DINAR/workflow-files/load-docker-layers.sh new-deps/ |
|
|
|
|
|
|
|
|
|
|
|
- name: Test all modules |
|
|
|
|
|
run: | |
|
|
|
|
|
export MODULES="${{ env.ALL_MODULES }}" |
|
|
|
|
|
export LOAD_MODULES="${{ env.ALL_MODULES_LOAD }}" |
|
|
|
|
|
export ODOO_EXTRA_ARG=--test-enable |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml config |
|
|
|
|
|
docker-compose -p DINAR -f DINAR/workflow-files/docker-compose-DINAR-pr.yml up --abort-on-container-exit |