From 8e440e20a1d15495d077d00b04d8a7169c62b6ee Mon Sep 17 00:00:00 2001 From: Daya Adianto <dayaadianto@cs.ui.ac.id> Date: Wed, 10 Nov 2021 11:48:10 +0000 Subject: [PATCH] Use Material for MkDocs theme --- .gitlab-ci.yml | 1 + Pipfile | 2 + Pipfile.lock | 108 ++++++++++-- README.md | 11 +- docs/2020/index.md | 12 ++ docs/2020/midexam1.md | 264 +++++++++++++++++++++++++++++ docs/2020/midexam2.md | 100 +++++++++++ docs/2021/{ex1.md => exercise1.md} | 17 +- docs/images/favicon.png | Bin 0 -> 2685 bytes docs/images/logo.png | Bin 0 -> 56866 bytes mkdocs.yml | 47 ++++- 11 files changed, 544 insertions(+), 18 deletions(-) create mode 100644 docs/2020/index.md create mode 100644 docs/2020/midexam1.md create mode 100644 docs/2020/midexam2.md rename docs/2021/{ex1.md => exercise1.md} (84%) create mode 100644 docs/images/favicon.png create mode 100644 docs/images/logo.png diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 550ff59..2718f5f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,6 +18,7 @@ build: stage: build image: docker.io/python:3.9.7-alpine before_script: + - apk add --no-cache git - pip install pipenv==${PIPENV_VERSION} - unset PIPENV_VERSION - pipenv sync diff --git a/Pipfile b/Pipfile index 430cac1..7f9073d 100644 --- a/Pipfile +++ b/Pipfile @@ -5,6 +5,8 @@ name = "pypi" [packages] mkdocs = "~=1.2.3" +mkdocs-material = "~=7.3.6" +mkdocs-git-revision-date-localized-plugin = "~=0.10.2" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 2c986f6..894f2f0 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "73260d73b196eb25c7a8f2eaecfb6af799f8f98ca2a2d5f95c1286f46e2cfba9" + "sha256": "eb241c9baf0e485ff9d3998f6c63add07915fc484b2205252e93222c8edc2422" }, "pipfile-spec": 6, "requires": { @@ -16,6 +16,14 @@ ] }, "default": { + "babel": { + "hashes": [ + "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9", + "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.9.1" + }, "click": { "hashes": [ "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3", @@ -39,21 +47,37 @@ ], "version": "==2.0.2" }, + "gitdb": { + "hashes": [ + "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd", + "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa" + ], + "markers": "python_version >= '3.6'", + "version": "==4.0.9" + }, + "gitpython": { + "hashes": [ + "sha256:dc0a7f2f697657acc8d7f89033e8b1ea94dd90356b2983bca89dc8d2ab3cc647", + "sha256:df83fdf5e684fef7c6ee2c02fc68a5ceb7e7e759d08b694088d0cacb4eba59e5" + ], + "markers": "python_version >= '3.7'", + "version": "==3.1.24" + }, "importlib-metadata": { "hashes": [ - "sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15", - "sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1" + "sha256:53ccfd5c134223e497627b9815d5030edf77d2ed573922f7a0b8f8bb81a1c100", + "sha256:75bdec14c397f528724c1bfd9709d660b33a4d2e77387a3358f20b848bb5e5fb" ], "markers": "python_version >= '3.6'", - "version": "==4.8.1" + "version": "==4.8.2" }, "jinja2": { "hashes": [ - "sha256:827a0e32839ab1600d4eb1c4c33ec5a8edfbc5cb42dafa13b81f182f97784b45", - "sha256:8569982d3f0889eed11dd620c706d39b60c36d6d25843961f33f77fb6bc6b20c" + "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8", + "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7" ], "markers": "python_version >= '3.6'", - "version": "==3.0.2" + "version": "==3.0.3" }, "markdown": { "hashes": [ @@ -154,6 +178,30 @@ "index": "pypi", "version": "==1.2.3" }, + "mkdocs-git-revision-date-localized-plugin": { + "hashes": [ + "sha256:16ffc10407d5e84f0e5248496191d065d611095a12a48cb5070167b4808ae06a", + "sha256:817dd2c897ede4f801673898d454191b280cf0b21650de82b2144e4774b4cd2a" + ], + "index": "pypi", + "version": "==0.10.2" + }, + "mkdocs-material": { + "hashes": [ + "sha256:1b1dbd8ef2508b358d93af55a5c5db3f141c95667fad802301ec621c40c7c217", + "sha256:1b6b3e9e09f922c2d7f1160fe15c8f43d4adc0d6fb81aa6ff0cbc7ef5b78ec75" + ], + "index": "pypi", + "version": "==7.3.6" + }, + "mkdocs-material-extensions": { + "hashes": [ + "sha256:a82b70e533ce060b2a5d9eb2bc2e1be201cf61f901f93704b4acf6e3d5983a44", + "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2" + ], + "markers": "python_version >= '3.6'", + "version": "==1.0.3" + }, "packaging": { "hashes": [ "sha256:096d689d78ca690e4cd8a89568ba06d07ca097e3306a4381635073ca91479966", @@ -162,12 +210,28 @@ "markers": "python_version >= '3.6'", "version": "==21.2" }, + "pygments": { + "hashes": [ + "sha256:b8e67fe6af78f492b3c4b3e2970c0624cbf08beb1e493b2c99b9fa1b67a20380", + "sha256:f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6" + ], + "markers": "python_version >= '3.5'", + "version": "==2.10.0" + }, + "pymdown-extensions": { + "hashes": [ + "sha256:01e4bec7f4b16beaba0087a74496401cf11afd69e3a11fe95cb593e5c698ef40", + "sha256:430cc2fbb30cef2df70edac0b4f62614a6a4d2b06462e32da4ca96098b7c1dfb" + ], + "markers": "python_version >= '3.6'", + "version": "==9.0" + }, "pyparsing": { "hashes": [ "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b" ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.4.7" }, "python-dateutil": { @@ -175,9 +239,16 @@ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, + "pytz": { + "hashes": [ + "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c", + "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326" + ], + "version": "==2021.3" + }, "pyyaml": { "hashes": [ "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", @@ -230,9 +301,26 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.16.0" }, + "smmap": { + "hashes": [ + "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94", + "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936" + ], + "markers": "python_version >= '3.6'", + "version": "==5.0.0" + }, + "typing-extensions": { + "hashes": [ + "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e", + "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7", + "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34" + ], + "markers": "python_version < '3.10'", + "version": "==3.10.0.2" + }, "watchdog": { "hashes": [ "sha256:25fb5240b195d17de949588628fdf93032ebf163524ef08933db0ea1f99bd685", diff --git a/README.md b/README.md index cc3f135..85c03e9 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,14 @@ - Python >= 3.9 - [`pipenv`](https://pipenv.kennethreitz.org/en/latest/) +- [MkDocs](https://www.mkdocs.org/) and [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) + - Included in the [list of dependencies](./Pipfile) that will be installed by + `pipenv` ## Getting Started Assuming `pipenv` present in the shell, create a new virtual environment and -download all of the required dependencies: +install all of the required dependencies into the new virtual environment: ```shell pipenv sync @@ -38,6 +41,12 @@ mkdocs build By default, the built website is written into `site` directory. +## Adding New Content + +Write the new content into a new text file written using Markdown format and +store them in [`docs/`](./docs/) directory. Then, update the navigation section +(i.e., `nav`) in [`mkdocs.yml`](./mkdocs.yml). + ## License Copyright (c) 2021 Faculty of Computer Science Universitas Indonesia. diff --git a/docs/2020/index.md b/docs/2020/index.md new file mode 100644 index 0000000..8f1faa3 --- /dev/null +++ b/docs/2020/index.md @@ -0,0 +1,12 @@ +# Course Information (2020) + +Course instructors: + +- [Dr. Ade Azurat](https://rse.cs.ui.ac.id/?open=staff/ade) + > Responsible for the latter half of the course. +- [Daya Adianto, M.Kom.](https://me.adian.to) + > Responsible for the first half of the course. + +Teaching assistants: + +- TBD diff --git a/docs/2020/midexam1.md b/docs/2020/midexam1.md new file mode 100644 index 0000000..1c40280 --- /dev/null +++ b/docs/2020/midexam1.md @@ -0,0 +1,264 @@ +# Midterm Exam - Ansible to Docker DevOps + +Some projects in [Pusilkom UI](https://pusilkom.com) have automated provisioning +and deployment implemented using [Ansible](https://www.ansible.com). The +application and environment configuration are parameterised using Ansible +variables that written in [Jinja](https://jinja.palletsprojects.com/en/2.11.x/) +syntax and stored in YAML files. Since some of the variables might contain +sensitive information such as database password or API key, Ansible Vault is +also used to separate sensitive variables to a new file and encrypt it for +storage in the version control system (Git). The variables will only be +decrypted during provisioning and deployment process. + +In recent times, there are requests to prepare a Docker-based deployment using +Docker Compose. One way to configure an application or a component running in +a container is by providing the configuration through environment variables. +To make it easier for DevOps Engineer or System Administrator to provide the +environment variables, usually they write the variables into a text-based file +called `.env` that subsequently will be read by Docker Compose. + +The problem is how to keep existing Ansible-related artefact in place and make +them still usable for Docker-based deployment. Since most of the configuration +are written in YAML files, there must be a way to reuse the configuration +variables in YAML files and transform them into a `.env` file. In addition, +the values for some of the variables might also get passed through environment +variables when run in CI environment. + +The following example is a program that reads YAML files, merge them into single +structure, and print the content as string that can be written into a `.env` +file: + +```python +#!/usr/bin/env python +# File: create_dotenv.py +import os +import re +import sys + +try: + from yaml import safe_load + from yaml.scanner import ScannerError +except ImportError: + print("Cannot find PyYAML module in the environment.", file=sys.stderr) + print("Please install it first using `pip` or other means", file=sys.stderr) + sys.exit(1) + +def is_valid_yaml_files(files: list) -> bool: + ''' + Checks whether the given list of file paths contain all valid YAML files. + + Suppose that we have two valid YML files. If the paths to both files are + passed to the function, then the function should return True. + + >>> import tempfile + >>> with tempfile.NamedTemporaryFile(mode="w", newline="\\n", suffix=".yml") as file1: + ... with tempfile.NamedTemporaryFile(mode="w", newline="\\n", suffix=".yml") as file2: + ... file1.writelines(["---", "a: 1", "b: 2"]) + ... file2.writelines(["d: 3", "e: 4"]) + ... is_valid_yaml_files([file1.name, file2.name]) + True + + Otherwise, the function should return False. + + >>> import tempfile + >>> with tempfile.NamedTemporaryFile(mode="w", newline="\\n", suffix=".yml") as file1: + ... with tempfile.NamedTemporaryFile(mode="w", newline="\\n", suffix=".yml") as file2: + ... file1.writelines(["{a: 1", "b: 2"]) + ... file2.writelines(["d: 3}", "e: 4"]) + ... is_valid_yaml_files([file1.name, file2.name]) + False + + TODO: Fix doctest when run under Windows + ''' + if len(files) == 0: + return False + + try: + for file in files: + with open(file, 'r') as yaml_file: + safe_load(yaml_file) + except OSError as os_error: + print("Cannot open the given file", file=sys.stderr) + print(os_error, file=sys.stderr) + return False + except ScannerError as scanner_error: + print("Unable to parse the given YAML files correctly", file=sys.stderr) + print(scanner_error, file=sys.stderr) + return False + + return True + +def parse_decrypted_vault(main_yaml: dict, vault_yaml: dict) -> dict: + ''' + Replaces every occurences of Jinja variables with the corresponding values + from a decrypted vault file. + + For example, suppose main_yaml and vault_yaml are illustrated as follows: + + >>> main_yaml = {'app_name': 'example', 'db_user': 'bangtoyib', 'db_pass': '{{ vault_db_pass }}'} + >>> vault_yaml = {'vault_db_pass': 'cepatpulang'} + >>> parse_decrypted_vault(main_yaml, vault_yaml) + {'app_name': 'example', 'db_user': 'bangtoyib', 'db_pass': 'cepatpulang'} + + The function should return the dictionary whose keys are the same as the + original dictionary and all of the values with Jinja variables have been + replaced. + + TODO: Handle YAML structure with > 1 level (nested) + ''' + from copy import deepcopy + result_yaml = deepcopy(main_yaml) + + for key, value in main_yaml.items(): + if isinstance(value, str) and re.match(r'{{ vault_(\w)+ }}', value): + result_yaml[key] = vault_yaml[f'vault_{key}'] + + return result_yaml + +def main() -> None: + if is_valid_yaml_files(sys.argv[1:]): + with open(sys.argv[1], 'r') as vars_file: + with open(sys.argv[2], 'r') as vault_file: + yaml = parse_decrypted_vault( + safe_load(vars_file), + safe_load(vault_file) + ) + + for key, value in yaml.items(): + if isinstance(value, str): + contain_variable = re.match(r"{{ (?P<variable>\w+) }}", value) + + if contain_variable: + # Assume environment variable is written in all uppercase + os_variable_name = contain_variable.group('variable').upper() + print(f'{key.upper()}={os.getenv(os_variable_name, "")}') + else: + print(f'{key.upper()}={value}') + else: + print(f'{key.upper()}={value}') + else: + print("One or more YAML files are invalid", file=sys.stderr) + sys.exit(1) + +if __name__ == '__main__': main() +``` + +Actual, but redacted running example: + +```bash +$ python create_dotenv.py \ + ../ansible/inventories/develop/group_vars/all/vars.yml \ + ../ansible/inventories/develop/group_vars/all/vault.yml +APP_DIR=/opt/unhan/euis +APP_USER=unhan +APP_THEME=unhan +APP_SOURCE= +APP_SUPERPASS=bangtoyib! +DATABASE_HOST=192.168.0.162 +DATABASE_PORT=5432 +DATABASE_NAME=euis_demo2 +DATABASE_USERNAME=euis_demo2 +DATABASE_PASSWORD=cepatpulang! +EMAIL_HOST=192.168.0.174 +EMAIL_PORT=25 +EMAIL_USERNAME=no-reply@pusilkom.com +EMAIL_PASSWORD=None +EMAIL_ENCRYPTION=None +PHP_VERSION=7.0 +``` + +The example above reads two YAML files named `vars.yml` and `vault.yml`. +The program replaces all occurences of Jinja variables in the `vars.yml` with +values read from `vault.yml`. In addition, if there are still some Jinja +variables left in the `vars.yml`, the program reads the OS' environment +variables to obtain the values for the remaining Jinja variables. Finally, +any remaining Jinja variables will be assigned with empty values then +printed to the standard output. + +## SQA Problem - Input Space Partitioning + +> _Estimated time: 5 minutes_ + +You are asked to **design an input space model for the API by following a functionality-based approach.** +The information required to develop the model can be derived by reading the code +snippet. + +Your tasks are as follows: + +1. Determine the characteristics and the partition for a function chosen by the + proctor. + > Possible functions: + > + > - `is_valid_yaml_files()` + > - `main()` + > - The whole script, i.e. `create_dotenv.py` + +2. Based on the input space model that you have created, create the test + requirement and the test cases based on certain coverage criteria chosen by + the proctor. + + > Possible coverage criteria choices: + > + > - All Combinations Coverage (ACoC) + > - Each Choice Coverage (ECC) + > - Pair-Wise Coverage (PWC) + > - Base Choice Coverage (BCC) + > + > _Note: **You do not have to write all test cases due to the time limit.** + > However, make sure you can justify your subset of test cases match with + > the chosen coverage criteria!_ + +Write your answer in a sheet of paper or Microsoft Word/Google Docs document. +You may include illustrations in your answer. Please prepare to present your +answer remotely via Zoom/Google Hangouts during discussion time. + +## SQA Problem - Graph Coverage + +> _Estimated time: 5 minutes_ + +You are asked to design a **control flow graph (CFG), prepare the test +requirement, and create the test paths.** + +Your tasks are as follows: + +1. Create the CFG for a function chosen by the proctor. + > Possible functions: + > + > - `is_valid_yaml_files()` + > - `main()` + > - The whole script, i.e. `create_dotenv.py` + +2. Based on the CFG that you have created, create the test requirement and the + test paths based on certain coverage criteria chosen by the proctor. + > Possible coverage criteria choices: + > + > - Node Coverage (NC) + > - Edge Coverage (EC) + > - Edge-Pair Coverage (EPC) + > + > _Note: **You do not have to write all test paths due to the time limit.** + > However, make sure you can justify your subset of test paths match with + > the chosen coverage criteria!_ + +Write your answer in a sheet of paper or Microsoft Word/Google Docs document. +You may include illustrations in your answer. Please prepare to present your +answer remotely via Zoom/Google Hangouts during discussion time. + +## SQA Problem - Discussion + +> _Estimated time: 10 minutes_ + +You are asked to present your answers to the given problems and also to have +one-on-one interview with the proctor during the discussion time. + +The list of topics that might be discussed is as follows: + +- Code coverage (line coverage) +- Test-Driven Development (TDD) +- Test isolation +- Writing test cases in Java (JUnit)/Python (`unittest` and Django)/PHP + (PHPUnit) +- Your experience in conducting SQA activities in academics and/or work + environment +- The ideas of mutation testing +- And many more that may still related to SQA diff --git a/docs/2020/midexam2.md b/docs/2020/midexam2.md new file mode 100644 index 0000000..842cd99 --- /dev/null +++ b/docs/2020/midexam2.md @@ -0,0 +1,100 @@ +# Midterm Exam - Lion Game (Backend) + +This project provides an API that allows Lion Game communicate with Google +Sheets-based backend for storing play session analytics. The source code is +available [here](https://gitlab.cs.ui.ac.id/bukan-macan-ternak/liongame-backend). + +## SQA Problem - Input Space Partitioning + +> _Estimated time: 5 minutes_ + +You are asked to **design an input space model for the API by following a functionality-based approach.** +The minimal information required to develop the model can be derived by +reading the API documentation available in [`README.md`](https://gitlab.cs.ui.ac.id/bukan-macan-ternak/liongame-backend/-/blob/master/README.md) +file. + +Your tasks are as follows: + +1. Determine the characteristics and the partition for a function chosen by the + proctor. + > Possible functions: + > + > - The request handler function for `/api/logs/` endpoint. + > - The request handler function for `/api/logs/batch` endpoint. + > + > The body of both functions can be inspected in [`App.php`](https://gitlab.cs.ui.ac.id/bukan-macan-ternak/liongame-backend/-/blob/master/src/App.php). + +2. Based on the input space model that you have created, create the test + requirement and the test cases based on certain coverage criteria chosen by + the proctor. + + > Possible coverage criteria choices: + > + > - All Combinations Coverage (ACoC) + > - Each Choice Coverage (ECC) + > - Pair-Wise Coverage (PWC) + > - Base Choice Coverage (BCC) + > + > _Note: **You do not have to write all test cases** due to the time limit. + > However, make sure you can justify your subset of test cases match with + > the chosen coverage criteria!_ + +Write your answer in a sheet of paper or Microsoft Word/Google Docs document. +You may include illustrations in your answer. Please prepare to present your +answer remotely via Zoom/Google Hangouts during discussion time. + +## SQA Problem - Graph Coverage + +> _Estimated time: 5 minutes_ + +You are asked to design a **control flow graph (CFG), prepare the test +requirement, and create the test cases.** + +Your tasks are as follows: + +1. Create the CFG for a function chosen by the proctor. + > Possible functions: + > + > - The request handler function for `/api/logs/` endpoint. + > - The request handler function for `/api/logs/batch` endpoint. + > - `isValidData()` function. + > - `appendValues()` function. + > + > The definition of request handler functions and `isValidData()` can be + > inspected in [`App.php`](https://gitlab.cs.ui.ac.id/bukan-macan-ternak/liongame-backend/-/blob/master/src/App.php). + > The `appendValues()` function definition is available in [`SheeetsService.php`](https://gitlab.cs.ui.ac.id/bukan-macan-ternak/liongame-backend/-/blob/master/src/service/SheetsService.php). +2. Based on the CFG that you have created, create the test requirement and the + test paths based on certain coverage criteria chosen by the proctor. + + > Possible coverage criteria choices: + > + > - Node Coverage (NC) + > - Edge Coverage (EC) + > - Edge-Pair Coverage (EPC) + > + > _Note: **You do not have to write all test paths due to the time limit.** + > However, make sure you can justify your subset of test paths match with + > the chosen coverage criteria!_ + +Write your answer in a sheet of paper or Microsoft Word/Google Docs document. +You may include illustrations in your answer. Please prepare to present your +answer remotely via Zoom/Google Hangouts during discussion time. + +## SQA Problem - Discussion + +> _Estimated time: 10 minutes_ + +You are asked to present your answers to the given problems and also to have +one-on-one interview with the proctor during the discussion time. + +The list of topics that might be discussed is as follows: + +- Code coverage (line coverage) +- Test-Driven Development (TDD) +- Test isolation +- Writing test cases in Java (JUnit)/Python (`unittest` and Django)/PHP + (PHPUnit) +- Your experience in conducting SQA activities in academics and/or work + environment +- The ideas of mutation testing +- And many more that may still related to SQA diff --git a/docs/2021/ex1.md b/docs/2021/exercise1.md similarity index 84% rename from docs/2021/ex1.md rename to docs/2021/exercise1.md index 826bc1b..766f2c4 100644 --- a/docs/2021/ex1.md +++ b/docs/2021/exercise1.md @@ -3,17 +3,18 @@ You are asked to set up a CI/CD pipeline of the your group project **individually** by forking the existing group project codebase and updating the CI/CD configuration. As part of the exercise, you also need to prepare -your own VM on Google Cloud Platform (GCP) and explore how to use Static -Application Security Testing (SAST) on self-hosted GitLab (GitLab CSUI). +your own VM on GCP and explore how to use SAST on a self-hosted GitLab (i.e. +GitLab CSUI). For your information when setting up the GitLab CI/CD configuration that will be run on GitLab CSUI, the following is the overview of the CI infrastructure in our faculty: - We run GitLab CSUI using GitLab Enterprise Edition version 13.12.15. -- The CI server runs 8 instances of GitLab Runner version 13.12.0. +- The CI server runs 8 instances of [GitLab Runner](https://gitlab.com/gitlab-org/gitlab-runner) + version 13.12.0. - Each instance is running as a container with limited resources (2 CPU per - container) and disabled the privileged mode. Hence, it is not possible to + container) and the privileged mode disabled. Hence, it is not possible to run a Docker-in-Docker (DIND) type of CI job. - Each instance shares the cache between CI jobs using [Minio](https://min.io/). - Each instance is also limited to run single CI job at a time. @@ -39,7 +40,8 @@ with a teaching assistant to demonstrate your work. 5. [ ] Add the SAST job into the CI/CD pipeline of your own fork and make sure it runs. > Due to [an ongoing issue on running the latest SAST image](https://gitlab.com/gitlab-org/gitlab/-/issues/344022), - > pin the version of SAST analyser image to version 2.28.5. + > pin the version of SAST analyser image to version 2.28.5 in the CI/CD + > configuration file. 6. [ ] Arrange an one-on-one meeting with a teaching assistant to demonstrate your work. You are expected to be able to: - Explain the process of setting up the deployment environment of your group @@ -54,3 +56,8 @@ with a teaching assistant to demonstrate your work. - [GitLab CI/CD Reference on GitLab CSUI](https://gitlab.cs.ui.ac.id/help/ci/yaml/README.md) - [SAST Documentation on GitLab CSUI](https://gitlab.cs.ui.ac.id/help/user/application_security/sast/index.md) + +*[CSUI]: Faculty of Computer Science Universitas Indonesia +*[GCP]: Google Cloud Platform +*[SAST]: Static Analysis Security Testing +*[VM]: Virtual Machine diff --git a/docs/images/favicon.png b/docs/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..b0c8719e1546b0910d76d7cbb89f00fff1e2d562 GIT binary patch literal 2685 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 V7`uXz3IhWJgQu&X%Q~loCIIc+AY=dl literal 0 HcmV?d00001 diff --git a/docs/images/logo.png b/docs/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..60f6f753178d383bb61644f9044ffb7be8d17df7 GIT binary patch literal 56866 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 literal 0 HcmV?d00001 diff --git a/mkdocs.yml b/mkdocs.yml index 7f56b24..47e6be7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -8,9 +8,52 @@ copyright: Copyright © 2021 Faculty of Computer Science Universitas Indones repo_url: https://gitlab.cs.ui.ac.id/pmpl/course-site repo_name: GitLab @ CSUI +edit_uri: "" + +theme: + name: material + features: + - navigation.tabs + - navigation.indexes + - navigation.top + logo: images/logo.png + favicon: images/favicon.png + icon: + repo: fontawesome/brands/gitlab + palette: + - media: "(prefers-color-scheme: light)" + scheme: default + primary: deep orange + toggle: + icon: material/toggle-switch-off-outline + name: Switch to dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: deep orange + toggle: + icon: material/toggle-switch + name: Switch to light mode + +plugins: + - git-revision-date-localized: + type: iso_datetime + enable_creation_date: true + +markdown_extensions: + - abbr + - pymdownx.highlight: + linenums: true + - pymdownx.superfences + - pymdownx.snippets + - pymdownx.tasklist: + custom_checkbox: true nav: - Home: index.md - Year 2021: - - Course Page: 2021/index.md - - Exercise 1: 2021/ex1.md + - 2021/index.md + - Exercise 1: 2021/exercise1.md + - Year 2020: + - 2020/index.md + - Midterm Exam 1: 2020/midexam1.md + - Midterm Exam 2: 2020/midexam2.md -- GitLab