From 803f4ad22f266df360fed582520d3b607cad605a Mon Sep 17 00:00:00 2001 From: Andy Gee Date: Tue, 14 Sep 2021 14:05:03 -0700 Subject: [PATCH] add example azure devops pipeline and documentation (#353) Co-authored-by: Andy Gee --- azure-devops-pipeline.yaml | 147 ++++++++++++++++++ .../postgresql/postgresql_test_init.sql | 5 + docs/azure_devops_pipeline.md | 126 +++++++++++++++ docs/azure_devops_pipeline_config_1.png | Bin 0 -> 6561 bytes docs/azure_devops_pipeline_config_2.png | Bin 0 -> 28706 bytes docs/azure_devops_pipeline_config_3.png | Bin 0 -> 22416 bytes 6 files changed, 278 insertions(+) create mode 100644 azure-devops-pipeline.yaml create mode 100644 docs/azure_devops_pipeline.md create mode 100644 docs/azure_devops_pipeline_config_1.png create mode 100644 docs/azure_devops_pipeline_config_2.png create mode 100644 docs/azure_devops_pipeline_config_3.png diff --git a/azure-devops-pipeline.yaml b/azure-devops-pipeline.yaml new file mode 100644 index 000000000..f5c8fb996 --- /dev/null +++ b/azure-devops-pipeline.yaml @@ -0,0 +1,147 @@ +trigger: + branches: + include: + - master +variables: + - name: SP_CLIENT_ID + value: "MY_AZ_SP_CLIENT_ID" + - name: SP_CLIENT_PASS + value: "MY_AZ_SP_CLIENT_PASS" + - name: TENANT_ID + value: "MY_AZ_TENANT_ID" + - name: ACR_NAME + value: "myacrname" + - name: LOCAL_TEST_POSTGRESQL_USERNAME + value: test + - name: LOCAL_TEST_POSTGRESQL_PASSWORD + value: test + - name: LOCAL_POSTGRESQL_USERNAME + value: postgres + - name: LOCAL_POSTGRESQL_PASSWORD + value: test + - name: LOCAL_POSTGRESQL_PORT + value: 5433 +stages: + - stage: build + jobs: + - job: run_build_push_acr + pool: + vmImage: ubuntu-latest + steps: + - script: |- + sudo apt-get update + sudo apt-get install python3 + displayName: Install Python 3 + + - script: |- + python3 -m venv py38-venv + displayName: Create Python Virtual Environment + + - script: |- + # install psql + sudo apt install postgresql-client-common + sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' + wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - + sudo apt-get update + sudo apt-get install postgresql-12 + sudo pg_ctlcluster 12 main start + + # wait for psql to be ready + tail /var/log/postgresql/postgresql-12-main.log | sed '/^database system is ready to accept connections$/ q' + + # run psql scripts to initialize db + curDir=$(pwd) + ls "${curDir}/deployment/scripts/postgresql/postgresql_test_init.sql" + sudo -u postgres psql -f "${curDir}/deployment/scripts/postgresql/postgresql_test_init.sql" -p "$(LOCAL_POSTGRESQL_PORT)" + + # setup root user + sudo -u postgres psql -c "ALTER USER $(LOCAL_POSTGRESQL_USERNAME) WITH PASSWORD '$(LOCAL_POSTGRESQL_PASSWORD)';" -p "$(LOCAL_POSTGRESQL_PORT)" + displayName: Setup Local Postgresql for Testing + + - script: |- + . py38-venv/bin/activate + python3 -m pip install --upgrade pip + + export CRYPTOGRAPHY_DONT_BUILD_RUST=1 + python3 -m pip install -r requirements.txt + python3 setup.py develop + python3 -m pip install -r dev-requirements.txt + + # if you make changes in the /bin scripts then make sure to re-install + python3 setup.py build + python3 setup.py install + displayName: Install Sheepdog Dependencies + + - script: |- + . py38-venv/bin/activate + + python3 bin/setup_test_database.py --database "sheepdog_automated_test" --root_user $(LOCAL_POSTGRESQL_USERNAME) --root_password $(LOCAL_POSTGRESQL_PASSWORD) --user $(LOCAL_TEST_POSTGRESQL_USERNAME) --password $(LOCAL_TEST_POSTGRESQL_PASSWORD) --port $(LOCAL_POSTGRESQL_PORT) + mkdir -p tests/integration/resources/keys; cd tests/integration/resources/keys; openssl genrsa -out test_private_key.pem 2048; openssl rsa -in test_private_key.pem -pubout -out test_public_key.pem; cd - + displayName: Setup Test Environment + + - script: |- + . py38-venv/bin/activate + py.test -vv --cov=sheepdog --cov-report xml --junitxml="test-results-datadict.xml" tests/integration/datadict + py.test -vv --cov=sheepdog --cov-report xml --cov-append --junitxml="test-results-datadictwithobjid.xml" tests/integration/datadictwithobjid + py.test -vv --cov=sheepdog --cov-report xml --cov-append --junitxml="test-results-unit.xml" tests/unit + displayName: Run Sheepdog Test Suite + env: + PGPORT: $(LOCAL_POSTGRESQL_PORT) + + - script: |- + . py38-venv/bin/activate + python3 -m pip install junitparser + + # Use script to merge together test results + # https://pypi.org/project/junitparser/ + eval $(python 2> /dev/null < +``` + +You can create a **service principal** in Azure AD: + +```bash +spObject=$(az ad sp create-for-rbac --name ServicePrincipalName) + +# this can be used for the SP_CLIENT_ID +spClientId=$(echo $spObject | jq -r ".appId") + +# this can be used for the SP_CLIENT_PASSWORD +spPassword=$(echo $spObject | jq -r ".password") + +# this can be used for the TENANT_ID +spTenantId=$(echo $spObject | jq -r ".tenant") +``` + +> You will need to have appropriate permissions in the AAD directory. If you don't have access, please work with your Azure Subscription administrator to obtain a Service Principal. + +You can also create an **Azure Container Registry** using [azure cli](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-azure-cli) or the [portal](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-portal). + +You can use the following `az` cli commands in `bash` for reference: + +```bash +az group create --name myResourceGroup --location eastus +az acr create --resource-group myResourceGroup --name myContainerRegistry --sku Basic +``` + +Also, make sure that the **Service Principal** has rights to the [Azure Container Registry](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-roles?tabs=azure-cli) to **acrPull** and **acrPush**. + +```bash +acrResourceId="$(az acr show -n myContainerRegistry -g myResourceGroup --query "id" -o tsv)" + +az role assignment create --assignee $spClientId --role 'AcrPull' --scope $acrResourceId + +az role assignment create --assignee $spClientId --role 'AcrPush' --scope $acrResourceId +``` + +To verify if the pipeline context will have access to ACR, you can login. + +> Note, this is an approach for dev / test, but in a production scenario, it is more likely that your SP Credentials used in the Azure DevOps Pipeline would be populated as secrets through variables or Variable Groups. + +```bash +az login --service-principal --username "$spClientId" --password "$spPassword" --tenant "$spTenantId" + +az acr login --name myContainerRegistry +``` + +You can also verify that this service principal will have `ACRPush` and `ACRPull` permission with ACR, which you can check how the [getting started with docker guide](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-docker-cli?tabs=azure-cli) for more details. + +First, pull and tag an image: + +```bash +docker pull mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine + +docker tag mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine mycontainerregistry.azurecr.io/samples/nginx +``` + +> Note that the ACR names will default to **lowercase** for the `fqdn`, so make sure that when you're tagging images to use **lowercase** for the ACR name. + +Check that you can push an image to ACR: + +```bash +docker push mycontainerregistry.azurecr.io/samples/nginx +``` + +Check that you can pull an image from ACR: + +```bash +docker pull mycontainerregistry.azurecr.io/samples/nginx +``` + +You can also list out the images in the ACR with `az` cli: + +```bash +az acr repository list --name mycontainerregistry +``` + +## Configuring the Pipeline + +You can set the variables on your **Azure DevOps pipeline**. + +First, make sure you have already [imported your Azure DevOps Pipeline](https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started/clone-import-pipeline?view=azure-devops&tabs=yaml#export-and-import-a-pipeline). + +Click on the pipeline and then click edit, which will let you update the variables in the Azure DevOps pipeline: + +![Click on Variables](azure_devops_pipeline_config_1.png) + +Variable Name | Description +------ | ------ +SP_CLIENT_ID | This is your Service Principal Client ID. +SP_CLIENT_PASS | This is your Service Principal Password. You can override this value when running the Azure DevOps pipeline. +TENANT_ID | This is the Azure AD tenant ID where the SP and the ACR reside. +ACR_NAME | This is the Azure Container Registry name. Note, it is not the **FQDN** (e.g. `myacrname` instead of `myacrname.azurecr.io`). +LOCAL_TEST_POSTGRESQL_USERNAME | Automated Test Username for the local `PostgreSQL` in the pipeline for running the `sheepdog` test suite. Default value is `test`. +LOCAL_TEST_POSTGRESQL_PASSWORD | Automated Test Password for the local `PostgreSQL` in the pipeline for running the `sheepdog` test suite. Default value is `test`. +LOCAL_POSTGRESQL_USERNAME | Username in `PostgreSQL`, and used to setup PostgreSQL schema in the pipeline for running the `sheepdog` test suite. Default value is `postgres`. +LOCAL_POSTGRESQL_PASSWORD | Password for the user in `PostgreSQL` used to setup PostgreSQL schema in the pipeline for running the `sheepdog` test suite. Default value is `test`. +LOCAL_POSTGRESQL_PORT | This is the Local PostgreSQL Port number. The default port for a `PostgreSQL` server is `5432`, but you can change this to another port in case this port is already in use on the host. For example you can use `5433`. + +After updating the variables, be sure to click **save**: + +![Save updated variables](azure_devops_pipeline_config_2.png) + +You can run the pipeline to validate the `sheepdog` build and push to ACR. + +![Run the pipeline](azure_devops_pipeline_config_3.png) \ No newline at end of file diff --git a/docs/azure_devops_pipeline_config_1.png b/docs/azure_devops_pipeline_config_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c58396ce890509c43e0bc4235b547b8adfbd4a3d GIT binary patch literal 6561 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 Qx_&c`7?|qQ4mw=?509s8+5i9m literal 0 HcmV?d00001 diff --git a/docs/azure_devops_pipeline_config_3.png b/docs/azure_devops_pipeline_config_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3057e847e5d2bb974742a9280375e06db919a1 GIT binary patch literal 22416 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 literal 0 HcmV?d00001