Skip to content

Commit c1b65d2

Browse files
authored
Merge pull request #14 from utPLSQL/azure-pipelines
Azure pipelines
2 parents 988eb4e + 214ade8 commit c1b65d2

File tree

7 files changed

+288
-0
lines changed

7 files changed

+288
-0
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
parameters:
2+
- name: containerRegistry
3+
default: "utPLSQL-docker"
4+
- name: dockerRepo
5+
default: "gvenzl/oracle-xe"
6+
- name: utplsqlVersion
7+
default: ""
8+
- name: utplsqlDir
9+
default: ""
10+
- name: test_user
11+
default: ""
12+
- name: test_pwd
13+
default: ""
14+
- name: targetDatabases
15+
type: object
16+
default:
17+
- name: oracleVersion
18+
default: ""
19+
- name: dockerOptions
20+
type: string
21+
default: "--shm-size=1g"
22+
- name: dockerPortMap
23+
type: string
24+
default: "1521"
25+
- name: connectionString
26+
default: ""
27+
- name: scripts
28+
type: object
29+
default:
30+
- name: work_dir
31+
default: ""
32+
- name: user
33+
default: ""
34+
- name: password
35+
default: ""
36+
- name: script
37+
default: ""
38+
- name: displayName
39+
default: ""
40+
41+
42+
steps:
43+
- bash: |
44+
git clone --depth=1 --branch=${{ parameters.utplsqlVersion }} https://github.com/utPLSQL/utPLSQL.git ${{ parameters.utplsqlDir}}
45+
chmod -R go+w ${{ parameters.utplsqlDir}}
46+
displayName: 'Download utPLSQL'
47+
48+
- task: Docker@2
49+
displayName: Docker Login
50+
inputs:
51+
containerRegistry: ${{ parameters.containerRegistry }}
52+
command: 'login'
53+
addPipelineData: false
54+
addBaseImageData: false
55+
56+
- ${{ each trg_db in parameters.targetDatabases }}:
57+
- bash: |
58+
# download Oracle Database docker image from private repo and start the DB
59+
time docker pull ${{ parameters.dockerRepo }}:${{ trg_db.oracleVersion }}
60+
# start the docker container (DB)
61+
time docker run -d --name ${{ trg_db.oracleVersion }} ${{ trg_db.dockerOptions }} -p 1521:${{ trg_db.dockerPortMap }} ${{ parameters.dockerRepo }}:${{ trg_db.oracleVersion }}
62+
# Wait for DB startup
63+
time docker logs -f ${{ trg_db.oracleVersion }} | grep -m 1 "DATABASE IS READY TO USE!" --line-buffered
64+
displayName: 'Start Oracle DB Docker container: ${{ trg_db.oracleVersion }}'
65+
66+
- ${{ each script in trg_db.scripts }}:
67+
- template: t-extend-sqlcl.yml
68+
parameters:
69+
work_dir: ${{ script.work_dir}}
70+
user: ${{ script.user}}
71+
password: ${{ script.password}}
72+
connectionString: ${{ trg_db.connectionString}}
73+
script: ${{ script.script}}
74+
displayName: ${{ script.displayName}}
75+
76+
- template: t-extend-utplsqlcli.yml
77+
parameters:
78+
work_dir: $(Build.SourcesDirectory)
79+
connectionString: ${{ trg_db.connectionString}}
80+
test_user: ${{ parameters.test_user }}
81+
test_pwd: ${{ parameters.test_pwd }}
82+
source_path: "source"
83+
test_path: "test"
84+
options: "--debug --failure-exit-code=0"
85+
86+
- task: PublishTestResults@2
87+
inputs:
88+
testResultsFormat: 'JUnit'
89+
testResultsFiles: '**/junit_test_results.xml'
90+
testRunTitle: 'Publish test results'
91+
displayName: 'Publish test results'
92+
93+
- task: PublishCodeCoverageResults@1
94+
inputs:
95+
codeCoverageTool: 'Cobertura'
96+
summaryFileLocation: 'cobertura.xml'
97+
pathToSources: 'source'
98+
displayName: 'Publish coverage'
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
parameters:
2+
- name: enableDownload
3+
type: boolean
4+
default: true
5+
- name: packages
6+
type: object
7+
default:
8+
- name: name
9+
default: ""
10+
- name: download_location
11+
default: ""
12+
- name: unpack_location
13+
default: "$(Build.BinariesDirectory)"
14+
- name: url
15+
default: ""
16+
- name: archive
17+
default: "zip"
18+
- name: addToPath
19+
default: ""
20+
- name: clean
21+
type: boolean
22+
default: true
23+
24+
steps:
25+
- ${{ each package in parameters.packages }}:
26+
- bash: |
27+
curl -Lk -o ${{package.download_location}} \
28+
${{package.url}}
29+
displayName: 'Download ${{package.name}}'
30+
31+
- ${{ if eq(package.archive,'zip') }}:
32+
- bash: |
33+
echo Unzipping to ${{package.unpack_location}}
34+
unzip -qq -d ${{package.unpack_location}} ${{package.download_location}}
35+
chmod -R u+x ${{package.unpack_location}}
36+
displayName: 'Unzip ${{package.name}}'
37+
38+
- ${{ if package.addToPath }}:
39+
- bash: |
40+
echo "##vso[task.prependpath]${{package.addToPath}}"
41+
displayName: 'Add To path ${{package.name}}'
42+
43+
- ${{ if coalesce(package.clean,true) }}:
44+
- bash: |
45+
rm -rf ${{package.download_location}}
46+
displayName: 'Clean ${{package.name}}'
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
parameters:
2+
- name: work_dir
3+
default: ""
4+
- name: user
5+
default: "sys"
6+
- name: password
7+
default: "oracle"
8+
- name: connectionString
9+
default: ""
10+
- name: script
11+
default: ""
12+
- name: displayName
13+
default: ""
14+
15+
steps:
16+
- ${{ if eq(parameters.user,'sys') }}:
17+
- bash: |
18+
# Relates to : https://community.oracle.com/tech/developers/discussion/4490418/sqlcl-production-build-21-3-0-278-1045-throwing-warning-terminal-cannot-be-created-paused
19+
export JAVA_TOOL_OPTIONS=-Dorg.jline.terminal.dumb=true
20+
cd ${{ parameters.work_dir }}
21+
#Issue with 19.3 docker images. fixed in 21
22+
sql ${{ parameters.user }}/${{ parameters.password }}@//${{ parameters.connectionString }}?oracle.net.disableOob=true as sysdba @${{ parameters.script }}
23+
displayName: ${{ parameters.displayName }}
24+
- ${{ if not(eq(parameters.user,'sys')) }}:
25+
- bash: |
26+
# Relates to : https://community.oracle.com/tech/developers/discussion/4490418/sqlcl-production-build-21-3-0-278-1045-throwing-warning-terminal-cannot-be-created-paused
27+
export JAVA_TOOL_OPTIONS=-Dorg.jline.terminal.dumb=true
28+
cd ${{ parameters.work_dir }}
29+
#Issue with 19.3 docker images. fixed in 21
30+
sql ${{ parameters.user }}/${{ parameters.password }}@//${{ parameters.connectionString }}?oracle.net.disableOob=true @${{ parameters.script }}
31+
displayName: ${{ parameters.displayName }}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
parameters:
2+
- name : work_dir
3+
default: $(Build.SourcesDirectory)
4+
- name: connectionString
5+
default: ""
6+
- name: test_user
7+
default: ""
8+
- name: test_pwd
9+
default: ""
10+
- name: source_path
11+
default: ""
12+
- name: test_path
13+
default: ""
14+
- name: options
15+
default: ""
16+
17+
steps:
18+
- bash: |
19+
cd ${{ parameters.work_dir }}
20+
utplsql run ${{ parameters.test_user }}/${{ parameters.test_pwd }}@//${{ parameters.connectionString }}?oracle.net.disableOob=true \
21+
-source_path=${{ parameters.source_path }} \
22+
-test_path=${{ parameters.test_path }} \
23+
-f=ut_documentation_reporter -c \
24+
-f=ut_coverage_sonar_reporter -o=coverage.xml \
25+
-f=ut_sonar_test_reporter -o=test_results.xml \
26+
-f=ut_coverage_cobertura_reporter -o=cobertura.xml \
27+
-f=ut_junit_reporter -o=junit_test_results.xml \
28+
${{ parameters.options }}
29+
displayName: 'Run Tests'

