# Change Log

## 1.0.0 (2021-04-17)

**Important fixes:**

- **Security**: Ensure TLS certificates is verified with container registries (!139)

**Enhancements:**

- Image mirrors features:
  - Implement SemVer (!148)
  - Support manifest v1 (#28, !143, !145)
  - Add OCI Image Media Types (!149)
  - Allow to synchronize image by digest (!138)
  - Handle registries without Docker-Content-Digest header (!141)
  - Avoid checking signed manifest digest (#29, !146)
  - Increase the chunk size to 50MB (!142)
  - Improve heuristics:
    - Always GET manifests as they are small (!146)
    - Register seen blobs from manifests (!146)
    - Check if blob exists before uploading (!146)
    - Avoid unneeded HTTP query just to get size (!146)
  - Allow tag regexp for string-form from too (!147)
- Lower NOT Deleting %s (not found) from INFO to DEBUG (!144)

**Fixes:**

- Image mirrors fixes:
  - Avoid infinite stack trace with cache_path (!140)
  - Fix blob mount (#30, !146)
  - Handle token expiration (!150)
- Use hadolint/hadolint:latest-alpine for hadolint job (!138)

## 0.9.1 (2021-03-20)

**Enhancements:**

- Sync debian/source/options tar-ignore with .gitignore (!134)
- Add dep5 tests (autopkgtest) (!135)

## 0.9.0 (2021-03-19)

**New features:**

- :rocket: Docker image mirroring (#13):
  - Basic mirroring (!114, !117, !118, !119 , !120, !123)
  - Support selecting images by base+repositories+tags (!128)
  - Tag matching with regexps (!129)
  - Bug fixes (#27, !127)
- Support for multiple GitLab connections, including `mirrors` (!130, !131)

**Enhancements:**

- Use shorter default logging format (!125)
- Improve error when `extends:` is not found (!101)
- mirrors: Enable automatic proxy detection when available (#25, !115, !125)
- User: Add skip_reconfirmation, note (!116)
- Docker image:
  - Use Debian package on Docker image (!102)
    - Removes pip usage
    - Ensure certificate usage is centralized (no `/usr/local/lib/python3.7/dist-packages/certifi/cacert.pem`)
    - Use `bullseye`, as `buster` packages are older
  - Test the Docker image (!103)
- Documentation:
  - Add the missing `v` prefix in Docker image tag (!99)
  - Fix docker command, and mention other images (!105)
  - Document ability to mirror Git repositories (!108)
- Code cleanup and developpement tooling:
  -  Improve pep8 (!98, !109, !110), !111
  -  Use "build" job from AutoDevOps (!104)
  -  Refactor test utils (!106)
  -  Drop python2 support (!110)
  -  Initial mypy checks (!114)

**Fixes:**

- Always remove trailing slash, even when type is specified (#23, !100)
- Fix: is_admin -> admin param for creation or update (#26, !112, !122)
- Create cache dir (#19, !121, !124)

## 0.8.0 (2021-02-09)

Thanks to Sébastien Heurtematte who contributed two merge requests (!91, !93)!

**New features:**

- Mirror branch mapping (!83)
- Project and Group Boards (!85, !86)
- Add support for Docker retention policy (!84)
- Add rename_branches parameter (!89)

**Enhancements:**

- Various pep8 improvements and added flake8 plugins (!87, !88)
- Enhance docker build and debug (!93)
- Improve CI (!95)
- Documentation:
  - Document "Using gitlabracadabra in GitLab CI" (!89)
  - doc: Add missing usage example in "Using packages" (!89)

**Fixes:**

- Use api param namespace_id to parent_id for subgroup creation (!91)

## 0.7.0 (2020-10-29)

**New features:**

- Implement group of groups (!74)
- Implement pipeline schedules (including variables) (!75)
- Add aggregate merge strategy (!77)

**Enhancements:**

- Document required release dependencies (!72)
- Update copyright to 2020 (!73)
- Fix Unknown merge strategy error message (!76)
- Consider null label description as same as empty (!78)
- Ship all documentation in deb package (!79)

## 0.6.0 (2020-06-18)

**Important fixes:**

- **Security**: Mirroring: Only send Private-Token on gitlab remote (!63)

**New features:**

- Implement project's webhooks (!67)

**Enhancements:**

- Add forking\_access\_level, pages\_access\_level, emails\_disabled and suggestion\_commit\_message
  to projects (!66, !69)
- Add support for project's allow\_merge\_on\_skipped\_pipeline and autoclose\_referenced\_issues (!70)
- tests: Ignore host and port on match (!67)
- Documentation:
  - Reorder project and group parameters as in WebUI (!65)
  - Update release doc (!62)
  - Sync README with requirements.txt (pygit2 is now needed) (!69)

**Fixes:**

- Pin pygit2 to 1.0.3 to fix FTBFS (!64)
- CI and tests fixes (!68):
  - Fix "jobs:dast config key may not be used with `rules`: except"
  - Fix "E712 comparison to False should be 'if cond is False:' or 'if not cond:'"
  - Fix "E302 expected 2 blank lines, found 1"

## 0.5.0 (2020-01-23)

**Backwards incompatible changes:**

- `extends` now use `deep` merging by default, to restore the previous behavior
  use `replace` merge strategy

**New features:**

- `extends` now supports two merge strategies: `deep` (the default) and `replace` (!54 and !56)
- `extends` now supports multiple parents (!56)
- Repository mirroring (!52, !60)
- Add support for project and group milestones (!58)

**Enhancements:**

- Add remove\_source\_branch\_after\_merge parameter to projects (!46)
- Add default\_ci\_config\_path parameter to application settings (!47)
- Add emails\_disabled, project\_creation\_level, subgroup\_creation\_level, require\_two\_factor\_authentication,
  two\_factor\_grace\_period, auto\_devops\_enabled to groups (!59)
- Sync with current project and group parameters (!59)
- Documentation:
  - Add Table of Contents (!48)
  - Generate markdown doc from source (!48)
  - Document releasing a new version (!49)
  - Various documentation enhancements (!51)
  - Add general action file documentation (!53)
- Tests:
  - Only install packages for the gitlabracadabra.tests.unit package (!55)

**Fixes:**

- User:
  - Fix typo of user param: `s/admin/is_admin/` (!57)
  - Remove username as param, as this is the id (!57)
  - Fix `CREATE_KEY` handling (!57)
  - user's skip_confirmation is a create param (!57)
  - Do not try to change create-only params for users (!57)
- Tests:
  - Clean up before testing group member not found (!50)

## 0.4.0 (2019-11-14)

**New features:**

- Add delete\_object param (!43)
- Add support for include (#7, !42)
- Add project and group labels support (#2, !36, !39, !40)
- Add support for application settings (#4, !34)
- Package uploaded to Debian (!45)

**Enhancements:**

- Add support for latest project params (!33)
- Test YAML file loading (!42)
- Ensure that content is not changed during processing (!41)
- User password is only set on user creation (!41)
- Assert all cassettes are "all played" (!37, !38)

**Fixes:**

- Don't fail when some variables params are not available (!44)
- Python-gitlab 1.13 still has incorrect labels support (!45)

## 0.2.1 (2019-06-20)

**New features:**

- Debian packages (!24, !25)
- Project and group variables (!29)
- Project archived parameter (!27)

**Enhancements:**

- Catch members deletion errors (!30)
- Skip changing parameter only when not available (i.e. handle null as current value) (!28)
- Catch REST errors of \_process\_ methods (!26)
- Enforce draft 4 of jsonschema (!25)
- Skip protected tags tests on python-gitlab < 1.7.0 (!24)
- Workaround "all=True" in API calls with python-gitlab < 1.8.0 (!24)
- Move VCR fixtures closer to the tests (!23)
- Centralize VCR configuration (!23)

## 0.1.0 (2019-05-25)

**New features:**

- Projects
  - Basic parameters
  - Project members
  - Add protected branches support
  - Protected tags
  - Add latest project parameters
    (mirror\_user\_id, only\_mirror\_protected\_branches, mirror\_overwrites\_diverged\_branches, packages\_enabled)
  - Add initialize\_with\_readme support to projects
- Groups:
  - Basic parameters
  - Group members
  - Add latest group parameters
    (membership\_lock, share\_with\_group\_lock, file\_template\_project\_id, extra\_shared\_runners\_minutes\_limit)
- Users:
  - Basic parameters
