···11+# Publishing a new version of the PDS distro
22+33+Below are the steps to publish a new version of the PDS distribution. The distribution is hosted by GitHub Container Registry, supported by the `build-and-push-ghcr` workflow. We use git tags to generate Docker tags on the resulting images.
44+55+1. Update the @atproto/pds dependency in the `service/` directory.
66+77+ We're using version `0.4.999` as an example. The latest version of the [`@atproto/pds` package](https://www.npmjs.com/package/@atproto/pds) must already be published on npm.
88+ ```sh
99+ $ cd service/
1010+ $ pnpm update @atproto/pds@0.4.999
1111+ $ cd ..
1212+ ```
1313+1414+2. Commit the change directly to `main`.
1515+1616+ As soon as this is committed and pushed, the workflow to build the Docker image will start running.
1717+ ```sh
1818+ $ git add service/
1919+ $ git commit -m "pds v0.4.999"
2020+ $ git push
2121+ ```
2222+2323+3. Smoke test the new Docker image.
2424+2525+ The new Docker image built by GitHub can be found [here](https://github.com/bluesky-social/pds/pkgs/container/pds). You can use the `sha-`prefixed tag to deploy this image to a test PDS for smoke testing.
2626+2727+4. Finally, tag the latest Docker image version.
2828+2929+ The Docker image will be tagged as `latest`, `0.4.999`, and `0.4`. Our self-hosters generally use the `0.4` tag, and their PDS distribution will be updated automatically over night in many cases. The Docker tags are generated automatically from git tags.
3030+ ```sh
3131+ $ git tag v0.4.999
3232+ $ git push --tags
3333+ ```