source/install.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
@source/between_string/betwnstr.fnc
44
@source/remove_rooms_by_name/rooms.sql
55
@source/remove_rooms_by_name/remove_rooms_by_name.prc
6+
exit

test/install.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
@test/between_string/test_betwnstr.pkb
55
@test/remove_rooms_by_name/test_remove_rooms_by_name.pks
66
@test/remove_rooms_by_name/test_remove_rooms_by_name.pkb
7+
exit

utlplsql-demo-project.yml

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
trigger:
2+
- develop
3+
4+
pool:
5+
vmImage: ubuntu-latest
6+
7+
variables:
8+
CACHE_DIR: $(Pipeline.Workspace)/.cache
9+
SQLCL_DIR: $(Build.BinariesDirectory)/sqlcl
10+
UTPLSQL_DIR: $(Build.BinariesDirectory)/utPLSQL
11+
UTPLSQL_CLI_DIR: $(Build.BinariesDirectory)/utPLSQL-cli
12+
UTPLSQL_CLI_VERSION: 'v3.1.8'
13+
UTPLSQL_VERSION: 'v3.1.11'
14+
DOCKHER_HUB_REPO: 'utplsqlv3/oracledb'
15+
DB_USER: ut3_demo
16+
DB_PASS: ut3_demo
17+
18+
jobs:
19+
- job: utPLSQL_demo_project
20+
displayName: Build utPLSQL-demo-project
21+
strategy:
22+
matrix:
23+
Oracle19_2:
24+
ORACLE_VERSION: "19c-se2-small"
25+
maxParallel: 2
26+
27+
steps:
28+
- template: .azure_templates/t-extend-download-binaries.yml
29+
parameters:
30+
packages:
31+
- name: sqlcl
32+
download_location: "$(Build.BinariesDirectory)/sqlcl-latest.zip"
33+
unpack_location: "$(Build.BinariesDirectory)"
34+
url: "https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip"
35+
archive: "zip"
36+
addtoPath: "$(SQLCL_DIR)/bin"
37+
38+
- name: utlplsqlcli
39+
download_location: "$(Build.BinariesDirectory)/utPLSQL-cli.zip"
40+
unpack_location: "$(Build.BinariesDirectory)"
41+
url: "https://github.com/utPLSQL/utPLSQL-cli/releases/download/$(UTPLSQL_CLI_VERSION)/utPLSQL-cli.zip"
42+
archive: "zip"
43+
addToPath: "$(UTPLSQL_CLI_DIR)/bin"
44+
45+
- template: .azure_templates/t-extend-database-build.yml
46+
parameters:
47+
containerRegistry: utPLSQL-docker
48+
dockerRepo: utplsqlv3/oracledb
49+
utplsqlVersion: ${UTPLSQL_VERSION}
50+
utplsqlDir: ${UTPLSQL_DIR}
51+
test_user: ${DB_USER}
52+
test_pwd: ${DB_PASS}
53+
targetDatabases:
54+
- oracleVersion: "19c-se2-small"
55+
connectionString: "127.0.0.1:1521/ORCLCDB"
56+
dockerPortMap: "1521"
57+
dockerOptions: "--shm-size=1g"
58+
scripts:
59+
- displayName: "Install utPLSQL"
60+
user: "sys"
61+
password: "oracle"
62+
script: "install_headless.sql UT3 UT3 users"
63+
work_dir: "${UTPLSQL_DIR}/source"
64+
65+
- displayName: "Create Test User"
66+
user: "sys"
67+
password: "oracle"
68+
script: "source/create_user.sql"
69+
work_dir: "$(Build.SourcesDirectory)"
70+
71+
- displayName: "Install Source"
72+
user: "${DB_USER}"
73+
password: "${DB_PASS}"
74+
script: "source/install.sql"
75+
work_dir: "$(Build.SourcesDirectory)"
76+
77+
- displayName: "Install Tests"
78+
user: "${DB_USER}"
79+
password: "${DB_PASS}"
80+
script: "test/install.sql"
81+
work_dir: "$(Build.SourcesDirectory)"
82+

0 commit comments

Comments
 (0)