diff --git a/README.md b/README.md index 1ab2b98..13c7ea6 100644 --- a/README.md +++ b/README.md @@ -29,24 +29,26 @@ ci services specs check # Open Source or Free Plan Available Features and Limitations -|CI|OSS or Free|Build Limit|Timeout|No Output Timeout|Any Limits| -|:--|:--|:--|:--|:--|:--| -|[AppVeyor](https://www.appveyor.com)|[Free for OSS](https://www.appveyor.com/pricing/)|Unlimited|?|?|| -|[Azure Pipelines](https://azure.microsoft.com/ja-jp/services/devops/pipelines/)|[Free for OSS](https://azure.microsoft.com/ja-jp/pricing/details/devops/azure-devops-services/)|Unlimited|?|?|| -|[Bitrise](https://www.bitrise.io)|[Free for OSS](https://blog.bitrise.io/free-developer-plan-features-for-open-source-projects-on-bitrise)|Unlimited|45min|?|| -|[Buddy](https://buddy.works)|[Free for OSS](https://buddy.works/free-for-open-source)|120 build/month|?|?|5 projects / 500 MB cache / 1 GB & 2vCPU performance| -|[Circle CI](https://circleci.com)|[Free Plan](https://circleci.com/pricing/usage/)|Unlimited?|2,500 free credits / week|?|| -|[Cirrus CI](https://cirrus-ci.org/)|[Free for OSS](https://cirrus-ci.org/pricing/)|Unlimited?|[60min](https://cirrus-ci.org/faq/#instance-timed-out)(max 2h)|?|[Parallel VMs limit](https://cirrus-ci.org/faq/#are-there-any-limits)| -|[Codefresh](https://codefresh.io/)|[Free Plan](https://codefresh.io/pricing/)|Unlimited|60min?|15min ?| -|[Codeship](https://codeship.com/)|[Forever Free](https://codeship.com/pricing)|100 build/month|?|?|| -|[Drone Cloud](https://cloud.drone.io/)|Free for OSS|Unlimited?|?|?|| -|[GitHub Actions](https://help.github.com/en/articles/about-github-actions)|Free for Public repo|Unlimited?|default 360min([config](https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes))|?|[Usage Limit](https://help.github.com/en/articles/about-github-actions#usage-limits)| -|[Scrutinizer](https://scrutinizer-ci.com)|[Free for OSS](https://scrutinizer-ci.com/pricing)|Unlimited?|?|?|| -|[Semaphore CI 2.0](https://semaphoreci.com)|[FREE plan](https://semaphoreci.com/pricing)|~~$20~~$10/month|default 60min([config](https://docs.semaphoreci.com/article/50-pipeline-yaml#execution_time_limit))|?|[Quotas and Limits](https://docs.semaphoreci.com/article/133-quotas-and-limits)| -|[Semaphore CI 2.0](https://semaphoreci.com)|[FREE for OSS](https://semaphoreci.com/pricing)|Unlimited|default 60min([config](https://docs.semaphoreci.com/article/50-pipeline-yaml#execution_time_limit))|?|[Quotas and Limits](https://docs.semaphoreci.com/article/133-quotas-and-limits)| -|[Shippable](https://www.shippable.com/pricing.html)|[Free plan](https://www.shippable.com/pricing.html)|Unlimited (Public), 150 builds/month (Private)|?|?|| -|[Travis CI](https://travis-ci.com/)|[Free for OSS](https://travis-ci.com/plans)|Unlimited|?|?|| -|[wercker](http://www.wercker.com/)|?|?|?|?|| +|CI|OSS or Free|Build Limit|Concurrency|Timeout|No Output Timeout|Any Limits| +|:--|:--|:--|:--|:--|:--|:--| +|[AppVeyor](https://www.appveyor.com)|[Free for OSS](https://www.appveyor.com/pricing/)|Unlimited|1|[60min or less](https://www.appveyor.com/docs/build-configuration/#build-timeout)|?|| +|[Azure Pipelines](https://azure.microsoft.com/ja-jp/services/devops/pipelines/)|[Free for OSS](https://azure.microsoft.com/ja-jp/pricing/details/devops/azure-devops-services/)|Unlimited|10|[360min](https://docs.microsoft.com/en-us/azure/devops/pipelines/licensing/concurrent-jobs?view=azure-devops#microsoft-hosted-cicd)|?|| +|[Bitrise](https://www.bitrise.io)|[Free for OSS](https://blog.bitrise.io/free-developer-plan-features-for-open-source-projects-on-bitrise)|Unlimited|1|45min|?|| +|[Buddy](https://buddy.works)|[Free for OSS](https://buddy.works/free-for-open-source)|120 build/month|1|?|?|5 projects / 500 MB cache / 1 GB & 2vCPU performance| +|[Circle CI](https://circleci.com)|[Free Plan](https://circleci.com/pricing/)|2,500 free credits / week|1|?|?|| +|[Circle CI](https://circleci.com)|[Free for OSS](https://circleci.com/docs/2.0/oss/#overview)|100,000 free credits / week|autoscale|?|?|| +|[Cirrus CI](https://cirrus-ci.org/)|[Free for OSS](https://cirrus-ci.org/pricing/)|Unlimited?|[no limit](https://cirrus-ci.org/features/#no-concurrency-limit-no-queues)|[60min](https://cirrus-ci.org/faq/#instance-timed-out)(max 2h)|?|[Parallel VMs limit](https://cirrus-ci.org/faq/#are-there-any-limits)| +|[Codefresh](https://codefresh.io/)|[Free Plan](https://codefresh.io/pricing/)|Unlimited|[Unlimited/1/2/3](https://codefresh.io/docs/docs/configure-ci-cd-pipeline/pipelines/#concurrency-policy)|60min?|15min ?| +|[Codeship Basic](https://codeship.com/)|[Forever Free](https://codeship.com/pricing/basic)|100 build/month|1|?|?|| +|[Codeship Pro](https://codeship.com/)|[Forever Free](https://codeship.com/pricing/pro)|100 build/month|1|?|?|| +|[Drone Cloud](https://cloud.drone.io/)|Free for OSS|Unlimited?|?|?|?|| +|[GitHub Actions](https://help.github.com/en/articles/about-github-actions)|Free for Public repo|Unlimited|20|default 360min([config](https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes))|?|[Usage Limit](https://help.github.com/en/articles/about-github-actions#usage-limits)| +|[Scrutinizer](https://scrutinizer-ci.com)|[Free for OSS](https://scrutinizer-ci.com/pricing)|Unlimited?|?|?|?|| +|[Semaphore CI 2.0](https://semaphoreci.com)|[FREE plan](https://semaphoreci.com/pricing)|~~$20~~$10/month|Unlimited |default 60min([config](https://docs.semaphoreci.com/article/50-pipeline-yaml#execution_time_limit))|?|[Quotas and Limits](https://docs.semaphoreci.com/article/133-quotas-and-limits)| +|[Semaphore CI 2.0](https://semaphoreci.com)|[FREE for OSS](https://semaphoreci.com/pricing)|Unlimited|Unlimited|default 60min([config](https://docs.semaphoreci.com/article/50-pipeline-yaml#execution_time_limit))|?|[Quotas and Limits](https://docs.semaphoreci.com/article/133-quotas-and-limits)| +|[Shippable](https://www.shippable.com/pricing.html)|[Free plan](https://www.shippable.com/pricing.html)|Unlimited (Public), 150 builds/month (Private)|1|?|?|| +|[Travis CI](https://travis-ci.com/)|[Free for OSS](https://travis-ci.com/plans)|Unlimited|3|?|?|| +|[wercker](http://www.wercker.com/)|?|?|?|?|?|| ## Suppor @@ -58,7 +60,7 @@ ci services specs check |[Azure Pipelines](https://docs.microsoft.com/ja-jp/azure/devops/pipelines/agents/agents?view=azure-devops)|:ballot_box_with_check:|:ballot_box_with_check:|:ballot_box_with_check:|-|-|:ballot_box_with_check:|:ballot_box_with_check:| |[Bitrise](https://devcenter.bitrise.io/infrastructure/virtual-machines/)|:ballot_box_with_check:||:ballot_box_with_check:||||| |[Buddy](https://buddy.works)|:ballot_box_with_check:||||||| -|[Circle CI](https://circleci.com/docs/2.0/configuration-reference/#docker--machine--macos--windows-executor)|:ballot_box_with_check:|:ballot_box_with_check:|:heavy_dollar_sign:|-|-|:ballot_box_with_check:|-| +|[Circle CI](https://circleci.com/docs/2.0/configuration-reference/#docker--machine--macos--windows-executor)|:ballot_box_with_check:|:ballot_box_with_check:|[:ballot_box_with_check:](https://circleci.com/docs/2.0/oss/#overview)|-|-|:ballot_box_with_check:|-| |[Cirrus CI](https://cirrus-ci.org/features/#comparison-with-popular-ciaas)|:ballot_box_with_check:|:ballot_box_with_check:|:ballot_box_with_check:|:ballot_box_with_check:|-|[:ballot_box_with_check:](https://cirrus-ci.org/guide/docker-builder-vm/)|[:ballot_box_with_check:](https://cirrus-ci.org/guide/supported-computing-services/)| |[Codefresh](https://codefresh.io/)|:ballot_box_with_check:|||||:ballot_box_with_check:|| |[Codeship](https://codeship.com/)|:ballot_box_with_check:||||||| diff --git a/ci-specs.code-workspace b/ci-specs.code-workspace index 876a149..37af29b 100644 --- a/ci-specs.code-workspace +++ b/ci-specs.code-workspace @@ -4,5 +4,9 @@ "path": "." } ], - "settings": {} + "settings": { + "editor.rulers": [ + 80, + ], + } } \ No newline at end of file diff --git a/integromat/blueprint.json b/integromat/blueprint.json new file mode 100644 index 0000000..2f41e6c --- /dev/null +++ b/integromat/blueprint.json @@ -0,0 +1,701 @@ +{ + "name": "CI-Specs", + "flow": [ + { + "id": 2, + "module": "gateway:CustomWebHook", + "version": 1, + "parameters": { + "hook": 278932, + "maxResults": 2 + }, + "mapper": {}, + "metadata": { + "designer": { + "x": 0, + "y": 150 + }, + "restore": { + "hook": { + "label": "CI-specs" + } + }, + "parameters": [ + { + "name": "hook", + "type": "hook", + "label": "Webhook", + "required": true + }, + { + "name": "maxResults", + "type": "number", + "label": "Maximum number of results" + } + ], + "interface": [ + { + "name": "time", + "type": "text" + }, + { + "name": "ci", + "type": "text" + }, + { + "name": "commit", + "type": "text" + }, + { + "name": "os", + "type": "text" + }, + { + "name": "os_name", + "type": "text" + }, + { + "name": "disk", + "type": "text" + }, + { + "name": "disk_avail", + "type": "text" + }, + { + "name": "docker", + "type": "text" + }, + { + "name": "nproc", + "type": "text" + }, + { + "name": "ram", + "type": "text" + } + ] + } + }, + { + "id": 4, + "module": "google-sheets:addSheet", + "version": 2, + "parameters": { + "__IMTCONN__": 330921 + }, + "mapper": { + "properties": { + "index": "0", + "title": "{{2.commit}}" + }, + "spreadsheetId": "14qym8t3cbMVaB3N3EZCR-2Y0ICcllf2q90N-hVaogp4" + }, + "metadata": { + "designer": { + "x": 300, + "y": 150 + }, + "restore": { + "__IMTCONN__": { + "label": "My Google connection (zumix.cpp@gmail.com)" + }, + "spreadsheetId": { + "mode": "chose", + "label": "CI-Specs" + } + }, + "parameters": [ + { + "name": "__IMTCONN__", + "type": "account", + "label": "Connection", + "required": true + } + ], + "expect": [ + { + "name": "spreadsheetId", + "type": "select", + "label": "Spreadsheet", + "required": true + }, + { + "name": "properties", + "spec": [ + { + "name": "title", + "type": "text", + "label": "Title" + }, + { + "name": "index", + "type": "number", + "label": "Index" + } + ], + "type": "collection", + "label": "Properties" + } + ], + "advanced": true + }, + "onerror": [ + { + "id": 6, + "module": "builtin:Resume", + "version": 1, + "parameters": {}, + "mapper": { + "spreadsheetId": "{{2.commit}}" + }, + "metadata": { + "designer": { + "x": 600, + "y": 300 + }, + "expect": [ + { + "name": "spreadsheetId", + "type": "text", + "label": "Spreadsheet ID" + } + ] + } + } + ] + }, + { + "id": 7, + "module": "google-sheets:updateRow", + "version": 2, + "parameters": { + "__IMTCONN__": 330921 + }, + "mapper": { + "mode": "map", + "values": { + "0": "CI", + "1": "commit", + "2": "OS type", + "3": "OS", + "4": "docker", + "5": "Time", + "6": "nproc", + "7": "RAM (GB)", + "8": "DISK", + "9": "DISK FREESPACE" + }, + "sheetId": "{{2.commit}}", + "rowNumber": "1", + "spreadsheetId": "14qym8t3cbMVaB3N3EZCR-2Y0ICcllf2q90N-hVaogp4", + "tableFirstRow": "A1:Z1", + "valueInputOption": "USER_ENTERED" + }, + "metadata": { + "designer": { + "x": 600, + "y": 0 + }, + "restore": { + "mode": { + "label": "Map spreadsheet and sheet manually" + }, + "__IMTCONN__": { + "label": "My Google connection (zumix.cpp@gmail.com)" + }, + "tableFirstRow": { + "label": "A-Z" + }, + "valueInputOption": { + "mode": "chose", + "label": "User entered" + } + }, + "parameters": [ + { + "name": "__IMTCONN__", + "type": "account", + "label": "Connection", + "required": true + } + ], + "expect": [ + { + "name": "mode", + "type": "select", + "label": "Mode", + "required": true, + "validate": { + "enum": [ + "select", + "map" + ] + } + }, + { + "name": "valueInputOption", + "type": "select", + "label": "Value input option", + "validate": { + "enum": [ + "USER_ENTERED", + "RAW" + ] + } + }, + { + "name": "spreadsheetId", + "type": "text", + "label": "Spreadsheet", + "required": true + }, + { + "name": "sheetId", + "type": "text", + "label": "Sheet", + "required": true + }, + { + "name": "rowNumber", + "type": "uinteger", + "label": "Row number", + "required": true + }, + { + "name": "tableFirstRow", + "type": "select", + "label": "Column range", + "required": true, + "validate": { + "enum": [ + "A1:Z1", + "A1:BZ1", + "A1:CZ1", + "A1:DZ1", + "A1:MZ1", + "A1:ZZ1" + ] + } + }, + { + "name": "values", + "spec": [ + { + "name": "0", + "type": "text", + "label": "A" + }, + { + "name": "1", + "type": "text", + "label": "B" + }, + { + "name": "2", + "type": "text", + "label": "C" + }, + { + "name": "3", + "type": "text", + "label": "D" + }, + { + "name": "4", + "type": "text", + "label": "E" + }, + { + "name": "5", + "type": "text", + "label": "F" + }, + { + "name": "6", + "type": "text", + "label": "G" + }, + { + "name": "7", + "type": "text", + "label": "H" + }, + { + "name": "8", + "type": "text", + "label": "I" + }, + { + "name": "9", + "type": "text", + "label": "J" + }, + { + "name": "10", + "type": "text", + "label": "K" + }, + { + "name": "11", + "type": "text", + "label": "L" + }, + { + "name": "12", + "type": "text", + "label": "M" + }, + { + "name": "13", + "type": "text", + "label": "N" + }, + { + "name": "14", + "type": "text", + "label": "O" + }, + { + "name": "15", + "type": "text", + "label": "P" + }, + { + "name": "16", + "type": "text", + "label": "Q" + }, + { + "name": "17", + "type": "text", + "label": "R" + }, + { + "name": "18", + "type": "text", + "label": "S" + }, + { + "name": "19", + "type": "text", + "label": "T" + }, + { + "name": "20", + "type": "text", + "label": "U" + }, + { + "name": "21", + "type": "text", + "label": "V" + }, + { + "name": "22", + "type": "text", + "label": "W" + }, + { + "name": "23", + "type": "text", + "label": "X" + }, + { + "name": "24", + "type": "text", + "label": "Y" + }, + { + "name": "25", + "type": "text", + "label": "Z" + } + ], + "type": "collection", + "label": "Values" + } + ] + } + }, + { + "id": 3, + "module": "google-sheets:addRow", + "version": 2, + "parameters": { + "__IMTCONN__": 330921 + }, + "mapper": { + "mode": "map", + "values": { + "0": "{{2.ci}}", + "1": "{{2.commit}}", + "2": "{{2.os}}", + "3": "{{2.os_name}}", + "4": "{{2.docker}}", + "5": "{{2.time}}", + "6": "{{2.nproc}}", + "7": "{{2.ram}}", + "8": "{{2.disk}}", + "9": "{{2.disk_avail}}" + }, + "sheetId": "{{2.commit}}", + "spreadsheetId": "14qym8t3cbMVaB3N3EZCR-2Y0ICcllf2q90N-hVaogp4", + "tableFirstRow": "A1:Z1", + "insertDataOption": "INSERT_ROWS", + "valueInputOption": "USER_ENTERED" + }, + "metadata": { + "designer": { + "x": 900, + "y": 0 + }, + "restore": { + "mode": { + "label": "Map spreadsheet and sheet manually" + }, + "__IMTCONN__": { + "label": "My Google connection (zumix.cpp@gmail.com)" + }, + "tableFirstRow": { + "label": "A-Z" + }, + "insertDataOption": { + "mode": "chose", + "label": "Insert rows" + }, + "valueInputOption": { + "mode": "chose", + "label": "User entered" + } + }, + "parameters": [ + { + "name": "__IMTCONN__", + "type": "account", + "label": "Connection", + "required": true + } + ], + "expect": [ + { + "name": "mode", + "type": "select", + "label": "Mode", + "required": true, + "validate": { + "enum": [ + "select", + "map" + ] + } + }, + { + "name": "valueInputOption", + "type": "select", + "label": "Value input option", + "validate": { + "enum": [ + "USER_ENTERED", + "RAW" + ] + } + }, + { + "name": "insertDataOption", + "type": "select", + "label": "Insert data option", + "validate": { + "enum": [ + "INSERT_ROWS", + "OVERWRITE" + ] + } + }, + { + "name": "spreadsheetId", + "type": "text", + "label": "Spreadsheet", + "required": true + }, + { + "name": "sheetId", + "type": "text", + "label": "Sheet", + "required": true + }, + { + "name": "tableFirstRow", + "type": "select", + "label": "Column range", + "required": true, + "validate": { + "enum": [ + "A1:Z1", + "A1:BZ1", + "A1:CZ1", + "A1:DZ1", + "A1:MZ1", + "A1:ZZ1" + ] + } + }, + { + "name": "values", + "spec": [ + { + "name": "0", + "type": "text", + "label": "A" + }, + { + "name": "1", + "type": "text", + "label": "B" + }, + { + "name": "2", + "type": "text", + "label": "C" + }, + { + "name": "3", + "type": "text", + "label": "D" + }, + { + "name": "4", + "type": "text", + "label": "E" + }, + { + "name": "5", + "type": "text", + "label": "F" + }, + { + "name": "6", + "type": "text", + "label": "G" + }, + { + "name": "7", + "type": "text", + "label": "H" + }, + { + "name": "8", + "type": "text", + "label": "I" + }, + { + "name": "9", + "type": "text", + "label": "J" + }, + { + "name": "10", + "type": "text", + "label": "K" + }, + { + "name": "11", + "type": "text", + "label": "L" + }, + { + "name": "12", + "type": "text", + "label": "M" + }, + { + "name": "13", + "type": "text", + "label": "N" + }, + { + "name": "14", + "type": "text", + "label": "O" + }, + { + "name": "15", + "type": "text", + "label": "P" + }, + { + "name": "16", + "type": "text", + "label": "Q" + }, + { + "name": "17", + "type": "text", + "label": "R" + }, + { + "name": "18", + "type": "text", + "label": "S" + }, + { + "name": "19", + "type": "text", + "label": "T" + }, + { + "name": "20", + "type": "text", + "label": "U" + }, + { + "name": "21", + "type": "text", + "label": "V" + }, + { + "name": "22", + "type": "text", + "label": "W" + }, + { + "name": "23", + "type": "text", + "label": "X" + }, + { + "name": "24", + "type": "text", + "label": "Y" + }, + { + "name": "25", + "type": "text", + "label": "Z" + } + ], + "type": "collection", + "label": "Values" + } + ], + "advanced": true + } + } + ], + "metadata": { + "version": 1, + "scenario": { + "roundtrips": 1, + "maxErrors": 3, + "autoCommit": false, + "sequential": false, + "confidential": false, + "dataloss": false, + "dlq": false + }, + "designer": { + "orphans": [] + }, + "zone": "eu1.integromat.com" + } +} \ No newline at end of file