Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows testing #548

Closed
bsideup opened this issue Jan 18, 2018 · 11 comments
Closed

Windows testing #548

bsideup opened this issue Jan 18, 2018 · 11 comments

Comments

@bsideup
Copy link
Member

bsideup commented Jan 18, 2018

We should consider different options for a Windows CI environment because ATM we only test it manually

@AnkBurov
Copy link
Contributor

AnkBurov commented Jan 25, 2018

Try https://www.appveyor.com/
It's free for open-source projects and works with Maven.

@kiview
Copy link
Member

kiview commented Jan 25, 2018

Hey @AnkBurov, thanks for the suggestion. We've already looked into appveyor a couple of time, but currently they aren't supporting Linux Containers (LCOW). Once the provided Windows images will support LCOW and WCOW simultaneously, this might be a good solution.

@stale
Copy link

stale bot commented Oct 28, 2018

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you believe this is a mistake, please reply to this comment to keep it open. If there isn't one already, a PR to fix or at least reproduce the problem in a test case will always help us get back on track to tackle this.

@stale stale bot added the stale label Oct 28, 2018
@stale stale bot removed the stale label Nov 5, 2018
@kiview
Copy link
Member

kiview commented Nov 5, 2018

We are currently working on a Windows CI environment in TeamCity.

