2.9. Using Pyarmor in CI Pipeline
Trial Version could be used in CI/CD pipeline by one step:
pip install pyarmor
For Pyarmor Basic and Pyarmor CI License
Refer to Initial registration, first got registration file like
pyarmor-regfile-xxxx.zip
In local device run the following command to request one CI regfile
pyarmor-ci-xxxx.zip
:$ pyarmor reg -C pyarmor-regfile-xxxx.zip
Check CI license info in local machine:
$ pyarmor --home temp reg pyarmor-ci-xxxx.zip
In CI/CD pipeline, add 2 steps to register Pyarmor by CI regfile:
# Please replace "9.X.Y" with current Pyarmor version pip install pyarmor=9.X.Y pyarmor reg pyarmor-ci-xxxx.zip
Check registration information in CI/CD pipeline:
pyarmor -v
Notes
Do not request CI regfile in CI/CD pipeline
CI regfile
pyarmor-ci-xxxx.zip
will be expired about in 360 daysCI regfile may not work in future Pyarmor version
Once CI regfile doesn’t work, require new one
One license can request <= 100 CI regfiles
Important
In CI/CD pipeline, each run will send license and docker information to Pyarmor License Server, excessive requests or requests beyond normal usage may be rejected by Pyarmor License Server
It’s not allowed to install Pyarmor in your customer’s docker image
Pyarmor Pro and Pyarmor Group License can’t be used in CI/CD pipeline directly, but there is one workaround
First obfuscate the scripts in local device and store them to another branch like master-obf
Then in CI/CD pipeline to check this new branch
Here is an example, suppose test-project locates at https://github.com/dashingsoft/test-project, the directory tree as follows:
$ tree test-project
test-project
└── src
├── main.py
├── utils.py
└── parent
├── child
│ └── __init__.py
└── __init__.py
In local device the scripts are obfuscated and are stored into another branch:
$ git clone https://github.com/dashingsoft/test-project
$ pip install pyarmor
$ pyarmor reg /path/to/pyarmor-regfile-5068.zip
# Create new branch
$ git checkout -B master-obf
# Create output path "dist" link to project path
$ ln -s test-project dist
# Obfuscate the script to "dist", which is same as "test-project"
# So "dist/src/main.py" is same as "test-project/src/main.py"
$ pyarmor gen -O dist -r --platform windows.x86_64,linux.x86_64,darwin.x86_64 test_project/src
# Add runtime package to this branch
$ git add -f test_project/pyarmor_runtime_5068/*
# Commit the results
$ git commit -m'Build obfuscated scripts' .
# Push new branch to remote server
$ git push -u origin master-obf
In CI/CD pipeline, it need not install Pyarmor, just checkout branch master-obf, and work as before.