Continuous integration for the archzfs packages using buildbot.
- docker
- docker-compose
- Clone this repository:
git clone https://github.com/minextu/archzfs-ci
- Build the docker images
docker-compose build
- Start the web interface
docker-compose up
Buildbot will run under localhost:8080 after that. The default admin user is admin with an empty password.
Login as admin and select a builder (Builds -> Builders). Press the force button and leave all fields empty to just build the master branch.
The main configuration is located in conf.env.
You will need to generate a new access token here.
Tick the repo:status and repo_deployment permissions.
Copy the resulting token into conf.env (GITHUB_TOKEN=).
Next you will need to create a webhook, to notify buildbot about new commits or pull requests:
Visit the archzfs repo settings (of your fork), choose Webhooks and add a new one.
- Payload url: located at
http://<your-public-archzfs-ci-url>/change_hook/github - Content type:
application/x-www-form-urlencoded - Secret: Password used to authenticate github requests
- Events: Tick
PushandPull requests
Set ENABLE_GITHUB_STATUS_REPORT to true and enter your secret and the name of your archzfs fork in conf.env (GITHUB_HOOK_SECRET=, GITHUB_REPO=).
Just restart after that (docker-compose restart) and you're done.
...
When enabled, packages will get uploaded to a repository after building and testing. This is done on a daily basis or if new commits are pushed to the master branch.
You will need to have a webserver with ssh and rsync installed to host the repository.
-
Create the repo folders on the repo server: a repo folder, a testing repo suffixed with
tesingand two archive folders using the previous names prefixed witharchive_(e.g./var/www/archzfs/var/www/archzfs-testing,/var/www/archive_archzfsand/var/www/archive_archzfs-testing). Grant access to a user, that will be used to update the repo. -
Generate a new ssh key with no passphrase and save it in
deploy/secrets/ssh_key(.pub).
ssh-keygen -f deploy/secrets/ssh_key
-
Add the newly generated public key to
~/.ssh/.authorized_keysas user on your repo server. -
Save the public server keys to
deploy/secrets/ssh_server_hostkeys.
ssh-keyscan archzfs-repo.example.com > deploy/secrets/ssh_server_hostkeys
- Generate a gpg (sub)key to sign the packages and save it to
deploy/secrets/gpg_key.
gpg --gen-key
# copy the gpg key id you'd like to use
gpg --list-secret-keys --keyid-format LONG
# replace <gpg-key-id> with your key id
gpg --armor --export-secret-keys <gpg-key-id> > deploy/secrets/gpg_key
- Open
conf.envand fill out the options like this:
# push built packages to remote repo
ENABLE_DEPLOY=true
REMOTE_REPO_SERVER=user@archzfs-repo.example.com
REMOTE_REPO_PATH=/var/www
REMOTE_REPO_BASENAME=archzfs
GPG_PASSPHRASE=password
This would create/update the repository located in /var/www/archzfs on the server archzfs-repo@example.com using the user user.
- Finally rebuild the docker container (
docker-compose build) and start buildbot (docker-compose up)
When enabled you'll receive an email when deployment has failed.
Set ENABLE_DEPLOY_NOTIFICATIONS to true and specify EMAIL_FROM NOTIFY_RECIPIENTS.
You can have more than one recipient by separating the emails using a |.
Fill out all following options according to your E-Mail server.