Zenhub Enterprise 4.1.3
These release notes are for Zenhub Enterprise for Virtual Machine and Zenhub Enterprise for Kubernetes.
- For all users using Zenhub on github.com, please check out our new feature announcements on our product changelog.
- For administrators planning upgrades, please refer to the "Important Upgrade Instructions for Administrators" section.
GitHub Enterprise Server compatibility
Zenhub Enterprise 4.1.3 supports GitHub Enterprise versions: 3.9, 3.10, and 3.11
What's new in Zenhub Enterprise 4.1.3
We are thrilled to announce the release of Zenhub Enterprise 4.1.3 which contains a range of bug fixes and security updates
Features
No new features in this release
Security Fixes
- Package security updates
- Patched an application security vulnerability
Bug Fixes
- No bug fixes in this release
Changes
- Updated PostgreSQL configuration for improved performance
- Updated upgrade bundle to improve reliability of upgrades
Known Issues
- Mozilla recently raised the minimum Firefox version required to run published Firefox extensions from 52.0 to 58.0. This results in failed validation during upload of the Zenhub Firefox extension. Until a fix is released, the workaround is to extract the firefox.zip, update
strict_min_version
at the bottom of the manifest.json file from52.0
to58.0
, and re-zip the bundle before upload. If you have any questions, please reach out to enterprise@zenhub.com.
VM Embedded Component Versions
Component | Version |
---|---|
Ubuntu | 22.04.4 |
K3s | v1.26.8+k3s1 |
Kubernetes | v1.26.8 |
Kustomize | v4.5.3 |
Fluentd | v1.16.2-debian-1.0 |
Postgresql | 15.4 |
MongoDB | 4.4.13 |
RabbitMQ | 3.8.31 |
Redis | 7.0.12 |
PgBouncer | 1.20.1 |
Important Upgrade Instructions for Administrators
Zenhub Enterprise for Virtual Machine
-
You must be running 4.0.X, 4.1.0, 4.1.1, or 4.1.2 to perform the upgrade to ZHE 4.1.3
-
For users currently running Zenhub Enterprise, contact our team for a download link for the 4.1.3 upgrade package. The upgrade process is detailed in our documentation.
Zenhub Enterprise for Kubernetes
- Some extra upgrade instructions have been added specifically for this release due to some database changes that accompany the application updates. Please follow the upgrade instructions below for this release:
⚠️ NOTE: The minimum version of Kubernetes required to run ZHE 4.1 is now v1.26.
1. Prepare
- Get the
kustomization.yaml
you configured to setup Zenhub - Perform a diff to make sure no outstanding changes are waiting to be applied
kustomize build . | kubectl diff -f-
It should exit 0 and only display a warning of unused variables. If changes are pending, apply them before starting the upgrade process.
- Make a copy of your existing
kustomization.yaml
and keep it handy for the next step
2. Update kustomization.yaml
- Check out the
zenhub-enterprise
repository at the tag of this release - Populate the new
kustomization.yaml
with your existing configuration values
Be sure to replace any additional customized configuration (such as ingress, TLS configuration) with your original configuration from before as well.
- In ZHE 4.0 and onwards,
secret_key_base
is required to be a 42 byte string, any existing 38 byte string should be updated as described inkustomization.yaml
- If you are using your own registry and not Zenhub's registry, upload the new images tagged with this release to your registry.
3. Run configmap-generator.sh
Once you have setup all the configurations in your copy of kustomization.yaml
and are ready to deploy to your cluster, you must run the configmap-generator.sh
script that will fill placeholders in our Kubernetes manifests with your configuration values.
To run the script, navigate to the root of the directory containing your kustomization.yaml
file, which also contains the configmap-generator.sh
script. Then, run the script with these two commands:
chmod 700 configmap-generator.sh
./configmap-generator.sh
4. Application updates
In your new kustomization.yaml, confirm that the cluster image tags are set to the new images for this release:
If you are using your own registry, ensure that the newName fields are configured for that instead of Zenhub's
images:
- name: kraken-webapp
newName: us.gcr.io/zenhub-public/kraken-webapp
newTag: zhe-4.1.3
- name: kraken-extension
newName: us.gcr.io/zenhub-public/kraken-extension
newTag: zhe-4.1.3
- name: kraken-zhe-admin
newName: us.gcr.io/zenhub-public/kraken-zhe-admin
newTag: zhe-4.1.3
- name: raptor-backend
newName: us.gcr.io/zenhub-public/raptor-backend
newTag: zhe-4.1.3
- name: toad-backend
newName: us.gcr.io/zenhub-public/toad-backend
newTag: zhe-4.1.3
- name: sanitycheck
newName: us.gcr.io/zenhub-public/sanitycheck
newTag: zhe-4.1.3
- name: devsite
newName: us.gcr.io/zenhub-public/devsite
newTag: zhe-4.1.3
- name: busybox
newName: docker.io/library/busybox
newTag: latest
- name: nginx
newName: docker.io/library/nginx
newTag: latest
- First, delete any
raptor-db-migrate
andsanitycheck
jobs so they may be recreated without errors:
Make sure the status of the jobs are
Complete
and notRunning
kubectl -n <your_dedicated_namespace> delete job/raptor-db-migrate job/sanitycheck
- Then perform a diff to check what the upgrade will do (this command must be run from the directory that contains your
kustomization.yaml
kustomize build . | kubectl diff -f-
- If everything looks correct and there are no errors, you can deploy to the cluster via:
kustomize build . | kubectl apply -f-
5. Database Changes for Zenhub Enterprise for Kubernetes
⚠️ NOTE: For upgrading to Zenhub Enterprise version 4.1 from 4.0.X, Zenhub will require a manual change to the PostgreSQL schema.
A constraint calledpih_no_overlap
from thepipeline_issue_histories
table is required to be dropped and replaced.
To do this, you may follow the following steps:
- Ensure you have a backup of the existing PostgreSQL database. Implementation may vary depending on the PostgreSQL service provider
- Perform the following while connected to the PostgreSQL database:
ALTER table pipeline_issue_histories DROP CONSTRAINT pih_no_overlap;
ALTER TABLE ONLY public.pipeline_issue_histories
ADD CONSTRAINT pih_no_overlap EXCLUDE USING gist (workspace_id WITH =, issue_id WITH =, tsrange(started_at, ended_at, '[)'::text) WITH &&) DEFERRABLE;
- Verify the completion of the above with the following PostgreSQL command which should return an empty result:
SELECT * FROM pg_stat_activity WHERE query LIKE '%public.pipeline_issue_histories%';
Next, proceed to run the regular data migration script.
⚠️ NOTE: Running this script is only required if you are upgrading from ZHE 4.0.X
⚠️ NOTE: If you are using stunnel, be sure to uncomment the relevant sections inupdate/batch_v1_job_data_migration.yaml
- Run the script found in
k8s-cluster/update/zhe-upgrade.sh
via the commands below:
If you use the ZenHub registry
cd update
./zhe-upgrade.sh yourNamespace
If you use your own registry
cd update
./zhe-upgrade.sh yourNamespace yourRegistryName
6. Re Deploy Application
⚠️ NOTE: Running these commands is only required if you are upgrading from ZHE 4.0.X
The data migration script run in the previous step will have scaled down the application in order to safely migrate data without active database writes occurring. Now that the migration is complete, the application needs to be deployed to the normal desired operational state:
- First perform a diff to check what will change (this command must be run from the directory that contains your
kustomization.yaml
kustomize build . | kubectl diff -f-
- If everything looks correct and there are no errors, you can deploy to the cluster via:
kustomize build . | kubectl apply -f-
7. Finalize
- Securely store the updated
kustomization.yaml