Skip to content

[16.0][MIG] l10n_do_rnc_validation: v16 migration #469

[16.0][MIG] l10n_do_rnc_validation: v16 migration

[16.0][MIG] l10n_do_rnc_validation: v16 migration #469

Workflow file for this run

name: Unit Tests
on:
push:
branches:
- '[0-9]+.0'
paths:
- '**/workflows/**'
- '**/src/**'
- '**/i18n/**'
- '**.py'
- '**.xml'
pull_request:
branches:
- '[0-9]+.0'
env:
REQUIRED_MODULES: 'session_redis' # list of addional addons to install separated by comma
TEST_TAGS: '0'
jobs:
test:
name: Test Modules
runs-on: ubuntu-latest
outputs:
get_modules: ${{ steps.get_modules.outputs.modules }}
services:
db:
image: postgres:13-alpine
env:
POSTGRES_DB: postgres
POSTGRES_USER: odoo
POSTGRES_PASSWORD: odoo
# needed because the postgres container does not provide a healthcheck
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- name: Inject slug/short variables
uses: rlespinasse/[email protected]
- name: INDEXA ${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}
uses: actions/checkout@v3
with:
path: ${{ env.GITHUB_REPOSITORY_SLUG_URL }}
- name: Download python addons script
run: curl https://raw.githubusercontent.com/iterativo-git/dockerdoo/${{ env.GITHUB_BASE_REF_SLUG || env.GITHUB_REF_SLUG }}/resources/getaddons.py -o getaddons.py
- name: CamptoCamp odoo-cloud-platform
uses: actions/checkout@v3
with:
repository: camptocamp/odoo-cloud-platform
path: odoo-cloud-platform
ref: '${{ env.GITHUB_BASE_REF_SLUG || env.GITHUB_REF_SLUG }}'
- name: Odoo Enterprise
uses: actions/checkout@v3
with:
repository: odoo/enterprise
token: ${{ secrets.ACTIONS_PAT }}
path: enterprise
ref: '${{ env.GITHUB_BASE_REF_SLUG || env.GITHUB_REF_SLUG }}'
- name: INDEXA l10n-dominicana
uses: actions/checkout@v3
with:
repository: indexa-git/l10n-dominicana
path: l10n-dominicana
# TODO change this to ${{ env.GITHUB_BASE_REF_SLUG || env.GITHUB_REF_SLUG }}
ref: '15.0-mig'
- name: Select Odoo modules to install
id: get_modules
run: |
output=$(python -c "from getaddons import get_modules; print(','.join(get_modules('$GITHUB_WORKSPACE/${{ env.GITHUB_REPOSITORY_SLUG_URL }}', depth=3)))")
echo $output
echo "::set-output name=modules::$output"
- name: Set test all tag
if: ${{ github.event.label.name == 'test all' }}
run: |
echo "WITHOUT_TEST_TAGS=1" >> $GITHUB_ENV
- name: Run Odoo tests
run: |
docker pull gcr.io/iterativo/dockerdoo:${{ env.GITHUB_BASE_REF_SLUG || env.GITHUB_REF_SLUG }}
docker run -e RUN_TESTS -e WITHOUT_TEST_TAGS -e PIP_AUTO_INSTALL -e LOG_LEVEL -e WITHOUT_DEMO -e EXTRA_MODULES -e ODOO_EXTRA_ADDONS -e PGHOST \
-v $GITHUB_WORKSPACE:/github/workspace \
--network="host" --name odoo -t gcr.io/iterativo/dockerdoo:${{ env.GITHUB_BASE_REF_SLUG || env.GITHUB_REF_SLUG }}
env:
RUN_TESTS: '1'
WITHOUT_TEST_TAGS: ${{ env.WITHOUT_TEST_TAGS }}
PIP_AUTO_INSTALL: '1'
LOG_LEVEL: test
WITHOUT_DEMO: 'False'
EXTRA_MODULES: ${{ steps.get_modules.outputs.modules }},${{ env.REQUIRED_MODULES }}
ODOO_EXTRA_ADDONS: /github/workspace
PGHOST: localhost
- name: Zip modules for upload
run: sudo apt-get update && sudo apt-get install -y zip && zip -r modules.zip .
- name: Upload repository results
uses: actions/upload-artifact@v2
with:
name: modules
path: modules.zip
retention-days: 1
build-gcp:
name: Build & Push to GCR
needs: ['test']
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' }}
steps:
- name: Download repository results
uses: actions/download-artifact@v2
with:
name: modules
- run: unzip modules.zip
- name: Inject slug/short variables
uses: rlespinasse/[email protected]
- name: Push to Google Cloud Registry
uses: docker/build-push-action@v1
with:
dockerfile: ${{ env.GITHUB_REPOSITORY_SLUG_URL }}/Dockerfile
cache_froms: docker.pkg.github.com/${{ github.repository }}/${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}:${{ env.GITHUB_HEAD_REF_SLUG_URL }}
username: _json_key
password: ${{ secrets.GKE_SA_KEY }}
registry: gcr.io
repository: ${{ secrets.GKE_PROJECT }}/${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}
tags: ${{ env.GITHUB_SHA_SHORT }}
deploy:
name: GKE Deploy
needs: ['test', 'build-gcp']
runs-on: ubuntu-latest
env:
PROJECT_ID: ${{ secrets.GKE_PROJECT }}
GKE_CLUSTER: ${{ secrets.GKE_CLUSTER }}
GKE_ZONE: ${{ secrets.GKE_ZONE }}
if: ${{ github.event_name == 'pull_request' }}
continue-on-error: true
steps:
- name: Inject slug/short variables
uses: rlespinasse/[email protected]
- name: K8s Template
uses: actions/checkout@v3
with:
repository: indexa-git/gke-dev-cluster.git
path: gke-dev-cluster
token: ${{ secrets.ACTIONS_PAT }}
ref: master
- name: Set up Kustomize
run: |
curl -sfLo kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v3.1.0/kustomize_3.1.0_linux_amd64
chmod u+x ./kustomize
./kustomize build gke-dev-cluster/deployments/odoo/${{ env.GITHUB_BASE_REF_SLUG || env.GITHUB_REF_SLUG }}/dev -o deployment.yaml.tmpl
- name: Render Deployment YAML
uses: nowactions/envsubst@v1
with:
input: ./deployment.yaml.tmpl
output: ./deployment.yaml
env:
ENV: dev
GKE_LOCATION: ${{ secrets.GKE_PROJECT }}
# Modules to Install
EXTRA_MODULES: ${{ needs.test.outputs.get_modules }},${{ env.REQUIRED_MODULES }}
# Image to Deploy
PROJECT_ID: ${{ secrets.GKE_PROJECT }}
REPO_NAME: ${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}
BRANCH_NAME: ${{ env.GITHUB_SHA_SHORT }}
# URL to acccess
REPO_URL: ${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}
BRANCH_URL: ${{ env.GITHUB_HEAD_REF_SLUG_URL }}
SHORT_SHA: ${{ env.GITHUB_SHA_SHORT }}
- run: cat deployment.yaml
- name: Upload deployment
uses: actions/upload-artifact@v2
with:
name: deployment
path: deployment.yaml
retention-days: 10
- name: Setup gcloud CLI
uses: google-github-actions/setup-gcloud@main
with:
service_account_key: ${{ secrets.GKE_SA_KEY }}
project_id: ${{ secrets.GKE_PROJECT }}
# Configure Docker to use the gcloud command-line tool as a credential
# helper for authentication
- name: Get Cluster & Docker credentials
run: |
gcloud container clusters get-credentials "$GKE_CLUSTER" --zone "$GKE_ZONE" --project "$PROJECT_ID"
gcloud --quiet auth configure-docker
# Deploy the Docker image to the GKE cluster
- name: Deploy
run: |
kubectl apply -f deployment.yaml
url=$(echo "${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}-${{ env.GITHUB_HEAD_REF_SLUG_URL }}.indexa.do")
echo "$url" > url.txt
- name: Upload repository results
uses: actions/upload-artifact@v2
with:
name: ${{ env.GITHUB_REPOSITORY_NAME_PART_SLUG_URL }}-${{ env.GITHUB_HEAD_REF_SLUG_URL }}.indexa.do
path: url.txt