Files
CatsOfMastodon/.gitea/workflows/gitea-ci.yml
Mohammad Mahdi Mohammadi eb4160e207
Some checks failed
release / Build .NET Application (push) Has been cancelled
release / Build and push Docker image (push) Has been skipped
Fix gitea artifacts and add docker cache layer
2025-01-04 15:20:39 +03:30

76 lines
2.4 KiB
YAML
Executable File

name: release
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
ASPNETCORE_ENVIRONMENT: Production
jobs:
build:
name: Build .NET Application
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # all history for all branches and tags
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y tar
- name: Install telegram bot library
run: dotnet nuget add source https://pkgs.dev.azure.com/tgbots/Telegram.Bot/_packaging/release/nuget/v3/index.json -n Telegram.Bot
- name: dotnet publish
run: dotnet publish -c Release -r linux-x64 --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=false /p:EnableCompressionInSingleFile=true
- name: Create tarball
run: tar -czvf publish.tar.gz -C bin/Release/net9.0/linux-x64/publish/ .
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: publish-tarball
path: publish.tar.gz
docker:
name: Build and push Docker image
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v2
with:
install: true
- name: Log in to Container registry
uses: docker/login-action@v2
with:
registry: git.mahdium.ir
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
- name: Cache Docker layers
id: cache-layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: git.mahdium.ir/mahdium/cats-of-mastodon-telegram-bot
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache