Skip to content
This repository has been archived by the owner on Jul 15, 2024. It is now read-only.

Commit

Permalink
Release v0.4.0
Browse files Browse the repository at this point in the history
Signed-off-by: Jonathan West <[email protected]>
  • Loading branch information
jgwest committed Mar 8, 2022
1 parent 8220c8a commit eab46ad
Show file tree
Hide file tree
Showing 21 changed files with 958 additions and 10,176 deletions.
14 changes: 7 additions & 7 deletions .github/workflows/ci-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
- name: Setup Golang
uses: actions/setup-go@v2
with:
go-version: '1.16.4'
go-version: '1.17.6'
- name: Build Docker image
run: |
DOCKER_PUSH=false make image
Expand All @@ -35,7 +35,7 @@ jobs:
- name: Setup Golang
uses: actions/setup-go@v2
with:
go-version: '1.16.4'
go-version: '1.17.6'
- name: Download all Go modules
run: |
go mod download
Expand All @@ -53,7 +53,7 @@ jobs:
- name: Setup Golang
uses: actions/setup-go@v2
with:
go-version: '1.16.4'
go-version: '1.17.6'
- name: Regenerate the manifests, git diff should report no changes.
run: |
make manifests
Expand All @@ -68,7 +68,7 @@ jobs:
- name: Setup Golang
uses: actions/setup-go@v2
with:
go-version: '1.16.4'
go-version: '1.17.6'
- name: Restore go build cache
uses: actions/cache@v1
with:
Expand Down Expand Up @@ -109,7 +109,7 @@ jobs:
- name: Setup Golang
uses: actions/setup-go@v2
with:
go-version: '1.16.4'
go-version: '1.17.6'
- name: Install required packages
run: |
sudo apt-get install git -y
Expand Down Expand Up @@ -179,12 +179,12 @@ jobs:
# This version is verified to match a version consistent with the kustomize install yaml,
# by 'hack/verify-argo-cd-versions.sh'.
# BEGIN-ARGO-CD-VERSION
ref: v2.2.0
ref: v2.3.0
# END-ARGO-CD-VERSION
- name: Setup Golang
uses: actions/setup-go@v2
with:
go-version: '1.16.4'
go-version: '1.17.6'

- name: Restore go build cache
uses: actions/cache@v1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cron-master-on-stable.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
- name: Setup Golang
uses: actions/setup-go@v2
with:
go-version: '1.16.4'
go-version: '1.17.6'

- name: Restore go build cache
uses: actions/cache@v1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cron-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
- name: Setup Golang
uses: actions/setup-go@v2
with:
go-version: '1.16.4'
go-version: '1.17.6'

- name: Restore go build cache
uses: actions/cache@v1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cron-stable-on-stable.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:
- name: Setup Golang
uses: actions/setup-go@v2
with:
go-version: '1.16.4'
go-version: '1.17.6'

- name: Restore go build cache
uses: actions/cache@v1
Expand Down
70 changes: 70 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,75 @@
# Changelog

# v0.4.0

## Contributors

Thanks to all the folks who have contributed to the ApplicationSet controller since our last release.

- Michael Crenshaw (@crenshaw-dev)
- Ricardo Rosales (@missingcharacter)
- Ishita Sequeira (@ishitasequeira)
- stempher (@stempher)
- Jonathan West (@jgwest)
- Hüseyin Celal Öner (@hcelaloner)
- Marco Kilchhofer (@mkilchhofer)
- Chetan Banavikalmutt (@chetan-rns)
- Ahmed AbouZaid (@aabouzaid)
- Matthias Lisin (@ml-)

