{"id":19535595,"url":"https://github.com/miyako/4d-template-component-cicd","last_synced_at":"2025-08-20T19:16:48.200Z","repository":{"id":225842781,"uuid":"767013441","full_name":"miyako/4d-template-component-cicd","owner":"miyako","description":"A template repository for 4D component developement","archived":false,"fork":false,"pushed_at":"2024-08-21T04:00:17.000Z","size":191,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-14T06:31:48.940Z","etag":null,"topics":["4d-action","4d-component","4d-workflow","cicd","tool4d"],"latest_commit_sha":null,"homepage":"","language":"4D","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/miyako.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-04T14:50:47.000Z","updated_at":"2025-02-14T09:47:20.000Z","dependencies_parsed_at":"2024-03-04T16:47:21.615Z","dependency_job_id":"d3ee91ff-e4f4-4c0e-a3dd-b82fd3a8c486","html_url":"https://github.com/miyako/4d-template-component-cicd","commit_stats":null,"previous_names":["miyako/4d-template-component-cicd"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/miyako/4d-template-component-cicd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miyako%2F4d-template-component-cicd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miyako%2F4d-template-component-cicd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miyako%2F4d-template-component-cicd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miyako%2F4d-template-component-cicd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miyako","download_url":"https://codeload.github.com/miyako/4d-template-component-cicd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miyako%2F4d-template-component-cicd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271370283,"owners_count":24747802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["4d-action","4d-component","4d-workflow","cicd","tool4d"],"created_at":"2024-11-11T02:19:15.856Z","updated_at":"2025-08-20T19:16:48.177Z","avatar_url":"https://github.com/miyako.png","language":"4D","funding_links":[],"categories":[],"sub_categories":[],"readme":"A template repository for 4D component developement.\n\n# About\n\nThis repository is configured to enable CI/CD of [4D components](https://developer.4d.com/docs/Concepts/components) using a chain of [GitHub Actions](https://docs.github.com/en/actions).\n\nYou may clone it to get started with your own 4D component development on GitHub.\n\n**Note**: If you rename the project, you should modify `env.project_path` in your [`publish.yml`](https://github.com/miyako/4d-template-component-cicd/blob/main/.github/workflows/publish.yml).\n\nSee also [`test-build-component.yml`](https://github.com/miyako/4d-template-component-cicd/blob/main/.github/workflows/test-build-component.yml#L18), [`run-tests.yml`](https://github.com/miyako/4d-template-component-cicd/blob/main/.github/workflows/run-tests.yml#L15).\n\nThe build destination path is `${PWD}`. See [`miyako/4D/.github/actions/build-component`](https://github.com/miyako/4D/blob/v1/.github/actions/build-component/action.yml#L36) \n\n```yml\nenv: \n  project_path: example/Project/example.4DProject\n```\n\n### Development\n\nWhenever you push changes to your `main` branch, the default workflow is automatically triggered in `patch` mode.\n\n```yml\non:\n  push:\n    branches:\n    - main\n    paths:\n      - '*/Project/Sources/**/*.4dm'\n      - '*/Project/Sources/*/*.4DForm'\n      - '*/Project/Sources/*.4DCatalog'\n      - '*/Project/Resources/**'\n```\n\n### Deployment\n\nYou can manually dispatch the default workflow for any branch, in either `patch` `minor` `major` mode.\n\n\u003cimg src=\"https://github.com/miyako/4d-template-component-cicd/assets/1725068/552b0968-5672-42d8-a1b9-a94711b8bfb8\" style=\"height:240px;width:auto;\" /\u003e\n\n## Workflow\n\nThe workflow does the following:\n\n1. The project is compiled on a GitHub hosted runner (`macos-latest`) using `tool4d`.\n1. The project is built as a component for ARM/Apple Silicon and AMD/Intel processors.\n1. The component is signed with your **Apple Developer ID Application** certificate.\n1. The component is submitted to Apple for notarisation.\n1. The component is published under Releases (.zip and .dmg format).\n\n# Prerequisites\n\nThe repository must have [`package.json`](https://github.com/miyako/4d-template-component-cicd/blob/main/package.json) file  at the root level. \n\n**Note**: The format is obviously inspired by, but not necessarily relate to, `npm`. In future versions, 4D may roll out its own way of managing dependencies.\n\nIn addition to arbitrary meta properties, you should provide the following build parameters:\n\n|Path|Type|Description\n|:-|:-:|:-|\n|version|Text|[semantic versioning 2.0.0](https://semver.org)|\n|tool.platform|Text|always `macos`|\n|tool.branch|Text|default=`20.x`|\n|tool.version|Text|default=`20.2`|\n|tool.build|Text|default=`latest`|\n|tool.arch|Text|`x86` or `arm`|\n\n**Note**: ~~Free GitHub hosted macOS runners are running on Intel. If you have a subscription, you can select [ARM hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-larger-runners/about-larger-runners)~~. ARM macOS runners are now [available](https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners). \n\n* For Feature Releases, the space should be URL encoded, e.g. `20%20Rx` `20%20R6`.\n* The `latest` keyword can't be used while a Feature Release is in beta.\n\nYour Apple Developer credentials should be stored in [GitHub Actions secrets](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions).\n\nFrom Xcode or Keychain, [export signing certificate](https://help.apple.com/xcode/mac/current/#/dev154b28f09). You will be asked to set a password.\n\n\u003cimg src=\"https://github.com/miyako/4d-template-component-cicd/assets/1725068/f5a70c38-ace0-424b-a62a-40c058ea1667\" width=\"auto\" height=\"300px\" /\u003e\n\n|Secret|Description\n|:-|:-|\n|`APPLE_DEVELOPER_ID_CERTIFICATE`|base64 encoded|\n|`APPLE_DEVELOPER_ID_CERTIFICATE_PASSWORD`|password to read the certificate|\n|`KEYCHAIN_PASSWORD`|an arbitrary password (used to access temporary keychain)|\n|`NOTARYTOOL_APPLE_ID`|`xcrun notarytool submit` parameter|\n|`NOTARYTOOL_TEAM_ID`|`xcrun notarytool submit` parameter|\n|`NOTARYTOOL_PASSWORD`|`xcrun notarytool submit` parameter|\n|`CODESIGN_APPLE_ID`|`codesign`parameter|\n\n# Reusable Workflow Actions\n\nThe following actions are used by the default workflow. If your repository is not allowed to execute [external workflows](https://docs.github.com/en/enterprise-cloud@latest/actions/using-workflows/reusing-workflows), clone them.\n\n* [`miyako/4D/.github/actions/package-set-version@v1`](https://github.com/miyako/4D/blob/v1/.github/actions/package-set-version/action.yml) - update \n`package.json`\n* [`miyako/4D/.github/actions/tool4d-get-version@v1`](https://github.com/miyako/4D/blob/v1/.github/actions/tool4d-get-version/action.yml) - parse `package.json`\n* [`miyako/4D/.github/actions/tool4d-download@v1`](https://github.com/miyako/4D/blob/v1/.github/actions/tool4d-download/action.yml) - download `tool4d`\n* [`miyako/4D/.github/actions/build-component@v1`](https://github.com/miyako/4D/blob/v1/.github/actions/build-component/action.yml) - build component with `tool4d`\n* [`miyako/4D/.github/actions/deployment-setup-keychain@v1`](https://github.com/miyako/4D/blob/v1/.github/actions/deployment-setup-keychain/action.yml) -setup keychain with secrets\n* [`miyako/4D/.github/actions/deployment-codesign-product@v1`](https://github.com/miyako/4D/blob/v1/.github/actions/deployment-codesign-product/action.yml) - codesign and notarise component\n* [`miyako/4D/.github/actions/deployment-create-zip@v1`](https://github.com/miyako/4D/blob/v1/.github/actions/deployment-create-zip/action.yml) - create .zip from .dmg\n* [`miyako/4D/.github/actions/deployment-release-assets@v1`](https://github.com/miyako/4D/blob/v1/.github/actions/deployment-release-assets/action.yml) - upload .zip and .dmg\n\nIn addition, the following GitHub workflow actions are used internally.\n\n* [`actions/upload-release-asset@v1`](https://github.com/actions/upload-release-asset) \n* [`actions/create-release@v1`](https://github.com/actions/actions/create-release)\n\n# References\n\n[Installing an Apple certificate on macOS runners for Xcode development](https://docs.github.com/en/actions/deployment/deploying-xcode-applications/installing-an-apple-certificate-on-macos-runners-for-xcode-development)\n\nc.f. https://localazy.com/blog/how-to-automatically-sign-macos-apps-using-github-actions\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiyako%2F4d-template-component-cicd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiyako%2F4d-template-component-cicd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiyako%2F4d-template-component-cicd/lists"}