rnorth pushed a commit that referenced this issue Dec 23, 2018
Bumps [neo4j-java-driver](https://github.com/neo4j/neo4j-java-driver) from 1.7.1 to 1.7.2.
<details>
<summary>Commits</summary>

- [`7165cef`](neo4j/neo4j-java-driver@7165cef) Merge branch 1.6 into 1.7
- [`15fc20c`](neo4j/neo4j-java-driver@15fc20c) Merge pull request [#548](https://github-redirect.dependabot.com/neo4j/neo4j-java-driver/issues/548) from ali-ince/1.6-fix-auto-read-for-routing
- [`3940159`](neo4j/neo4j-java-driver@3940159) Update stub server test scripts for latest boltkit
- [`23153f4`](neo4j/neo4j-java-driver@23153f4) Make channel auto-read management to work on routing driver
- See full diff in [compare view](neo4j/neo4j-java-driver@1.7.1...1.7.2)
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=org.neo4j.driver:neo4j-java-driver&package-manager=gradle&previous-version=1.7.1&new-version=1.7.2)](https://dependabot.com/compatibility-score.html?dependency-name=org.neo4j.driver:neo4j-java-driver&package-manager=gradle&previous-version=1.7.1&new-version=1.7.2)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in the `.dependabot/config.yml` file in this repo:
- Update frequency (including time of day and day of week)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

</details>
rnorth pushed a commit that referenced this issue Apr 10, 2019
Bumps [amqp-client](https://github.com/rabbitmq/rabbitmq-java-client) from 5.6.0 to 5.7.0.
<details>
<summary>Release notes</summary>

*Sourced from [amqp-client's releases](https://github.com/rabbitmq/rabbitmq-java-client/releases).*

> ## 5.7.0
> # Changes between 5.6.0 and 5.7.0
> 
> This is a minor release with usability improvements and dependency upgrades. All users of the 5.x.x series are encouraged to upgrade to this version.
> 
> ## Improve logging for TLS connections
> 
> GitHub issue: [#441](https://github-redirect.dependabot.com/rabbitmq/rabbitmq-java-client/issues/441)
> 
> ## Don't panic when cancelling an unknown consumer
> 
> GitHub issue: [#525](https://github-redirect.dependabot.com/rabbitmq/rabbitmq-java-client/issues/525)
> 
> ## Bump dependencies
> 
> GitHub issue: [#607](https://github-redirect.dependabot.com/rabbitmq/rabbitmq-java-client/issues/607) 
> 
> ## 5.7.0.RC1
> # Changes between 5.6.0 and 5.7.0.RC1
> 
> This is a pre-release for 5.7.0, a maintenance release with usability improvements and dependency upgrades. All users of the 5.x.x series are encouraged to test this version.
> 
> ## Improve logging for TLS connections
> 
> GitHub issue: [#441](https://github-redirect.dependabot.com/rabbitmq/rabbitmq-java-client/issues/441)
> 
> ## Don't panic when cancelling an unknown consumer
> 
> GitHub issue: [#525](https://github-redirect.dependabot.com/rabbitmq/rabbitmq-java-client/issues/525)
> 
> ## Bump dependencies
> 
> GitHub issue: [#607](https://github-redirect.dependabot.com/rabbitmq/rabbitmq-java-client/issues/607) 
</details>
<details>
<summary>Changelog</summary>

*Sourced from [amqp-client's changelog](https://github.com/rabbitmq/rabbitmq-java-client/blob/v5.7.0/release-versions.txt).*

> RELEASE_VERSION="5.7.0"
> DEVELOPMENT_VERSION="5.8.0-SNAPSHOT"
</details>
<details>
<summary>Commits</summary>

- [`57aa724`](rabbitmq/rabbitmq-java-client@57aa724) [maven-release-plugin] prepare release v5.7.0
- [`1928ce8`](rabbitmq/rabbitmq-java-client@1928ce8) Set release version to 5.7.0
- [`9f2dffe`](rabbitmq/rabbitmq-java-client@9f2dffe) [maven-release-plugin] prepare for next development iteration
- [`e79ed4d`](rabbitmq/rabbitmq-java-client@e79ed4d) [maven-release-plugin] prepare release v5.7.0.RC1
- [`bb8f6ed`](rabbitmq/rabbitmq-java-client@bb8f6ed) Bump test dependencies
- [`953d255`](rabbitmq/rabbitmq-java-client@953d255) Bump dependencies
- [`e49f66d`](rabbitmq/rabbitmq-java-client@e49f66d) Add comment to explain decision tree
- [`365dd22`](rabbitmq/rabbitmq-java-client@365dd22) Add test for Channel#basicCancel with unknown consumer tag
- [`6081628`](rabbitmq/rabbitmq-java-client@6081628) Log warning when receiving basic.cancel for unknown consumer
- [`be57b26`](rabbitmq/rabbitmq-java-client@be57b26) Merge pull request [#548](https://github-redirect.dependabot.com/rabbitmq/rabbitmq-java-client/issues/548) from spring-operator/polish-urls-apache-license-5.x.x...
- Additional commits viewable in [compare view](rabbitmq/rabbitmq-java-client@v5.6.0...v5.7.0)
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=com.rabbitmq:amqp-client&package-manager=gradle&previous-version=5.6.0&new-version=5.7.0)](https://dependabot.com/compatibility-score.html?dependency-name=com.rabbitmq:amqp-client&package-manager=gradle&previous-version=5.6.0&new-version=5.7.0)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
If all status checks pass Dependabot will automatically merge this pull request.

[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in the `.dependabot/config.yml` file in this repo:
- Update frequency (including time of day and day of week)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

</details>
@isen-ng
Copy link

isen-ng commented Nov 20, 2019

AppVeyor has LCOW support now:
https://www.appveyor.com/blog/2019/10/11/vs2019-image-with-docker-wsl-preheated/

However, I would like to add that upon preliminary testing, the version of LCOW that AppVeyor is using seems different from the version of LCOW that docker has supported since 2016.

The reason I say this is that, on my Windows desktop (running Linux containers), I could mount //var/run/docker.sock:/var/run/docker.sock (just like how you do it in linux), Ryuk will run, and all of my tests run.

However, when pushed to AppVeyor (using their LCOW), they complain that //var/run/docker.sock is an invalid mount path. In the build details, you can see the docker info (using lcow) and the exact error thrown. https://ci.appveyor.com/project/isen-ng/testcontainers-dotnet/builds/28955746

I have not had time to investigate further, but I believe this is the issue:
https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers

I highly suspect that I am using LCOW with LinuxKit, while AppVeyor is using LCOW with Hyper-V (or vice-versa). And both are valid use-cases. I need find a way to detect this, and apply the correct config/mounts.

If this hypothesis turns out to be true, this means that AppVeyor can run CI to test LCOW with Hyper-V but there are still no tests for LCOW with LinuxKit.

@isen-ng
Copy link

isen-ng commented Nov 24, 2019

I have confirmed this behavior with further testing.

AppVeyor's LCOW support uses the experimental feature described in https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers

The problem with this experimental feature is that it is incomplete, meaning there is no way to mount /var/run/docker.sock into Ryuk.

Running a pure linux command gives the expected exception

$ docker run --rm -v //var/run/docker.sock:/var/run/docker.sock quay.io/testcontainers/ryuk:0.2.3
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: invalid volume specification: '//var/run/docker.sock:/var/run/docker.sock'.

Running the windows command gives another exception

$ docker run --rm -v //./pipe/docker_engine:/var/run/docker.sock quay.io/testcontainers/ryuk:0.2.3
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: invalid volume specification: '//./pipe/docker_engine:/var/run/docker.sock': invalid mount config for type "npipe": Linux containers on Windows do not support named pipe mounts.

This current problem is discussed in moby/moby#36574

Essentially, the new experimental LCOW does not support docker in docker and cannot be used to run Ryuk and TestContainers in most cases.

Now, I just need to find a CI that runs the regular LCOW on Windows.

P.S. In any case, the experimental LCOW requires a new flag --platform which most Docker API implementations do not support yet.

@bsideup
Copy link
Member Author

bsideup commented Nov 24, 2019

FTR we do test every master build on Windows, and some PRs when needed

@isen-ng
Copy link

isen-ng commented Nov 27, 2019

Ohhh! you have your own Windows VM with linux containers!

@bsideup
Copy link
Member Author

bsideup commented Nov 27, 2019

Well, it is not even a VM, but a mini Dell OptiPlex hosted at my place 😂

@isen-ng
Copy link

isen-ng commented Nov 29, 2019

This is what I call, dedication. Up till now, I cannot find a Win10 (with GUI) ci solution for free yet.

@bsideup
Copy link
Member Author

bsideup commented Jan 31, 2020

@bsideup bsideup closed this as completed Jan 31, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants