add early support for tags
This commit is contained in:
parent
8ac922d283
commit
373c1f8d76
6 changed files with 292 additions and 15 deletions
|
@ -4,12 +4,7 @@ set -euxo pipefail
|
||||||
nix run .#build-static
|
nix run .#build-static
|
||||||
nix run .#build-container
|
nix run .#build-container
|
||||||
|
|
||||||
if [[ $BRANCH == "main" && -f $SECRET_PATH ]]; then
|
if [[ ! -z $TAG && ! -z $DOCKER_AUTH ]]; then
|
||||||
# Load secrets
|
|
||||||
set +x
|
|
||||||
source $SECRET_PATH
|
|
||||||
set -x
|
|
||||||
|
|
||||||
# Configure Docker Auth
|
# Configure Docker Auth
|
||||||
mkdir .docker
|
mkdir .docker
|
||||||
cat > .docker/config.json <<EOF
|
cat > .docker/config.json <<EOF
|
||||||
|
|
110
example/forgejo.hook.tag.json
Normal file
110
example/forgejo.hook.tag.json
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
{
|
||||||
|
"sha": "e681ec50dc298db4fc3f6eb87f12f97afadb3210",
|
||||||
|
"ref": "0.9.0-rc.1",
|
||||||
|
"ref_type": "tag",
|
||||||
|
"repository": {
|
||||||
|
"id": 270,
|
||||||
|
"owner": {
|
||||||
|
"id": 3,
|
||||||
|
"login": "Deuxfleurs",
|
||||||
|
"login_name": "",
|
||||||
|
"full_name": "",
|
||||||
|
"email": "",
|
||||||
|
"avatar_url": "https://git.deuxfleurs.fr/avatars/9f7f0ddf4e41327d9b02aff0a559ea0b",
|
||||||
|
"language": "",
|
||||||
|
"is_admin": false,
|
||||||
|
"last_login": "0001-01-01T00:00:00Z",
|
||||||
|
"created": "2020-01-28T19:09:02Z",
|
||||||
|
"restricted": false,
|
||||||
|
"active": false,
|
||||||
|
"prohibit_login": false,
|
||||||
|
"location": "Rennes, France",
|
||||||
|
"website": "https://deuxfleurs.fr",
|
||||||
|
"description": "",
|
||||||
|
"visibility": "public",
|
||||||
|
"followers_count": 0,
|
||||||
|
"following_count": 0,
|
||||||
|
"starred_repos_count": 0,
|
||||||
|
"username": "Deuxfleurs"
|
||||||
|
},
|
||||||
|
"name": "albatros",
|
||||||
|
"full_name": "Deuxfleurs/albatros",
|
||||||
|
"description": "Tools to build a software supply chain on your own",
|
||||||
|
"empty": false,
|
||||||
|
"private": false,
|
||||||
|
"fork": false,
|
||||||
|
"template": false,
|
||||||
|
"parent": null,
|
||||||
|
"mirror": false,
|
||||||
|
"size": 798,
|
||||||
|
"language": "",
|
||||||
|
"languages_url": "https://git.deuxfleurs.fr/api/v1/repos/Deuxfleurs/albatros/languages",
|
||||||
|
"html_url": "https://git.deuxfleurs.fr/Deuxfleurs/albatros",
|
||||||
|
"link": "",
|
||||||
|
"ssh_url": "git@git.deuxfleurs.fr:Deuxfleurs/albatros.git",
|
||||||
|
"clone_url": "https://git.deuxfleurs.fr/Deuxfleurs/albatros.git",
|
||||||
|
"original_url": "",
|
||||||
|
"website": "",
|
||||||
|
"stars_count": 0,
|
||||||
|
"forks_count": 0,
|
||||||
|
"watchers_count": 9,
|
||||||
|
"open_issues_count": 5,
|
||||||
|
"open_pr_counter": 0,
|
||||||
|
"release_counter": 0,
|
||||||
|
"default_branch": "main",
|
||||||
|
"archived": false,
|
||||||
|
"created_at": "2023-03-14T17:52:11Z",
|
||||||
|
"updated_at": "2023-05-04T14:15:25Z",
|
||||||
|
"permissions": {
|
||||||
|
"admin": false,
|
||||||
|
"push": false,
|
||||||
|
"pull": false
|
||||||
|
},
|
||||||
|
"has_issues": true,
|
||||||
|
"internal_tracker": {
|
||||||
|
"enable_time_tracker": true,
|
||||||
|
"allow_only_contributors_to_track_time": true,
|
||||||
|
"enable_issue_dependencies": true
|
||||||
|
},
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pull_requests": true,
|
||||||
|
"has_projects": true,
|
||||||
|
"ignore_whitespace_conflicts": false,
|
||||||
|
"allow_merge_commits": true,
|
||||||
|
"allow_rebase": true,
|
||||||
|
"allow_rebase_explicit": true,
|
||||||
|
"allow_squash_merge": true,
|
||||||
|
"allow_rebase_update": true,
|
||||||
|
"default_delete_branch_after_merge": false,
|
||||||
|
"default_merge_style": "merge",
|
||||||
|
"default_allow_maintainer_edit": false,
|
||||||
|
"avatar_url": "",
|
||||||
|
"internal": false,
|
||||||
|
"mirror_interval": "",
|
||||||
|
"mirror_updated": "0001-01-01T00:00:00Z",
|
||||||
|
"repo_transfer": null
|
||||||
|
},
|
||||||
|
"sender": {
|
||||||
|
"id": 4,
|
||||||
|
"login": "quentin",
|
||||||
|
"login_name": "",
|
||||||
|
"full_name": "Quentin",
|
||||||
|
"email": "quentin@dufour.io",
|
||||||
|
"avatar_url": "https://git.deuxfleurs.fr/avatars/b081d05777a68620eb6e3ca16a753b6a",
|
||||||
|
"language": "",
|
||||||
|
"is_admin": false,
|
||||||
|
"last_login": "0001-01-01T00:00:00Z",
|
||||||
|
"created": "2020-01-29T06:55:51Z",
|
||||||
|
"restricted": false,
|
||||||
|
"active": false,
|
||||||
|
"prohibit_login": false,
|
||||||
|
"location": "",
|
||||||
|
"website": "https://quentin.dufour.io",
|
||||||
|
"description": "",
|
||||||
|
"visibility": "public",
|
||||||
|
"followers_count": 0,
|
||||||
|
"following_count": 3,
|
||||||
|
"starred_repos_count": 7,
|
||||||
|
"username": "quentin"
|
||||||
|
}
|
||||||
|
}
|
158
example/forgejo.push.json
Normal file
158
example/forgejo.push.json
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
{
|
||||||
|
"ref": "refs/tags/0.9.0-rc.1",
|
||||||
|
"before": "0000000000000000000000000000000000000000",
|
||||||
|
"after": "e681ec50dc298db4fc3f6eb87f12f97afadb3210",
|
||||||
|
"compare_url": "https://git.deuxfleurs.fr/Deuxfleurs/albatros/compare/0000000000000000000000000000000000000000...e681ec50dc298db4fc3f6eb87f12f97afadb3210",
|
||||||
|
"commits": [],
|
||||||
|
"total_commits": 0,
|
||||||
|
"head_commit": {
|
||||||
|
"id": "8ac922d28311b51adb0c6d9574c52a1f05585b43",
|
||||||
|
"message": "push to dxflrs instead of superboum\n",
|
||||||
|
"url": "https://git.deuxfleurs.fr/Deuxfleurs/albatros/commit/8ac922d28311b51adb0c6d9574c52a1f05585b43",
|
||||||
|
"author": {
|
||||||
|
"name": "Quentin Dufour",
|
||||||
|
"email": "quentin@deuxfleurs.fr",
|
||||||
|
"username": "quentin"
|
||||||
|
},
|
||||||
|
"committer": {
|
||||||
|
"name": "Quentin Dufour",
|
||||||
|
"email": "quentin@deuxfleurs.fr",
|
||||||
|
"username": "quentin"
|
||||||
|
},
|
||||||
|
"verification": null,
|
||||||
|
"timestamp": "2023-05-04T16:15:12+02:00",
|
||||||
|
"added": [],
|
||||||
|
"removed": [],
|
||||||
|
"modified": [
|
||||||
|
"flake.nix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"id": 270,
|
||||||
|
"owner": {
|
||||||
|
"id": 3,
|
||||||
|
"login": "Deuxfleurs",
|
||||||
|
"login_name": "",
|
||||||
|
"full_name": "",
|
||||||
|
"email": "",
|
||||||
|
"avatar_url": "https://git.deuxfleurs.fr/avatars/9f7f0ddf4e41327d9b02aff0a559ea0b",
|
||||||
|
"language": "",
|
||||||
|
"is_admin": false,
|
||||||
|
"last_login": "0001-01-01T00:00:00Z",
|
||||||
|
"created": "2020-01-28T19:09:02Z",
|
||||||
|
"restricted": false,
|
||||||
|
"active": false,
|
||||||
|
"prohibit_login": false,
|
||||||
|
"location": "Rennes, France",
|
||||||
|
"website": "https://deuxfleurs.fr",
|
||||||
|
"description": "",
|
||||||
|
"visibility": "public",
|
||||||
|
"followers_count": 0,
|
||||||
|
"following_count": 0,
|
||||||
|
"starred_repos_count": 0,
|
||||||
|
"username": "Deuxfleurs"
|
||||||
|
},
|
||||||
|
"name": "albatros",
|
||||||
|
"full_name": "Deuxfleurs/albatros",
|
||||||
|
"description": "Tools to build a software supply chain on your own",
|
||||||
|
"empty": false,
|
||||||
|
"private": false,
|
||||||
|
"fork": false,
|
||||||
|
"template": false,
|
||||||
|
"parent": null,
|
||||||
|
"mirror": false,
|
||||||
|
"size": 798,
|
||||||
|
"language": "",
|
||||||
|
"languages_url": "https://git.deuxfleurs.fr/api/v1/repos/Deuxfleurs/albatros/languages",
|
||||||
|
"html_url": "https://git.deuxfleurs.fr/Deuxfleurs/albatros",
|
||||||
|
"link": "",
|
||||||
|
"ssh_url": "git@git.deuxfleurs.fr:Deuxfleurs/albatros.git",
|
||||||
|
"clone_url": "https://git.deuxfleurs.fr/Deuxfleurs/albatros.git",
|
||||||
|
"original_url": "",
|
||||||
|
"website": "",
|
||||||
|
"stars_count": 0,
|
||||||
|
"forks_count": 0,
|
||||||
|
"watchers_count": 9,
|
||||||
|
"open_issues_count": 5,
|
||||||
|
"open_pr_counter": 0,
|
||||||
|
"release_counter": 0,
|
||||||
|
"default_branch": "main",
|
||||||
|
"archived": false,
|
||||||
|
"created_at": "2023-03-14T17:52:11Z",
|
||||||
|
"updated_at": "2023-05-04T14:15:25Z",
|
||||||
|
"permissions": {
|
||||||
|
"admin": true,
|
||||||
|
"push": true,
|
||||||
|
"pull": true
|
||||||
|
},
|
||||||
|
"has_issues": true,
|
||||||
|
"internal_tracker": {
|
||||||
|
"enable_time_tracker": true,
|
||||||
|
"allow_only_contributors_to_track_time": true,
|
||||||
|
"enable_issue_dependencies": true
|
||||||
|
},
|
||||||
|
"has_wiki": true,
|
||||||
|
"has_pull_requests": true,
|
||||||
|
"has_projects": true,
|
||||||
|
"ignore_whitespace_conflicts": false,
|
||||||
|
"allow_merge_commits": true,
|
||||||
|
"allow_rebase": true,
|
||||||
|
"allow_rebase_explicit": true,
|
||||||
|
"allow_squash_merge": true,
|
||||||
|
"allow_rebase_update": true,
|
||||||
|
"default_delete_branch_after_merge": false,
|
||||||
|
"default_merge_style": "merge",
|
||||||
|
"default_allow_maintainer_edit": false,
|
||||||
|
"avatar_url": "",
|
||||||
|
"internal": false,
|
||||||
|
"mirror_interval": "",
|
||||||
|
"mirror_updated": "0001-01-01T00:00:00Z",
|
||||||
|
"repo_transfer": null
|
||||||
|
},
|
||||||
|
"pusher": {
|
||||||
|
"id": 4,
|
||||||
|
"login": "quentin",
|
||||||
|
"login_name": "",
|
||||||
|
"full_name": "Quentin",
|
||||||
|
"email": "quentin@dufour.io",
|
||||||
|
"avatar_url": "https://git.deuxfleurs.fr/avatars/b081d05777a68620eb6e3ca16a753b6a",
|
||||||
|
"language": "",
|
||||||
|
"is_admin": false,
|
||||||
|
"last_login": "0001-01-01T00:00:00Z",
|
||||||
|
"created": "2020-01-29T06:55:51Z",
|
||||||
|
"restricted": false,
|
||||||
|
"active": false,
|
||||||
|
"prohibit_login": false,
|
||||||
|
"location": "",
|
||||||
|
"website": "https://quentin.dufour.io",
|
||||||
|
"description": "",
|
||||||
|
"visibility": "public",
|
||||||
|
"followers_count": 0,
|
||||||
|
"following_count": 3,
|
||||||
|
"starred_repos_count": 7,
|
||||||
|
"username": "quentin"
|
||||||
|
},
|
||||||
|
"sender": {
|
||||||
|
"id": 4,
|
||||||
|
"login": "quentin",
|
||||||
|
"login_name": "",
|
||||||
|
"full_name": "Quentin",
|
||||||
|
"email": "quentin@dufour.io",
|
||||||
|
"avatar_url": "https://git.deuxfleurs.fr/avatars/b081d05777a68620eb6e3ca16a753b6a",
|
||||||
|
"language": "",
|
||||||
|
"is_admin": false,
|
||||||
|
"last_login": "0001-01-01T00:00:00Z",
|
||||||
|
"created": "2020-01-29T06:55:51Z",
|
||||||
|
"restricted": false,
|
||||||
|
"active": false,
|
||||||
|
"prohibit_login": false,
|
||||||
|
"location": "",
|
||||||
|
"website": "https://quentin.dufour.io",
|
||||||
|
"description": "",
|
||||||
|
"visibility": "public",
|
||||||
|
"followers_count": 0,
|
||||||
|
"following_count": 3,
|
||||||
|
"starred_repos_count": 7,
|
||||||
|
"username": "quentin"
|
||||||
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ job "builder" {
|
||||||
|
|
||||||
parameterized {
|
parameterized {
|
||||||
payload = "optional"
|
payload = "optional"
|
||||||
meta_required = [ "REPO_URL", "COMMIT", "BRANCH", "FLAVOR" ]
|
meta_required = [ "REPO_URL", "COMMIT", "BRANCH", "TAG", "FLAVOR" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
reschedule {
|
reschedule {
|
||||||
|
@ -23,7 +23,7 @@ job "builder" {
|
||||||
task "warmup-cache" {
|
task "warmup-cache" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "nixpkgs/nix:nixos-22.11"
|
image = "nixpkgs/nix@sha256:fca3bf99804141e369bb52f35030f7c6c69e72b7d1ae3a9edf8ebeae2398f789"
|
||||||
args = [ "/tmp/warmup.sh" ]
|
args = [ "/tmp/warmup.sh" ]
|
||||||
volumes = [
|
volumes = [
|
||||||
"local/warmup.sh:/tmp/warmup.sh",
|
"local/warmup.sh:/tmp/warmup.sh",
|
||||||
|
@ -47,7 +47,7 @@ job "builder" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
leader = true
|
leader = true
|
||||||
config {
|
config {
|
||||||
image = "nixpkgs/nix:nixos-22.11"
|
image = "nixpkgs/nix@sha256:fca3bf99804141e369bb52f35030f7c6c69e72b7d1ae3a9edf8ebeae2398f789"
|
||||||
args = [ "/tmp/builder.sh" ]
|
args = [ "/tmp/builder.sh" ]
|
||||||
volumes = [
|
volumes = [
|
||||||
"local/builder.sh:/tmp/builder.sh",
|
"local/builder.sh:/tmp/builder.sh",
|
||||||
|
@ -65,6 +65,7 @@ job "builder" {
|
||||||
env {
|
env {
|
||||||
COMMIT = "${NOMAD_META_COMMIT}"
|
COMMIT = "${NOMAD_META_COMMIT}"
|
||||||
BRANCH = "${NOMAD_META_BRANCH}"
|
BRANCH = "${NOMAD_META_BRANCH}"
|
||||||
|
TAG = "${NOMAD_META_TAG}"
|
||||||
REPO_URL = "${NOMAD_META_REPO_URL}"
|
REPO_URL = "${NOMAD_META_REPO_URL}"
|
||||||
FLAVOR = "${NOMAD_META_FLAVOR}"
|
FLAVOR = "${NOMAD_META_FLAVOR}"
|
||||||
GCROOT = "/mnt/cacheroot/${NOMAD_META_COMMIT}"
|
GCROOT = "/mnt/cacheroot/${NOMAD_META_COMMIT}"
|
||||||
|
@ -96,7 +97,7 @@ job "builder" {
|
||||||
task "daemon" {
|
task "daemon" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "nixpkgs/nix:nixos-22.11"
|
image = "nixpkgs/nix@sha256:fca3bf99804141e369bb52f35030f7c6c69e72b7d1ae3a9edf8ebeae2398f789"
|
||||||
command = "nix-daemon"
|
command = "nix-daemon"
|
||||||
volumes = [
|
volumes = [
|
||||||
"/var/cache/albatros/nix:/nix",
|
"/var/cache/albatros/nix:/nix",
|
||||||
|
@ -128,7 +129,7 @@ job "builder" {
|
||||||
task "garbage-collect-cache" {
|
task "garbage-collect-cache" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "nixpkgs/nix:nixos-22.11"
|
image = "nixpkgs/nix@sha256:fca3bf99804141e369bb52f35030f7c6c69e72b7d1ae3a9edf8ebeae2398f789"
|
||||||
args = [ "/tmp/gc.sh" ]
|
args = [ "/tmp/gc.sh" ]
|
||||||
volumes = [
|
volumes = [
|
||||||
"local/gc.sh:/tmp/gc.sh",
|
"local/gc.sh:/tmp/gc.sh",
|
||||||
|
|
|
@ -7,9 +7,11 @@ cd /workspace
|
||||||
git init
|
git init
|
||||||
git remote add origin ${NOMAD_META_REPO_URL}
|
git remote add origin ${NOMAD_META_REPO_URL}
|
||||||
git fetch origin ${NOMAD_META_COMMIT}
|
git fetch origin ${NOMAD_META_COMMIT}
|
||||||
git checkout ${NOMAD_META_COMMIT} -b ${NOMAD_META_BRANCH}
|
git checkout ${NOMAD_META_COMMIT} -b ${NOMAD_META_BRANCH:-$NOMAD_META_TAG}
|
||||||
if [[ -s /var/run/secrets/albatros/secret.txt ]]; then
|
if [[ -s /var/run/secrets/albatros/secret.txt ]]; then
|
||||||
export SECRET_PATH=/var/run/secrets/albatros/secret.txt
|
set +x
|
||||||
|
source /var/run/secrets/albatros/secret.txt
|
||||||
|
set -x
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# wait for nix daemon during 120 seconds
|
# wait for nix daemon during 120 seconds
|
||||||
|
|
|
@ -76,13 +76,24 @@ func (h HookHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var branch, tag string
|
||||||
|
// BRANCH OR TAG?
|
||||||
|
if strings.HasPrefix(notification.Ref, "refs/heads/") {
|
||||||
|
branch = strings.ReplaceAll(notification.Ref, "refs/heads/", "")
|
||||||
|
} else if strings.HasPrefix(notification.Ref, "refs/tags/") {
|
||||||
|
tag = strings.ReplaceAll(notification.Ref, "refs/tags/", "")
|
||||||
|
} else {
|
||||||
|
http.Error(w, fmt.Sprintf("ref '%s' is not a tag or a branch ref, albatros does not know what to do."), http.StatusBadRequest)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Build job parameters for Nomad
|
// Build job parameters for Nomad
|
||||||
meta := map[string]string{
|
meta := map[string]string{
|
||||||
"REPO_URL": notification.Repository.CloneUrl,
|
"REPO_URL": notification.Repository.CloneUrl,
|
||||||
"COMMIT": notification.After,
|
"COMMIT": notification.After,
|
||||||
"FLAVOR": flavor,
|
"FLAVOR": flavor,
|
||||||
// @FIXME: this code is not correct, this is a hack
|
"BRANCH": branch,
|
||||||
"BRANCH": strings.ReplaceAll(notification.Ref, "refs/heads/", ""),
|
"TAG": tag,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check sender
|
// Check sender
|
||||||
|
|
Loading…
Reference in a new issue