mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-25 09:37:37 +00:00
commit
76c056affd
@ -41,7 +41,6 @@ release for! The command examples assume that you have a git remote called
|
||||
- Please check https://hub.docker.com/r/mitmproxy/mitmproxy/tags/ about the latest version
|
||||
- Update `latest` tag: TODO write instructions
|
||||
|
||||
|
||||
## Website
|
||||
- Update version here:
|
||||
https://github.com/mitmproxy/www/blob/master/src/config.toml
|
||||
|
@ -13,6 +13,7 @@ import zipfile
|
||||
|
||||
import click
|
||||
import cryptography.fernet
|
||||
import parver
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
@ -106,64 +107,6 @@ class BuildEnviron:
|
||||
docker_password = os.environ.get("DOCKER_PASSWORD"),
|
||||
)
|
||||
|
||||
@property
|
||||
def has_docker_creds(self) -> bool:
|
||||
return self.docker_username and self.docker_password
|
||||
|
||||
@property
|
||||
def is_pull_request(self) -> bool:
|
||||
if self.appveyor_pull_request_number:
|
||||
return True
|
||||
if self.travis_pull_request and self.travis_pull_request != "false":
|
||||
return True
|
||||
return False
|
||||
|
||||
@property
|
||||
def tag(self):
|
||||
return self.travis_tag or self.appveyor_repo_tag_name
|
||||
|
||||
@property
|
||||
def branch(self):
|
||||
return self.travis_branch or self.appveyor_repo_branch
|
||||
|
||||
@property
|
||||
def version(self):
|
||||
name = self.tag or self.branch
|
||||
if not name:
|
||||
raise BuildError("We're on neither a tag nor a branch - could not establish version")
|
||||
return re.sub('^v', "", name)
|
||||
|
||||
@property
|
||||
def upload_dir(self):
|
||||
if self.tag:
|
||||
return self.version
|
||||
else:
|
||||
return "branches/%s" % self.version
|
||||
|
||||
@property
|
||||
def platform_tag(self):
|
||||
if self.system in self.PLATFORM_TAGS:
|
||||
return self.PLATFORM_TAGS[self.system]
|
||||
raise BuildError("Unsupported platform: %s" % self.system)
|
||||
|
||||
@property
|
||||
def release_dir(self):
|
||||
return os.path.join(self.root_dir, "release")
|
||||
|
||||
@property
|
||||
def build_dir(self):
|
||||
return os.path.join(self.release_dir, "build")
|
||||
|
||||
@property
|
||||
def dist_dir(self):
|
||||
return os.path.join(self.release_dir, "dist")
|
||||
|
||||
@property
|
||||
def docker_tag(self):
|
||||
if self.branch == "master":
|
||||
return "dev"
|
||||
return self.version
|
||||
|
||||
def archive(self, path):
|
||||
# ZipFile and tarfile have slightly different APIs. Fix that.
|
||||
if self.system == "Windows":
|
||||
@ -196,18 +139,24 @@ class BuildEnviron:
|
||||
return ret
|
||||
|
||||
@property
|
||||
def should_upload_docker(self) -> bool:
|
||||
return all([
|
||||
(self.tag or self.branch == "master"),
|
||||
self.should_build_docker,
|
||||
self.has_docker_creds,
|
||||
])
|
||||
def branch(self):
|
||||
return self.travis_branch or self.appveyor_repo_branch
|
||||
|
||||
@property
|
||||
def should_upload_pypi(self) -> bool:
|
||||
if self.tag and self.should_build_wheel and self.has_twine_creds:
|
||||
return True
|
||||
return False
|
||||
def build_dir(self):
|
||||
return os.path.join(self.release_dir, "build")
|
||||
|
||||
@property
|
||||
def dist_dir(self):
|
||||
return os.path.join(self.release_dir, "dist")
|
||||
|
||||
@property
|
||||
def docker_tag(self):
|
||||
if self.branch == "master":
|
||||
t = "dev"
|
||||
else:
|
||||
t = self.version
|
||||
return "mitmproxy/mitmproxy:{}".format(t)
|
||||
|
||||
def dump_info(self, fp=sys.stdout):
|
||||
lst = [
|
||||
@ -230,6 +179,71 @@ class BuildEnviron:
|
||||
for attr in lst:
|
||||
print("cibuild.%s=%s" % (attr, getattr(self, attr)), file=fp)
|
||||
|
||||
@property
|
||||
def has_docker_creds(self) -> bool:
|
||||
return self.docker_username and self.docker_password
|
||||
|
||||
@property
|
||||
def is_prod_release(self) -> bool:
|
||||
try:
|
||||
v = parver.Version.parse(self.version)
|
||||
except (parver.ParseError, BuildError):
|
||||
return False
|
||||
return not v.is_prerelease
|
||||
|
||||
@property
|
||||
def is_pull_request(self) -> bool:
|
||||
if self.appveyor_pull_request_number:
|
||||
return True
|
||||
if self.travis_pull_request and self.travis_pull_request != "false":
|
||||
return True
|
||||
return False
|
||||
|
||||
@property
|
||||
def platform_tag(self):
|
||||
if self.system in self.PLATFORM_TAGS:
|
||||
return self.PLATFORM_TAGS[self.system]
|
||||
raise BuildError("Unsupported platform: %s" % self.system)
|
||||
|
||||
@property
|
||||
def release_dir(self):
|
||||
return os.path.join(self.root_dir, "release")
|
||||
|
||||
@property
|
||||
def should_upload_docker(self) -> bool:
|
||||
return all([
|
||||
(self.tag or self.branch == "master"),
|
||||
self.should_build_docker,
|
||||
self.has_docker_creds,
|
||||
])
|
||||
|
||||
@property
|
||||
def should_upload_pypi(self) -> bool:
|
||||
return all([
|
||||
self.tag,
|
||||
self.is_prod_release,
|
||||
self.should_build_wheel,
|
||||
self.has_twine_creds,
|
||||
])
|
||||
|
||||
@property
|
||||
def tag(self):
|
||||
return self.travis_tag or self.appveyor_repo_tag_name
|
||||
|
||||
@property
|
||||
def upload_dir(self):
|
||||
if self.tag:
|
||||
return self.version
|
||||
else:
|
||||
return "branches/%s" % self.version
|
||||
|
||||
@property
|
||||
def version(self):
|
||||
name = self.tag or self.branch
|
||||
if not name:
|
||||
raise BuildError("We're on neither a tag nor a branch - could not establish version")
|
||||
return re.sub('^v', "", name)
|
||||
|
||||
|
||||
def build_wheel(be: BuildEnviron): # pragma: no cover
|
||||
click.echo("Building wheel...")
|
||||
@ -251,7 +265,7 @@ def build_docker_image(be: BuildEnviron, whl: str): # pragma: no cover
|
||||
subprocess.check_call([
|
||||
"docker",
|
||||
"build",
|
||||
"--tag", "mitmproxy/mitmproxy/{}".format(be.docker_tag),
|
||||
"--tag", be.docker_tag,
|
||||
"--build-arg", "WHEEL_MITMPROXY={}".format(whl),
|
||||
"--build-arg", "WHEEL_BASENAME_MITMPROXY={}".format(os.path.basename(whl)),
|
||||
"--file", "docker/Dockerfile",
|
||||
@ -404,11 +418,7 @@ def upload(): # pragma: no cover
|
||||
"-u", be.docker_username,
|
||||
"-p", be.docker_password,
|
||||
])
|
||||
subprocess.check_call([
|
||||
"docker",
|
||||
"push",
|
||||
"mitmproxy/mitmproxy:{}".format(be.docker_tag),
|
||||
])
|
||||
subprocess.check_call(["docker", "push", be.docker_tag])
|
||||
|
||||
|
||||
@cli.command("decrypt")
|
||||
|
1
setup.py
1
setup.py
@ -89,6 +89,7 @@ setup(
|
||||
"flake8>=3.5, <3.6",
|
||||
"Flask>=1.0,<1.1",
|
||||
"mypy>=0.590,<0.591",
|
||||
"parver>=0.1<2.0",
|
||||
"pytest-asyncio>=0.8",
|
||||
"pytest-cov>=2.5.1,<3",
|
||||
"pytest-faulthandler>=1.3.1,<2",
|
||||
|
@ -58,6 +58,7 @@ def test_buildenviron_pr():
|
||||
appveyor_pull_request_number = "xxxx",
|
||||
)
|
||||
assert be.is_pull_request
|
||||
assert not be.is_prod_release
|
||||
|
||||
|
||||
def test_buildenviron_commit():
|
||||
@ -73,10 +74,11 @@ def test_buildenviron_commit():
|
||||
docker_username = "foo",
|
||||
docker_password = "bar",
|
||||
)
|
||||
assert be.docker_tag == "dev"
|
||||
assert be.docker_tag == "mitmproxy/mitmproxy:dev"
|
||||
assert be.should_upload_docker
|
||||
assert not be.should_upload_pypi
|
||||
assert be.should_upload_docker
|
||||
assert not be.is_prod_release
|
||||
|
||||
|
||||
def test_buildenviron_rleasetag():
|
||||
@ -99,9 +101,10 @@ def test_buildenviron_rleasetag():
|
||||
assert be.branch == "v0.x"
|
||||
assert be.version == "0.0.1"
|
||||
assert be.upload_dir == "0.0.1"
|
||||
assert be.docker_tag == "0.0.1"
|
||||
assert be.docker_tag == "mitmproxy/mitmproxy:0.0.1"
|
||||
assert be.should_upload_pypi
|
||||
assert be.should_upload_docker
|
||||
assert be.is_prod_release
|
||||
|
||||
|
||||
def test_buildenviron_branch():
|
||||
|
Loading…
Reference in New Issue
Block a user