Skip to content

Improve CI/CD for the repo.  #57

@tok-kkk

Description

@tok-kkk

Object

We want to have a test suite build into our CI system which helps us reduce the amount of manual testing. The test suite should cover most of the CLI command and tests on different VPSs and systems.

Design

Testing Accounts

We should create separate accounts or sub-users of our main account and limit the service access. This ensures the safety of our VPS main account. We also need to make sure the account credential is private. (i.e. set up as Github secrets or environment variables)

Testing cases

CI should be triggered on every new commit. Both CircleCI and GitHub Actions allow you to skip certain commits if you have [skip ci] in the title or description. source.It should cover both positive and negative test cases. And tests against different VPS should be running parallel if that's possible. It should test the following cases:

  • Test the CLI binary is working and returns the expected version.
  • up a couple of nodes with different options and destroy them with different options.
  • Deploy a node, testing following cases before destroy
    • check start, stop and restart commands are able to control the darknode status.
    • check list command show the correct info of the darknode
    • check update command is able to compare the versions and do an update when outdated.
    • try resize the darknode to an upper tier and a lower tier and check the darknode status
    • check exec command with different options

Discussion

  • Github Actions VS CircleCI
    I personally favour CircleCI as we already have everything set up in CircleCI and it has some features which Github Actions doesn't have. Github Action is also good in terms of github integration, the setup should be more easy and friendly than CircleCi. We can achieve the same result with Github Actions, but with more developing time.

  • Not sure how can we test the ssh command in CI.

Metadata

Metadata

Assignees

Labels

featureNew feature or requestwipWork in progress

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions