Commit Graph

113 Commits

Author SHA1 Message Date
Hidde Beydals f40a42115b Conditionally remove artifact from source status
We only want to remove it if it is no longer in storage, otherwise we
still want to keep it around till we have a new artifact.
2020-09-11 10:10:47 +02:00
Hidde Beydals b5d869db03 Include PATCH rule for events in manager-role
During high custom resource count / low interval tests, I was greated
with a `cannot patch resource "events"` message. This happened due to
event compaction, where it will perform a patch instead of a create.
By giving the role the permission to do so this should no longer pose
a problem.
2020-09-10 21:17:10 +02:00
Hidde Beydals d03f4fa4c4 Change advertised artifact URLs on hostname change 2020-09-10 14:13:46 +02:00
Hidde Beydals 7a3a5938d3 Mark resources as progressing on spec changes 2020-09-10 14:13:41 +02:00
Hidde Beydals 42706a342b Calculate checksums during file writes 2020-09-10 13:00:08 +02:00
Hidde Beydals 1ab12869ac Make storage file writes atomic 2020-09-10 12:02:32 +02:00
Michael Bridgen 901463eaaa Use pkg/runtime for predicate and logger 2020-09-09 17:57:16 +01:00
Hidde Beydals 68ccf2598f storage: actually record relative path in artifact 2020-09-09 16:32:25 +02:00
Hidde Beydals 68947cfca6 controllers: resolve issue with gc on delete
When a delete of a resource is requested a `deletionTimestamp` is set
on the resource by the requester, this also results in a generation
change of the resource.

If the resource is under reconciliation while this timestamp is set, and
had not produced an artifact earlier on, this becomes a problem as the
artifact metadata is used to determine what should be garbage collected
on a deletion, resulting in stray files for resources that are no longer
present.

To resolve this for now, we always create a new artifact object for the
resource when `all==true` on the GC method call, and no longer rely on
the presence of the artifact object on the resource itself.
2020-09-09 13:41:56 +02:00
Hidde Beydals 99b74da044 api/artifact: add checksum field to artifact
This includes a change to how the revision for HelmRepository sources is
recorded, as this will now equal to the generated timestamp from the index
in RFC3339Nano format.
2020-09-09 13:41:56 +02:00
Hidde Beydals 0b752178b1 storage: only store relative path in artifact
As the storage base directory is determined during runtime, and
artifacts may live longer than that if they are e.g. stored in a
persistent volume but the mount path configuration changes.
2020-09-08 17:21:56 +02:00
Hidde Beydals f8c4bd31ca api/artifact: add ArtifactDir helper func
To make it easier to construct just the directory path for the
artifact (relative to the storage base path).
2020-09-08 15:16:58 +02:00
Hidde Beydals 2c4dcfe72d helmchart: use dir of artifact path on package run 2020-09-01 16:08:20 +02:00
Hidde Beydals b7603f9fd3 storage: change logic of `ArtifactExist` method
Given that:

* The produced artifact as advertisted in the path should always
  be a regular file (including the exclusion of symlinks).
* The produced artifact should be readable, so any type of error
  should count as "does not exist".

We should use `os.Lstat` to not follow symlinks; return `false`
on any error we run in to, or return if the file mode information
reports a regular file.
2020-09-01 16:01:19 +02:00
Hidde Beydals 24f47ac183 Support Helm charts from GitRepository sources 2020-08-31 16:21:53 +02:00
Hidde Beydals f4d047a4a2 Support Helm repository indexes with relative URLs 2020-08-31 10:18:30 +02:00
Hidde Beydals d38b8fe193 Support proper semver ranges for Helm charts
This commit changes the semver range parser to `blang/semver`, which
is also used to parse semver tags for GitRepository sources.
2020-08-31 10:03:47 +02:00
Hidde Beydals 3475d741a3 Switch to dedicated git and helm testserver pkgs 2020-08-18 12:11:29 +02:00
Hidde Beydals 9d947b8efa Use testserver package from fluxcd/pkg 2020-08-18 12:11:29 +02:00
stefanprodan 2044de40fd Add HelmRepository timeout test 2020-08-12 15:32:55 +03:00
stefanprodan 4486ab7a5e Implement HelmRepository timeout 2020-08-12 14:10:03 +03:00
Hidde Beydals 8e1b213da5 Change CRD domain to 'source.toolkit.fluxcd.io'
Due to required domain changes for the helm-controller so that it
can co-exist in a cluster with the Helm Operator, other Toolkit
components are moving to a *.toolklit.fluxcd.io domain too.
2020-07-30 21:50:46 +02:00
Hidde Beydals a0357172bc Helm: allow configuration of TLS certs without CA 2020-07-20 21:33:55 +02:00
stefanprodan e65e2f0623 Make git package public 2020-07-20 13:10:18 +03:00
Hidde Beydals e72855f88d Refactor garbage collectors to finalizers 2020-07-16 14:18:33 +02:00
Hidde Beydals ba3ed63a9d Remove HelmRepository owner ref on HelmChart
As the HelmChart is not the result of the HelmRepository, but more
like a Deployment -> Secret relationship.
2020-07-16 12:39:53 +02:00
Stefan Prodan 70b095dccd
Merge pull request #90 from erikh/fix-bug-in-filepath-walk
Storage: fix a small bug in RemoveAllButCurrent when the directory is invalid
2020-07-16 09:21:11 +03:00
Erik Hollensbe 687b79a7dd Storage: fix a small bug in RemoveAllButCurrent when the directory is invalid
filepath.Walk can return a `nil` for the stat value, when it does, the
directory is invalid and the error will be set. This causes a
panic+crash if the directory does not currently exist when
RemoveAllButCurrent is called.