Want to join us for our next release? Check out the project repository (https://github.com/argoproj/applicationset) or visit us on #argo-cd-appset on Slack (https://argoproj.github.io/community/join-slack/).

## New in this release

### ApplicationSet controller is now integrated with Argo CD install

The ApplicationSet controller is now installed by default with the latest release of Argo CD. This means that users of Argo CD now get all the benefits of ApplicationSets, without the requirement of a standalone install.

Contributed by [@ishitasequeira](https://github.com/argoproj/applicationset/pull/455) and [@jgwest](https://github.com/argoproj/applicationset/pull/470).

### Git generator: Add support for extraction of components of paths

The Git generator now supports the extraction of individual components of the path, with the new `path[n]` parameter:
- `{{path[n]}}`: The path to the matching configuration file within the Git repository, split into array elements (`n` - array index).
- For example, for a path of `/clusters/clusterA`, the individual components can be extracted like so: `path[0]: clusters`, `path[1]: clusterA`

Contributed by [@stempher](https://github.com/argoproj/applicationset/pull/389).

### Git generator: Sanitize basename param by replacing unsupported characters

When using the Git generator, with a basename name param that contains an unsupported character, you may now use the `{{path.basenameNormalized}}` parameter to normalize these resources. This prevents rendering invalid Kubernetes resources with names like `my_cluster-app1`, and instead would convert them to `my-cluster-app1`.

Contributed by [@missingcharacter](https://github.com/argoproj/applicationset/pull/436).

### Make webhook address configurable

When using a webhook, the address of the webhook can now be configured using the `--webhook-addr` parameter on the `argocd-applicationset` controller.

Example:
```
./dist/argocd-applicationset --webhook-addr=":9999" --logformat=json
```

Contributed by [@chetan-rns](https://github.com/argoproj/applicationset/pull/450).



#### Fixes / Chores

- ApplicationSet CRD size reduction, by removing validation (CRD defn) of nested merge/matrix generator (#463, contributed by @jgwest)
- Reap zombie processes in argocd-applicationset-controller pod using tini (#453, contributed by @hcelaloner)
- Log all validation errors (#439, contributed by @crenshaw-dev)
- Set applicationset-controller containerPort name (#444, contributed by @aabouzaid)
- Append missing s to matchExpression (#449, contributed by @ml-)
- Set controller logger if we don't use JSON format (#451, contributed by @mkilchhofer)
- Remove hardcoded namespace from manifests (#474, contributed by @ishitasequeira)
- Fix docs typo (#493 and #481, contributed by @crenshaw-dev)

#### Test/infrastructure improvements:
- E2E tests should use application-controller serviceaccount, rather than applicationset-controller serviceaccount (#434, contributed by @jgwest)
- Add GitHub action to run E2E tests against nightly Argo CD, w/ ApplicationSet master branch (#470, contributed by @jgwest)


# v0.3.0

I am happy to announce the latest release of the Argo CD ApplicationSet controller, v0.3.0. Many new features were contributed as part of this release, including two new generators, improved error reporting and handling, support for webhook-based refresh trigger, plus doc updates, usability improvements, stability fixes, and more.
Expand Down
14 changes: 11 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@

FROM quay.io/argoproj/argocd:v2.3.0 as argocd

# https://github.com/argoproj/argo-cd/pull/8516 now requires us to copy Argo CD binary into the ApplicationSet controller


# Build the binary
FROM golang:1.16.2 as builder
FROM docker.io/library/golang:1.17.6 as builder

WORKDIR /workspace

Expand All @@ -18,19 +24,21 @@ RUN rm -f ./bin/*
# Build
RUN make build

FROM docker.io/library/ubuntu:21.04
FROM docker.io/library/ubuntu:21.10

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get dist-upgrade -y && \
apt-get install -y git git-lfs gpg tini && \
apt-get clean && \
rm -rf /var/lib/apt/lists /var/cache/apt/archives /tmp/* /var/tmp/*


# Add Argo CD helper scripts that are required by 'github.com/argoproj/argo-cd/util/git' package
COPY hack/from-argo-cd/git-ask-pass.sh /usr/local/bin/git-ask-pass.sh
COPY hack/from-argo-cd/gpg-wrapper.sh /usr/local/bin/gpg-wrapper.sh
COPY hack/from-argo-cd/git-verify-wrapper.sh /usr/local/bin/git-verify-wrapper.sh

COPY --from=argocd /usr/local/bin/argocd /usr/local/bin/argocd

COPY entrypoint.sh /usr/local/bin/entrypoint.sh

# Support for mounting configuration from a configmap
Expand Down
1 change: 1 addition & 0 deletions api/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 12 additions & 23 deletions docs/Getting-Started.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,25 @@ This guide assumes you are familiar with Argo CD and its basic concepts. See the

There are a few options for installing the ApplicationSet controller.

**Note:** Starting `v2.3` of Argo CD, we don't need to install ApplicationSet Controller separately. It would be instead as part of Argo CD installation.

### A) Install ApplicationSet into an existing Argo CD install
### A) Install ApplicationSet as part of Argo CD

Starting with Argo CD v2.3, the ApplicationSet controller is bundled with Argo CD. It is no longer necessary to install the ApplicationSet controller separately from Argo CD.

Follow the [Argo CD Getting Started](https://argo-cd.readthedocs.io/en/stable/getting_started/) instructions for more information.



### B) Install ApplicationSet into an existing Argo CD install (pre-Argo CD v2.3)

**Note**: These instruction only apply to versions of Argo CD before v2.3.0.

The ApplicationSet controller *must* be installed into the same namespace as the Argo CD it is targetting.

Presuming that Argo CD is installed into the `argocd` namespace, run the following command:

```bash
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/applicationset/v0.3.0/manifests/install.yaml
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/applicationset/v0.4.0/manifests/install.yaml
```

Once installed, the ApplicationSet controller requires no additional setup.
Expand All @@ -34,19 +43,6 @@ The `manifests/install.yaml` file contains the Kubernetes manifests required to
- RoleBinding to bind the ServiceAccount and Role


### B) Install ApplicationSet and Argo CD together

You may instead install both the ApplicationSet controller and the latest stable Argo CD together, by creating a namespace and applying `manifests/install-with-argo-cd.yaml`:

```bash
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/applicationset/v0.3.0/manifests/install-with-argo-cd.yaml
```

Once installed, follow the [Argo CD Getting Started](https://argo-cd.readthedocs.io/en/stable/getting_started/) to access Argo CD and log-in to the Web UI.

The ApplicationSet controller requires no additional setup.

### C) Install development builds of ApplicationSet controller for access to the latest features

Development builds of the ApplicationSet controller can be installed by running the following command:
Expand All @@ -67,19 +63,12 @@ How it works:
See the `master` branch [Read the Docs](https://argocd-applicationset.readthedocs.io/en/master/) page for documentation on post-release features.


### D) Customized install using Kustomize

To extend or customize the ApplicationSet controller installation, [Kustomize](https://kustomize.io/) may be used with the existing namespace install [manifests/namespace-install/kustomize.yaml](https://github.com/argoproj/applicationset/blob/master/manifests/namespace-install/kustomization.yaml) file.

## Upgrading to a Newer Release

To upgrade from an older release (eg 0.1.0, 0.2.0) to a newer release (eg 0.3.0), you only need to `kubectl apply` the `install.yaml` for the new release, as described under *Installation* above.

There are no manual upgrade steps required between any release of ApplicationSet controller, (including 0.1.0, 0.2.0, and 0.3.0) as of this writing, however, see the behaviour changes in ApplicationSet controller v0.3.0, below.

!!! note
If you installed using the combined 'ApplicationSet and Argo CD' bundle, you may wish to consult the [Argo CD release upgrade docs](https://argo-cd.readthedocs.io/en/stable/operator-manual/upgrading/overview/) as well, to familiarize yourself with Argo CD upgrades, and to confirm if there is anything on the Argo CD side you need to be aware of.

### Behaviour changes in ApplicationSet controller v0.3.0

There are no breaking changes, however, a couple of behaviours have changed from v0.2.0 to v0.3.0. See the [v0.3.0 upgrade page](upgrading/v0.2.0-to-v0.3.0.md) for details.
Expand Down
13 changes: 1 addition & 12 deletions docs/Release-Checklist-Template.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,10 @@ Once complete, this is a set of checks to perform once you have a commit, tags,
- The version string SHOULD contain the letter `v`, as above.
- The commit should contain changes to:
- [ ] `manifests/install.yaml`
- [ ] `manifests/install-with-argo-cd.yaml`
- [ ] `manifests/base/kustomization.yaml`
- [ ] `.github/workflows/ci-build.yaml`
- [ ] `docs/Getting-Started.md`
- [ ] `hack/verify-argo-cd-versions.sh`
- [ ] `manifests/namespace-install-with-argo-cd/kustomization.yaml`
- [ ] A `v(version)` tag exists in the `argoproj/applicationset` repo
- Example: `v0.1.0`
- [ ] Ensure it matches the release commit above
Expand All @@ -47,9 +45,7 @@ Once complete, this is a set of checks to perform once you have a commit, tags,

- [ ] Ensure the VERSION string matches the expected version
- [ ] The VERSION string should NOT begin with a `v`, (eg BAD: `v0.1.0`)
- [ ] Ensure that kustomize.yaml under `manifests/namespace-install-with-argo-cd/kustomization.yaml` points to the desired Argo CD version.
- [ ] Ensure that `install.yaml` and `install-with-argo-cd.yaml` under `manifests/` points to the desired ApplicationSet version.
- [ ] Ensure that `install.yaml` and `install-with-argo-cd.yaml` under `manifests/` points to the desired Argo CD version.
- [ ] Ensure that `install.yaml` under `manifests/` points to the desired ApplicationSet version.



Expand Down Expand Up @@ -90,13 +86,6 @@ Once complete, this is a set of checks to perform once you have a commit, tags,
- [ ] Run ApplicationSet E2E tests against ApplicationSet controller installed via this method
- [ ] Confirm that the pod logs contain no errors after runnings the tests

- [ ] Apply `install-with-argo-cd.yaml` on a cluster, and confirm that it installs the correct image version
- [ ] Confirm that all the pods start as expected.
- [ ] Confirm that the pod logs contain no errors
- [ ] Run ApplicationSet E2E tests against ApplicationSet controller installed via this method
- [ ] Confirm that the pod logs contain no errors after runnings the tests


## Communications

- [ ] Publish blog post (if applicable)
Expand Down
2 changes: 1 addition & 1 deletion docs/Releasing.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Releasing an ApplicationSet release

The ApplicationSet controller release process and scripts are based on the process/scripts used by the [Argo CD Image Updater](https://github.com/argoproj-labs/argocd-image-updater), a sibling project in the Argo Labs organization.
The ApplicationSet controller release process and scripts are based on the process/scripts used by the [Argo CD Image Updater](https://github.com/argoproj-labs/argocd-image-updater), a sibling project in the Argo organization.


## Release Process
Expand Down
Loading

0 comments on commit eab46ad

Please sign in to comment.