feat: tags and tag deploy webhooks
This commit is contained in:
@@ -63,6 +63,9 @@
|
||||
@click.prevent="activeTab = 'resource-operations'; window.location.hash = 'resource-operations'"
|
||||
href="#">Resource Operations
|
||||
</a>
|
||||
<a :class="activeTab === 'tags' && 'text-white'"
|
||||
@click.prevent="activeTab = 'tags'; window.location.hash = 'tags'" href="#">Tags
|
||||
</a>
|
||||
<a :class="activeTab === 'danger' && 'text-white'"
|
||||
@click.prevent="activeTab = 'danger'; window.location.hash = 'danger'" href="#">Danger Zone
|
||||
</a>
|
||||
@@ -112,6 +115,9 @@
|
||||
<div x-cloak x-show="activeTab === 'resource-operations'">
|
||||
<livewire:project.shared.resource-operations :resource="$application" />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'tags'">
|
||||
<livewire:project.shared.tags :resource="$application" />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'danger'">
|
||||
<livewire:project.shared.danger :resource="$application" />
|
||||
</div>
|
||||
|
||||
@@ -112,9 +112,7 @@
|
||||
helper="If set, it will tag the built image with this tag too. <br><br>Example: If you set it to 'latest', it will push the image with the commit sha tag + with the latest tag."
|
||||
label="Docker Image Tag" />
|
||||
@endif
|
||||
|
||||
@endif
|
||||
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
@@ -46,24 +46,34 @@
|
||||
@else
|
||||
<div x-data="searchComponent()">
|
||||
<x-forms.input placeholder="Search for name, fqdn..." class="w-full" x-model="search" />
|
||||
<div class="grid gap-2 pt-4 lg:grid-cols-2">
|
||||
<div class="grid gap-4 pt-4 lg:grid-cols-4">
|
||||
<template x-for="item in filteredApplications" :key="item.id">
|
||||
<a class="relative box group" :href="item.hrefLink">
|
||||
<div class="flex flex-col mx-6">
|
||||
<div class="pb-2 font-bold text-white" x-text="item.name"></div>
|
||||
<div class="description" x-text="item.description"></div>
|
||||
<div class="description" x-text="item.fqdn"></div>
|
||||
<span class="relative">
|
||||
<a class="h-24 box group" :href="item.hrefLink">
|
||||
<div class="flex flex-col mx-6">
|
||||
<div class="pb-2 font-bold text-white" x-text="item.name"></div>
|
||||
<div class="description" x-text="item.description"></div>
|
||||
<div class="description" x-text="item.fqdn"></div>
|
||||
</div>
|
||||
<template x-if="item.status.startsWith('running')">
|
||||
<div class="absolute bg-success -top-1 -left-1 badge badge-xs"></div>
|
||||
</template>
|
||||
<template x-if="item.status.startsWith('exited')">
|
||||
<div class="absolute bg-error -top-1 -left-1 badge badge-xs"></div>
|
||||
</template>
|
||||
<template x-if="item.status.startsWith('restarting')">
|
||||
<div class="absolute bg-warning -top-1 -left-1 badge badge-xs"></div>
|
||||
</template>
|
||||
</a>
|
||||
<div class="flex gap-1 pt-1 group-hover:text-white group min-h-6">
|
||||
<template x-for="tag in item.tags">
|
||||
<div class="px-2 py-1 cursor-pointer description bg-coolgray-100 hover:bg-coolgray-300"
|
||||
@click.prevent="gotoTag(tag.name)" x-text="tag.name"></div>
|
||||
</template>
|
||||
<div class="flex items-center px-2 text-xs cursor-pointer text-neutral-500/20 group-hover:text-white hover:bg-coolgray-300"
|
||||
@click.prevent="goto(item)">Add tag</div>
|
||||
</div>
|
||||
<template x-if="item.status.startsWith('running')">
|
||||
<div class="absolute bg-success -top-1 -left-1 badge badge-xs"></div>
|
||||
</template>
|
||||
<template x-if="item.status.startsWith('exited')">
|
||||
<div class="absolute bg-error -top-1 -left-1 badge badge-xs"></div>
|
||||
</template>
|
||||
<template x-if="item.status.startsWith('restarting')">
|
||||
<div class="absolute bg-warning -top-1 -left-1 badge badge-xs"></div>
|
||||
</template>
|
||||
</a>
|
||||
</span>
|
||||
</template>
|
||||
<template x-for="item in filteredPostgresqls" :key="item.id">
|
||||
<a class="relative box group" :href="item.hrefLink">
|
||||
@@ -184,6 +194,13 @@
|
||||
mysqls: @js($mysqls),
|
||||
mariadbs: @js($mariadbs),
|
||||
services: @js($services),
|
||||
gotoTag(tag) {
|
||||
window.location.href = '/tags/' + tag;
|
||||
},
|
||||
goto(item) {
|
||||
const hrefLink = item.hrefLink;
|
||||
window.location.href = `${hrefLink}#tags`;
|
||||
},
|
||||
get filteredApplications() {
|
||||
if (this.search === '') {
|
||||
return this.applications;
|
||||
|
||||
13
resources/views/livewire/project/shared/tags.blade.php
Normal file
13
resources/views/livewire/project/shared/tags.blade.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<div>
|
||||
<h2>Tags</h2>
|
||||
@foreach ($this->resource->tags as $tag)
|
||||
<div>
|
||||
<div>{{ $tag->name }}</div>
|
||||
<x-forms.button isError wire:click="deleteTag('{{ $tag->id }}','{{ $tag->name }}')">Delete</x-forms.button>
|
||||
</div>
|
||||
@endforeach
|
||||
<form wire:submit='submit'>
|
||||
<x-forms.input label="Add/Assign a tag" wire:model="new_tag" wire:confirm="Are you sure you want to delete this post?" />
|
||||
<x-forms.button type="submit">Add</x-forms.button>
|
||||
</form>
|
||||
</div>
|
||||
10
resources/views/livewire/tags/index.blade.php
Normal file
10
resources/views/livewire/tags/index.blade.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<div>
|
||||
<h1>Tags</h1>
|
||||
<div class="flex gap-2 pt-10">
|
||||
@forelse ($tags as $tag)
|
||||
<a class="box" href="{{ route('tags.show', ['tag_name' => $tag->name]) }}">{{ $tag->name }}</a>
|
||||
@empty
|
||||
<p>No tags yet</p>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
18
resources/views/livewire/tags/show.blade.php
Normal file
18
resources/views/livewire/tags/show.blade.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<div>
|
||||
<h1>Tag: {{ $tag->name }}</h1>
|
||||
<div class="">Tag details</div>
|
||||
<div class="lg:w-[500px] pt-4">
|
||||
<x-forms.input readonly label="Tag Deploy Webhook URL" id="webhook" />
|
||||
</div>
|
||||
<div class="pt-4">
|
||||
<div class="flex items-end gap-2">
|
||||
<h3>Resources</h3>
|
||||
<x-forms.button>Redeploy All</x-forms.button>
|
||||
</div>
|
||||
<div class="grid gap-2 pt-4 lg:grid-cols-2">
|
||||
@foreach ($resources as $resource)
|
||||
<div class="box">{{ data_get($resource, 'name') }}</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user