diff --git a/dogen/generator.py b/dogen/generator.py
index 6d0793b..98ec763 100644
--- a/dogen/generator.py
+++ b/dogen/generator.py
@@ -292,7 +292,8 @@ class Generator(object):
             passed = False
             try:
                 if os.path.exists(filename):
-                    self.check_sum(filename, source['md5sum'])
+                    if source.get('md5sum'):
+                        self.check_sum(filename, source['md5sum'])
                     passed = True
             except Exception as e:
                 self.log.warn(str(e))
@@ -307,9 +308,11 @@ class Generator(object):
 
                 self._fetch_file(url, filename)
 
-                self.check_sum(filename, source['md5sum'])
-
-            self.cfg['artifacts'][target] = "md5:%s" % source['md5sum']
+                if source.get('md5sum'):
+                    self.check_sum(filename, source['md5sum'])
+                    self.cfg['artifacts'][target] = "md5:%s" % source['md5sum']
+                else:
+                    self.cfg['artifacts'][target] = None
 
     def check_sum(self, filename, checksum):
         self.log.info("Checking '%s' MD5 hash..." % os.path.basename(filename))

Do not require md5sum for artifacts
The EnMasse community images need to be built using the 'latest' artifacts.  To import these using sources, we need the latest md5sum.  The md5sum might change after every build.  Can we have an option to skip the md5sum, or have it pull & recalculate it?
diff --git a/tests/test_package.py b/tests/test_package.py
index b742e65..3b961bc 100644
--- a/tests/test_package.py
+++ b/tests/test_package.py
@@ -5,7 +5,6 @@ import tempfile
 import unittest
 import shutil
 import re
-import sys
 
 from dogen.plugins.repo import Repo
 from dogen.generator import Generator
@@ -45,6 +44,5 @@ class TestPackage(unittest.TestCase):
 
         dockerfile = open(os.path.join(self.target_dir, "Dockerfile")).read()
 
-        sys.stderr.write("\t\t\tDEBUGDEBUG\n{}\n".format(dockerfile))
         self.assertTrue(re.match(r'.*yum install[^\n]+wget', dockerfile, re.DOTALL))
         self.assertTrue(re.match(r'.*rpm -q +wget', dockerfile, re.DOTALL))
diff --git a/tests/test_unit_generate_configuration.py b/tests/test_unit_generate_configuration.py
index 9c01463..e439971 100644
--- a/tests/test_unit_generate_configuration.py
+++ b/tests/test_unit_generate_configuration.py
@@ -261,6 +261,17 @@ class TestConfig(unittest.TestCase):
         generator._handle_scripts()
         # success if no stack trace thrown
 
+    @mock.patch('dogen.generator.Generator._fetch_file')
+    def test_handling_sources_without_specified_md5sum(self, mock_fetch_file):
+        with self.descriptor as f:
+            f.write("sources:\n  - url: http://somehost.com/file.zip".encode())
+
+        generator = Generator(self.log, self.args)
+        generator.configure()
+        generator.handle_sources()
+
+        mock_fetch_file.assert_called_with('http://somehost.com/file.zip', 'target/file.zip')
+
     @mock.patch('dogen.generator.Generator.check_sum')
     @mock.patch('dogen.generator.Generator._fetch_file')
     def test_handling_sources(self, mock_fetch_file, mock_check_sum):

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-cov mock
apt-get update apt-get install -y gcc
3.6
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
charset-normalizer==2.0.12
coverage==6.2
docopt==0.6.2
-e git+https://github.com/jboss-dockerfiles/dogen.git@d4c4c877a818a3ce382b7a2b7ea2d765f3568f72#egg=dogen
idna==3.10
importlib-metadata==4.8.3
iniconfig==1.1.1
Jinja2==3.0.3
MarkupSafe==2.0.1
mock==5.2.0
packaging==21.3
pluggy==1.0.0
py==1.11.0
pykwalify==1.8.0
pyparsing==3.1.4
pytest==7.0.1
pytest-cov==4.0.0
python-dateutil==2.9.0.post0
PyYAML==6.0.1
requests==2.27.1
ruamel.yaml==0.18.3
ruamel.yaml.clib==0.2.8
six==1.17.0
tomli==1.2.3
typing_extensions==4.1.1
urllib3==1.26.20
zipp==3.6.0

