You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
5.6 KiB
147 lines
5.6 KiB
# 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: "Port module"
|
|
|
|
on:
|
|
issues:
|
|
types:
|
|
- opened
|
|
- reopened
|
|
|
|
jobs:
|
|
port:
|
|
runs-on: ubuntu-latest
|
|
if: "startsWith(github.event.issue.title, 'DINAR-PORT ')"
|
|
steps:
|
|
- name: Post link
|
|
uses: KeisukeYamashita/create-comment@v1
|
|
with:
|
|
comment:
|
|
"Porting is started. Check logs: https://github.com/${{ github.repository
|
|
}}/actions/runs/${{ github.run_id }}"
|
|
- name: Checkout DINAR
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: DINAR
|
|
repository: itpp-labs/DINAR-fork
|
|
ref: master
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: "3.7.x"
|
|
- name: Install python tools
|
|
run: |
|
|
pip install plumbum pre-commit git-aggregator
|
|
- name: Check Python Version
|
|
run:
|
|
echo "PY=$(python --version --version | sha256sum | cut -d' ' -f1)" >>
|
|
$GITHUB_ENV
|
|
- name: Analyze request
|
|
run: |
|
|
# sets environment variables that available in next steps via $ {{ env.PORT_... }} notation
|
|
python DINAR/workflow-files/analyze_port_trigger.py "${{ github.event.issue.title }}"
|
|
- name: Checkout Repo
|
|
uses: actions/checkout@v2
|
|
with:
|
|
path: REPO
|
|
fetch-depth: 0
|
|
ref: ${{ env.PORT_TO_BRANCH }}
|
|
- uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cache/pre-commit
|
|
key: pre-commit|${{ env.PY }}|${{ hashFiles('REPO/.pre-commit-config.yaml') }}
|
|
- name: Copy module to new branch
|
|
run: |
|
|
git config --global user.email "itpp-bot@users.noreply.github.com"
|
|
git config --global user.name "Mitchell Admin"
|
|
cd REPO
|
|
if [ ! -d ${{ env.PORT_MODULE }} ]
|
|
then
|
|
# apply original commit history
|
|
if ! git format-patch --keep-subject --stdout origin/${{ env.PORT_TO_BRANCH }}..origin/${{ env.PORT_FROM_BRANCH }} -- ${{ env.PORT_MODULE }} | git am -3 --keep
|
|
then
|
|
# git am failed
|
|
git am --abort
|
|
|
|
# just copy source
|
|
git checkout origin/${{ env.PORT_FROM_BRANCH }} -- ${{ env.PORT_MODULE }}
|
|
git commit -m ":tada:${{ env.PORT_FROM_BRANCH_TAGS }} ${{ env.PORT_MODULE }}
|
|
previous commits history: https://github.com/${{ github.repository }}/commits/${{ env.PORT_FROM_BRANCH }}/ir_rule_protected
|
|
|
|
> Made via .github/workflows/DINAR-PORT.yml"
|
|
fi
|
|
fi
|
|
- name: make OCA/odoo-module-migrator
|
|
run: |
|
|
gitaggregate -c DINAR/workflow-files/odoo-module-migrator-mix.yml
|
|
pip install -e ./odoo-module-migrator
|
|
- name: apply OCA/odoo-module-migrator
|
|
run: |
|
|
LOG_FILE=../odoo-module-migrator.logs
|
|
cd REPO
|
|
odoo-module-migrate \
|
|
--modules ${{ env.PORT_MODULE }} \
|
|
--init-version-name ${{ env.PORT_FROM_BRANCH }} \
|
|
--target-version-name ${{ env.PORT_TO_BRANCH }} \
|
|
--no-commit \
|
|
2> $LOG_FILE || true
|
|
cat $LOG_FILE
|
|
|
|
# TMP: run pre-commit agains xml files only. See https://github.com/OCA/odoo-module-migrator/pull/38#pullrequestreview-558886327
|
|
pre-commit run --files $(find ${{ env.PORT_MODULE }} -type f -iname "*.xml") || true
|
|
|
|
# remove colors
|
|
sed -r -i "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" $LOG_FILE
|
|
# escape character
|
|
# TODO: update KeisukeYamashita/create-comment to support reading comment's body from file
|
|
body=$(cat $LOG_FILE)
|
|
body="${body//'%'/'%25'}"
|
|
body="${body//$'\n'/'%0A'}"
|
|
body="${body//$'\r'/'%0D'}"
|
|
echo "MIGRATOR_LOGS=$body" >> $GITHUB_ENV
|
|
|
|
git add -A
|
|
git commit -m ":arrow_up:${{ env.PORT_TO_BRANCH_TAGS }} OCA/odoo-module-migrator
|
|
|
|
close #${{ github.event.issue.number }}
|
|
|
|
> Made via .github/workflows/DINAR-PORT.yml"
|
|
- name: pre-commit
|
|
run: |
|
|
cd REPO
|
|
pre-commit run --files $(find ${{ env.PORT_MODULE }} -type f) || true
|
|
git add -A
|
|
git commit -m ":rainbow: pre-commit
|
|
> Made via .github/workflows/DINAR-PORT.yml" || echo "pre-commit: no changes"
|
|
- name: PR
|
|
uses: peter-evans/create-pull-request@v3
|
|
id: cpr
|
|
with:
|
|
path: REPO
|
|
# GITHUB_TOKEN would not trigger PR checks
|
|
token: ${{ secrets.DINAR_TOKEN }}
|
|
branch: ${{ env.PORT_TO_BRANCH }}-${{ env.PORT_MODULE }}
|
|
title: "[${{ env.PORT_TO_BRANCH }}] ${{ env.PORT_MODULE }}"
|
|
body: |
|
|
Made by [DINAR](https://github.com/itpp-labs/DINAR#readme) by request in #${{ github.event.issue.number }}
|
|
- name: Post logs
|
|
uses: KeisukeYamashita/create-comment@v1
|
|
with:
|
|
number: ${{ steps.cpr.outputs.pull-request-number }}
|
|
comment: |
|
|
[Migrator](https://github.com/OCA/odoo-module-migrator/)'s [logs](https://github.com/${{ github.repository
|
|
}}/actions/runs/${{ github.run_id }}):
|
|
|
|
```
|
|
${{ env.MIGRATOR_LOGS }}
|
|
```
|