Native Shell
Native Shell:AI 生成的 UI,在你的應用中原生呈現,涵蓋每個平台。iOS、Android、macOS、Windows 與 Linux 上的應用、GPUI 應用與網頁在執行時載入已簽名、沙箱隔離的 TSX 模組並繪製 th
AI 翻譯
Deploy software to multi-cloud, hybrid, and on-premises environments with Octopus Deploy, the continuous deployment software. Save 2000 hours per rollout, ensure reliable deployments, and automate rou
翻譯準備中
開發工具Java · JavaScriptGitHub @OctopusDeploy上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
| Public | JetBrains TeamCity plugin to trigger releases on build completion
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗This plug-in allows TeamCity builds to trigger deployments in Octopus Deploy.
Download the plugin from the Octopus Deploy downloads page or the JetBrains plugins downloads.
Installation and usage instructions are available in the Octopus Deploy documentation.
To build the plugin from code:
gradlew clean distZipgradlew script will download Gradle for you if it is not already installed.build/distributions/Octopus.TeamCity.<X.Y.Z>.zip (where X.Y.Z is the
SemVer of the release, potentially including 'SNAPSHOT').C:\TeamCity. Allow the service to start for the first time, and add
an admin user. Then stop the service so it is not running.C:\ProgramData\JetBrains\TeamCity). This folder may be hidden.Start a Teamcity server and agent manually, then install the built plugin via the administration-> plugins menu option.
You can then attach to the server/agent via the provided run-configurations, and step through the plugin code when build steps are configured (on server) or executed (on agent).
The TeamCity Plugin uses Github actions for all CI/CD/Release operations.
The plugin bundles the Octopus CLI, which is downloaded at build time rather than kept in git. To change the version:
octopusCliVersion in gradle.properties to the new release.octopusCliSha256* hash in gradle.properties with the matching line from that
release's SHA256SUMS file.The build fails if a downloaded archive does not match its hash.
Some docker files have been provided to assist development for users who may not have all the prerequisite tooling available on their local machine for development. This process will currently be slower and does not provide the benefits of debugging at this point in time.
docker-compose -f docker-compose.teamcity.yml up -d to allow the TeamCity server and agent
spin up. This will take some time to initialize and will store the configuration files
under ./docker-files. This will allow for both restarting the server without the full
initialization and to pass in the Octopus plugin.Agents->Unauthorized and authorise the agent that was started
in a container alongside the server.docker-compose -f docker-compose.build.yml up. This will use a
gradle image, mount the current directory and invoke the gradlew command described above. At
the end of the build the plugin will be copied into the TeamCity plugins directory created by the
container in the previous step.docker restart octopus-teamcity_teamcity-server_1.host.docker.internal route. e.g. http://host.docker.internal:8065The e2e suite spins up real TeamCity + agent + free-tier Octopus + MSSQL containers via Testcontainers (Docker). To run it:
./gradlew :e2e:playwrightInstall # once — only for the Playwright UI tests
./gradlew :e2e:e2eTest # run the suite (add --tests "*SomeTest" for one)
On macOS/Windows, run it inside the provided Linux container instead so the Playwright UI tests work:
docker compose -f e2e/docker-compose.yml up --abort-on-container-exit --exit-code-from e2e
See docs/e2e-tests.md for prerequisites, the TEAMCITY_PLUGIN_DIST and
GRADLE_TESTS options, how to add a test, and interactive manual testing.
An Octopus connection can supply credentials three ways, chosen by the API key source field:
%octopus.apikey%. Keep the
secret in that TeamCity parameter; the connection just points at it.%jwt.token%).
This option appears only when an OIDC connector exists in the project.Note: The OIDC token is short-lived (the JWT lifetime defaults to ~10 minutes). The CLI logs in once and reuses the session, so a single long-running deploy-with-wait that outlives the token may fail when it expires.
The Space field on a connection and on each step suggests the spaces on the connection's Octopus server. Choosing a suggestion stores the space's id as well as its name, and the id keeps working after the space is renamed in Octopus. Anything else typed, including a parameter reference, is stored as the name.
Suggestions come from a saved connection. A step that enters its own URL and API key, or a connection with unsaved changes, gets none; type the space name instead.
Listing spaces for a connection that uses an OIDC token needs:
connection_project:<project internal id>:connection:<connection id>:.
Give the Octopus service account an OIDC identity with the subject
connection_project:<project internal id>:connection:<connection id>:*, which matches both the
space lookup and the builds that use the connection.The Build Information step normally detects the branch automatically from the build's VCS
branch via the TeamCity REST API. Check Override branch to supply it yourself — enter either a
literal branch name or a TeamCity parameter reference (e.g. %teamcity.build.branch% or
%env.BRANCH%); TeamCity resolves parameter references in this plain text field before the value
reaches the agent, so no special handling is needed.
The version is computed from git, and releases are cut by release-please from Conventional Commit messages.
The plugin version for a build is computed by GitVersion (GitVersion.yml,
mode: ContinuousDelivery) and passed to Gradle as -Pversion=<computed>: pull-request builds get
a pre-release version naming the commit they came from (e.g. 6.3.1-PullRequest192.31.gabc1234) and
release builds get the tagged version.
The version in gradle.properties is the fallback for local builds (./gradlew distZip with no
-Pversion).
Releases are driven by Conventional Commit messages and the release-please workflow
(.github/workflows/release.yml, run on each push to main):
main via PRs with Conventional Commit messages: fix: bumps the patch, feat:
the minor, and !/BREAKING CHANGE: the major (docs:, style:, test:, chore: don't bump
the version).CHANGELOG.md.vX.Y.Z) and the GitHub Release.Publishing the GitHub Release triggers the build workflow (.github/workflows/main.yml, on
release: [published]), which builds and tests at the release version and creates a release in
Octopus Deploy.
The package reaches the JetBrains Marketplace via Octopus Deploy: promoting the TeamCity Plugin from "Components - Internal" to "Components - External" runs a script that pushes the package to JetBrains.