name: dogen
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - charset-normalizer==2.0.12
      - coverage==6.2
      - docopt==0.6.2
      - idna==3.10
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - jinja2==3.0.3
      - markupsafe==2.0.1
      - mock==5.2.0
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pykwalify==1.8.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-cov==4.0.0
      - python-dateutil==2.9.0.post0
      - pyyaml==6.0.1
      - requests==2.27.1
      - ruamel-yaml==0.18.3
      - ruamel-yaml-clib==0.2.8
      - six==1.17.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - zipp==3.6.0
prefix: /opt/conda/envs/dogen

tests/test_unit_generate_configuration.py::TestConfig::test_handling_sources_without_specified_md5sum
tests/test_package.py::TestPackage::test_custom_repo_files_should_add_two tests/test_unit_generate_configuration.py::TestConfig::test_custom_additional_scripts_in_cli_should_override_in_descriptor tests/test_unit_generate_configuration.py::TestConfig::test_custom_additional_scripts_in_descriptor tests/test_unit_generate_configuration.py::TestConfig::test_custom_script_exec tests/test_unit_generate_configuration.py::TestConfig::test_custom_script_exec_not_env tests/test_unit_generate_configuration.py::TestConfig::test_custom_script_user_not_default tests/test_unit_generate_configuration.py::TestConfig::test_custom_script_user_not_env tests/test_unit_generate_configuration.py::TestConfig::test_custom_scripts_dir_in_cli_should_override_in_descriptor tests/test_unit_generate_configuration.py::TestConfig::test_custom_scripts_dir_in_descriptor tests/test_unit_generate_configuration.py::TestConfig::test_custom_template_in_cli_should_override_in_descriptor tests/test_unit_generate_configuration.py::TestConfig::test_custom_template_in_descriptor tests/test_unit_generate_configuration.py::TestConfig::test_default_script_exec tests/test_unit_generate_configuration.py::TestConfig::test_default_script_user tests/test_unit_generate_configuration.py::TestConfig::test_default_values tests/test_unit_generate_configuration.py::TestConfig::test_do_not_skip_ssl_verification_in_cli_false_should_override_descriptor tests/test_unit_generate_configuration.py::TestConfig::test_do_not_skip_ssl_verification_in_descriptor tests/test_unit_generate_configuration.py::TestConfig::test_env_provided_script_user tests/test_unit_generate_configuration.py::TestConfig::test_env_supplied_script_exec tests/test_unit_generate_configuration.py::TestConfig::test_fail_if_version_mismatch tests/test_unit_generate_configuration.py::TestConfig::test_handling_sources tests/test_unit_generate_configuration.py::TestConfig::test_handling_sources_when_local_file_exists_and_is_broken tests/test_unit_generate_configuration.py::TestConfig::test_handling_sources_when_local_file_exists_and_is_correct tests/test_unit_generate_configuration.py::TestConfig::test_handling_sources_with_cache_url tests/test_unit_generate_configuration.py::TestConfig::test_handling_sources_with_cache_url_and_target_filename tests/test_unit_generate_configuration.py::TestConfig::test_handling_sources_with_target_filename tests/test_unit_generate_configuration.py::TestConfig::test_no_scripts_defined tests/test_unit_generate_configuration.py::TestConfig::test_scripts_dir_found_by_convention tests/test_unit_generate_configuration.py::TestConfig::test_skip_ssl_verification_in_descriptor
dogen/generator.py
dogen/generator.py