Mercurial > hg
annotate .hgignore @ 42024:b05a3e28cf24
automation: perform tasks on remote machines
Sometimes you don't have access to a machine in order to
do something. For example, you may not have access to a Windows
machine required to build Windows binaries or run tests on that
platform.
This commit introduces a pile of code intended to help
"automate" common tasks, like building release artifacts.
In its current form, the automation code provides functionality
for performing tasks on Windows EC2 instances.
The hgautomation.aws module provides functionality for integrating
with AWS. It manages EC2 resources such as IAM roles, EC2
security groups, AMIs, and instances.
The hgautomation.windows module provides a higher-level
interface for performing tasks on remote Windows machines.
The hgautomation.cli module provides a command-line interface to
these higher-level primitives.
I attempted to structure Windows remote machine interaction
around Windows Remoting / PowerShell. This is kinda/sorta like
SSH + shell, but for Windows. In theory, most of the functionality
is cloud provider agnostic, as we should be able to use any
established WinRM connection to interact with a remote. In
reality, we're tightly coupled to AWS at the moment because
I didn't want to prematurely add abstractions for a 2nd cloud
provider. (1 was hard enough to implement.)
In the aws module is code for creating an image with a fully
functional Mercurial development environment. It contains VC9,
VC2017, msys, and other dependencies. The image is fully capable
of building all the existing Mercurial release artifacts and
running tests.
There are a few things that don't work. For example, running
Windows tests with Python 3. But building the Windows release
artifacts does work. And that was an impetus for this work.
(Although we don't yet support code signing.)
Getting this functionality to work was extremely time consuming.
It took hours debugging permissions failures and other wonky
behavior due to PowerShell Remoting. (The permissions model for
PowerShell is crazy and you brush up against all kinds of
issues because of the user/privileges of the user running
the PowerShell and the permissions of the PowerShell session
itself.)
The functionality around AWS resource management could use some
improving. In theory we support shared tenancy via resource
name prefixing. In reality, we don't offer a way to configure
this.
Speaking of AWS resource management, I thought about using a tool
like Terraform to manage resources. But at our scale, writing a
few dozen lines of code to manage resources seemed acceptable.
Maybe we should reconsider this if things grow out of control.
Time will tell.
Currently, emphasis is placed on Windows. But I only started
there because it was likely to be the most difficult to implement.
It should be relatively trivial to automate tasks on remote Linux
machines. In fact, I have a ~1 year old script to run tests on a
remote EC2 instance. I will likely be porting that to this new
"framework" in the near future.
# no-check-commit because foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6142
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Fri, 15 Mar 2019 11:24:08 -0700 |
parents | aab43d5861bb |
children | 8492c6293c31 |
rev | line source |
---|---|
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
1 syntax: glob |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
2 |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
3 *.elc |
19991
ce5d711475a3
Makefile: do update on a temporary copy of a po file
Simon Heimberg <simohe@besonet.ch>
parents:
19426
diff
changeset
|
4 *.tmp |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
5 *.orig |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
6 *.rej |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
7 *~ |
5019
e6cc4d4f5a81
Ignore mergebackup files generated by mpatch
Bryan O'Sullivan <bos@serpentine.com>
parents:
2987
diff
changeset
|
8 *.mergebackup |
2341
dbbe7f72d15a
contrib: add restricted shell.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2151
diff
changeset
|
9 *.o |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
10 *.so |
13643
537899158396
hgignore: ignore dll files generated under cygwin
Craig Leres <leres@ee.lbl.gov>
parents:
13346
diff
changeset
|
11 *.dll |
17115
b52d08b930c5
hgignore: simply ignore all *.exe's everywhere
Adrian Buehlmann <adrian@cadifra.com>
parents:
16537
diff
changeset
|
12 *.exe |
6551 | 13 *.pyd |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
14 *.pyc |
13346
91fe769ac84e
hgignore: ignore more bytecode
Simon Heimberg <simohe@besonet.ch>
parents:
11380
diff
changeset
|
15 *.pyo |
91fe769ac84e
hgignore: ignore more bytecode
Simon Heimberg <simohe@besonet.ch>
parents:
11380
diff
changeset
|
16 *$py.class |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
17 *.swp |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
18 *.prof |
17274
2426ec322cd1
hgignore: ignore zip files
Adrian Buehlmann <adrian@cadifra.com>
parents:
17115
diff
changeset
|
19 *.zip |
8147
441dc7becd43
win32text: be more careful about rejecting violating changesets
Bryan O'Sullivan <bos@serpentine.com>
parents:
7706
diff
changeset
|
20 \#*\# |
441dc7becd43
win32text: be more careful about rejecting violating changesets
Bryan O'Sullivan <bos@serpentine.com>
parents:
7706
diff
changeset
|
21 .\#* |
39491
4ca7a67c94c8
sparse-revlog: add a test checking revlog deltas for a churning file
Boris Feld <boris.feld@octobus.net>
parents:
38459
diff
changeset
|
22 tests/artifacts/cache/big-file-churn.hg |
2068
4a49daa3a40c
let run-tests run optional code coverage tests.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1817
diff
changeset
|
23 tests/.coverage* |
27634
a1eff44c432b
tests: write recent run times to a file named tests/.testtimes
Bryan O'Sullivan <bos@serpentine.com>
parents:
22945
diff
changeset
|
24 tests/.testtimes* |
28255
f75f7d39cca3
testing: generate tests operations using Hypothesis
David R. MacIver <david@drmaciver.com>
parents:
28061
diff
changeset
|
25 tests/.hypothesis |
f75f7d39cca3
testing: generate tests operations using Hypothesis
David R. MacIver <david@drmaciver.com>
parents:
28061
diff
changeset
|
26 tests/hypothesis-generated |
2151
0ce3cd330996
Ignore annotated coverage output of run-tests.py -C
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2068
diff
changeset
|
27 tests/annotated |
35190
bd8875b6473c
run-tests: mechanism to report exceptions during test execution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
28 tests/exceptions |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
29 tests/*.err |
15859
44a371823f83
tests: add htmlcov option
Markus Zapke-Gründemann <info@keimlink.de>
parents:
15702
diff
changeset
|
30 tests/htmlcov |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
31 build |
28061
3753d2e1759b
hgignore: ignore chg binary
Yuya Nishihara <yuya@tcha.org>
parents:
27634
diff
changeset
|
32 contrib/chg/chg |
2341
dbbe7f72d15a
contrib: add restricted shell.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2151
diff
changeset
|
33 contrib/hgsh/hgsh |
21874
8da01b6e7b49
contrib/vagrant: use Vagrant for running tests on virtual machine
anatoly techtonik <techtonik@gmail.com>
parents:
21560
diff
changeset
|
34 contrib/vagrant/.vagrant |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
35 dist |
21560
a9e1ab2da30d
packaging: move output directory from build/ to packages/
Matt Mackall <mpm@selenic.com>
parents:
19991
diff
changeset
|
36 packages |
19426
e43184680461
doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents:
17732
diff
changeset
|
37 doc/common.txt |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
38 doc/*.[0-9] |
19426
e43184680461
doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents:
17732
diff
changeset
|
39 doc/*.[0-9].txt |
1817
e02fea13c69d
Ignore generated documentation
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1270
diff
changeset
|
40 doc/*.[0-9].gendoc.txt |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
41 doc/*.[0-9].{x,ht}ml |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
42 MANIFEST |
14560
0980239cb20c
hgignore: ignore MANIFEST.in (generated since 2ce7dfe17bc5)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14538
diff
changeset
|
43 MANIFEST.in |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
44 patches |
28430
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28255
diff
changeset
|
45 mercurial/__modulepolicy__.py |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
46 mercurial/__version__.py |
17732
93d97a212559
exewrapper: adapt for legacy HackableMercurial
Adrian Buehlmann <adrian@cadifra.com>
parents:
17274
diff
changeset
|
47 mercurial/hgpythonlib.h |
11380
2bb6dbf04757
Ignore mercurial.egg-info build output
Lee Cantey <lcantey@gmail.com>
parents:
8147
diff
changeset
|
48 mercurial.egg-info |
2987
12d1475b48df
Ignore .DS_Store directories
Lee Cantey <lcantey@gmail.com>
parents:
2386
diff
changeset
|
49 .DS_Store |
5693
5d0b94d3ad0c
.hgignore += tags & cscope files
Kirill Smelkov <kirr@mns.spb.ru>
parents:
5622
diff
changeset
|
50 tags |
5d0b94d3ad0c
.hgignore += tags & cscope files
Kirill Smelkov <kirr@mns.spb.ru>
parents:
5622
diff
changeset
|
51 cscope.* |
22945
3232f92360d4
hgignore: ignore the PyCharm workspace folder
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
21874
diff
changeset
|
52 .idea/* |
30406
cff0f5926797
perf: add asv benchmarks
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
29031
diff
changeset
|
53 .asv/* |
7648
02e358a3a8a7
i18n: let Makefile generate i18n/hg.pot
Martin Geisler <mg@daimi.au.dk>
parents:
7439
diff
changeset
|
54 i18n/hg.pot |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
55 locale/*/LC_MESSAGES/hg.mo |
14538
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
13643
diff
changeset
|
56 hgext/__index__.py |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
57 |
35569
964212780daf
rust: implementation of `hg`
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35190
diff
changeset
|
58 rust/target/ |
39967
aab43d5861bb
rust-chg: add project skeleton
Yuya Nishihara <yuya@tcha.org>
parents:
39491
diff
changeset
|
59 rust/*/target/ |
35569
964212780daf
rust: implementation of `hg`
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35190
diff
changeset
|
60 |
32080
fcddcf442e4f
packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
30406
diff
changeset
|
61 # Generated wheels |
fcddcf442e4f
packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
30406
diff
changeset
|
62 wheelhouse/ |
fcddcf442e4f
packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents:
30406
diff
changeset
|
63 |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
64 syntax: regexp |
794
cdf61d3d3904
Ignore test error files, protect dot in .pc/
Thomas Arendsen Hein <thomas@intevation.de>
parents:
740
diff
changeset
|
65 ^\.pc/ |
7439
7dd44ad43914
Ignore eclipse droppings
Brendan Cully <brendan@kublai.com>
parents:
6551
diff
changeset
|
66 ^\.(pydev)?project |
15702
64a80204433f
ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents:
14560
diff
changeset
|
67 |
64a80204433f
ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents:
14560
diff
changeset
|
68 # hackable windows distribution additions |
16537
5068d0974278
update .hgignore for hackable with Python 2.7
Mads Kiilerich <mads@kiilerich.com>
parents:
15859
diff
changeset
|
69 ^hg-python |
15702
64a80204433f
ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents:
14560
diff
changeset
|
70 ^hg.py$ |