The following patch makes the behavior an error instead.

Signed-off-by: Erik Hollensbe <github@hollensbe.org>
2020-07-15 18:50:09 +00:00
stefanprodan eb20a8f465 Improve error handling and reporting
- return reconciliation error so that controller runtime metrics record failures
- change structure logging labels to match the controller runtime format
- log the reconciliation duration for all kinds
- normalise log messages and labels across all controllers
2020-07-15 12:24:11 +03:00
stefanprodan b3e58b48dd Rename syncAt annotation to reconcileAt
Use `fluxcd.io/reconcileAt` annotation across all controllers.
2020-07-13 16:06:16 +03:00
Hidde Beydals c90be06345 Add constants for kind names 2020-07-10 12:07:54 +02:00
stefanprodan b9dc2ecf64 Add ignore field to GitRepository spec 2020-07-09 14:48:02 +03:00
Erik Hollensbe a723b9e3e7 Archive and storage tests
Signed-off-by: Erik Hollensbe <github@hollensbe.org>
2020-07-08 23:23:33 +00:00
Erik Hollensbe b1b1dbcec5 Support programming excluded patterns in gitrepository spec
-- More coming in this commit message soon

Signed-off-by: Erik Hollensbe <github@hollensbe.org>
2020-07-08 14:38:44 +00:00
stefanprodan 6f89f2d4c5 Implement event recording
- emit Kubernetes events for artifact acquisition actions
- forward events to notification controller
2020-07-03 08:46:26 +03:00
stefanprodan e92cbbdd45 Migrate to fluxcd/pkg 2020-06-30 17:30:21 +03:00
Hidde Beydals 0bc28f7a42 testserver: move from internal to pkg 2020-06-30 11:48:14 +02:00
Hidde Beydals 384bf9fe7c testserver: suffix structs with Server 2020-06-30 11:42:52 +02:00
Hidde Beydals 39ee34897a Replace tar/gzip shell-out with Go implementation 2020-06-06 19:15:52 +02:00
Hidde Beydals 24b77d37a8 controllers: GitRepository ref 2020-05-29 14:24:31 +02:00
Hidde Beydals b27c82dd1b controllers: GitRepository test refs 2020-05-29 14:24:31 +02:00
Hidde Beydals 77822bd4d1 controllers: simple GitRepository test 2020-05-29 14:24:31 +02:00
Hidde Beydals 96a76c2ad8
Merge pull request #55 from fluxcd/tar-ignore 2020-05-13 20:06:01 +02:00
Hidde Beydals e880a45474 controllers: control tar ignores w/ exclude files
This commit changes the file excludes for tarballs generated for
Git repository artifacts from a fixed set of strings to include
exclusion files files. It currently takes `.sourceignore` and
in the root of the given directory into account.

In addition to this the Git VCS related files that are ignored have
been extended to not only include the .git/ directory, but also the
.gitignore, .gitmodules and .gitattributes files. Mimicking part of
the --exclude-vcs flag not available on all tar versions.
2020-05-13 19:45:31 +02:00
Hidde Beydals 9c67baa158 controllers: implement checkout strategies 2020-05-03 23:04:12 +02:00
Hidde Beydals e42561f13b git: refactor transport into strategies 2020-05-03 10:03:47 +02:00
Hidde Beydals d0487302f6 git/ssh: use in-memory known hosts database 2020-05-03 10:03:42 +02:00
Hidde Beydals 48fcc52a3d controllers: factor out GitRepository verification 2020-05-02 21:44:27 +02:00
stefanprodan ca884a9b37 test: fix GC tests for macOS 2020-04-30 09:56:46 +03:00
Hidde Beydals 2c0b175807 controllers: check GitRepository reference != nil
To prevent the reconciler from panicing when no reference is
configured for the GitRepository.
2020-04-29 16:45:25 +02:00