Use actions instead of drone #163

Merged
lunny merged 7 commits from lunny/use_actions into master 2023-05-26 08:12:34 +00:00
4 changed files with 143 additions and 56 deletions

View File

@ -1,55 +0,0 @@
---
kind: pipeline
name: testing
steps:
- name: fetch-tags
pull: default
image: docker:git
commands:
- git fetch --tags --force
when:
event:
exclude:
- pull_request
- name: linter
image: golang:1.14
commands:
- go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.30.0
- golangci-lint run
environment:
GOPROXY: https://goproxy.cn,direct
- name: test
pull: always
image: golang:1.13
commands:
- export PATH=$PATH:/go:/srv/app/bin
- go vet ./...
- go test -v -race ./...
environment:
GOPATH: /srv/app
MINIO_SERVER_ENDPOINT: minio:9000
MINIO_SERVER_ACCESS_KEY_ID:
from_secret: aws_access_key_id
MINIO_SERVER_SECRET_KEY:
from_secret: aws_secret_access_key
MINIO_SERVER_BUCKET: test
GOPROXY: https://goproxy.cn,direct
when:
event:
- push
- tag
- pull_request
services:
- name: minio
image: minio/minio:RELEASE.2020-03-14T02-21-58Z
commands:
- minio server ./data
environment:
MINIO_ACCESS_KEY:
from_secret: aws_access_key_id
MINIO_SECRET_KEY:
from_secret: aws_secret_access_key

View File

@ -0,0 +1,84 @@
name: release
on:
push:
tags:
- '*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: setup go
uses: https://github.com/actions/setup-go@v4
with:
go-version: '>=1.20.1'
- name: go generate
run: go generate ./...
- name: release-build
run: go build -ldflags="-s -w -X 'main.Version=${{ github.ref_name }}'" -o bin/ftpd-${{ github.ref_name }}-linux-amd64
- name: release-build-windows
run: GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=${{ github.ref_name }}'" -o bin/ftpd-${{ github.ref_name }}-windows-amd64.exe
- name: release-build-darwin
run: GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w -X 'main.Version=${{ github.ref_name }}'" -o bin/ftpd-${{ github.ref_name }}-darwin-amd64
- name: Use Go Action
id: use-go-action
uses: actions/release-action@main
with:
files: |-
bin/**
api_key: '${{secrets.RELEASE_TOKEN}}'
release-image:
runs-on: ubuntu-latest
container:
image: catthehacker/ubuntu:act-latest
env:
DOCKER_ORG: gitea
DOCKER_LATEST: latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0 # all history for all branches and tags
- name: dockerfile lint check
uses: https://github.com/hadolint/hadolint-action@v3.1.0
with:
dockerfile: Dockerfile
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Get Meta
id: meta
run: |
echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT
echo REPO_VERSION=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
- name: Build and push
uses: docker/build-push-action@v4
env:
ACTIONS_RUNTIME_TOKEN: '' # See https://gitea.com/gitea/act_runner/issues/119
with:
context: .
file: ./Dockerfile
platforms: |
linux/amd64
linux/arm64
push: true
tags: |
${{ env.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}
${{ env.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ env.DOCKER_LATEST }}

58
.gitea/workflows/test.yml Normal file
View File

@ -0,0 +1,58 @@
name: checks
on:
- push
- pull_request
env:
GOPROXY: https://goproxy.io,direct
GOPATH: /go_path
GOCACHE: /go_cache
jobs:
lint:
name: check and test
runs-on: ubuntu-latest
steps:
- name: cache go path
id: cache-go-path
uses: https://github.com/actions/cache@v3
with:
path: /go_path
key: go_path-${{ github.repository }}-${{ github.ref_name }}
restore-keys: |
go_path-${{ github.repository }}-
go_path-
- name: cache go cache
id: cache-go-cache
uses: https://github.com/actions/cache@v3
with:
path: /go_cache
key: go_cache-${{ github.repository }}-${{ github.ref_name }}
restore-keys: |
go_cache-${{ github.repository }}-
go_cache-
- uses: actions/setup-go@v3
with:
go-version: 1.20
- uses: https://github.com/actions/checkout@v3
- name: lint
run: go install golang.org/x/lint/golint@latest && golint ./...
- name: vet
run: go vet ./...
- name: test
run: go test -v -race -coverprofile=coverage.txt -covermode=atomic ./...
env:
MINIO_SERVER_ENDPOINT: minio:9000
MINIO_SERVER_ACCESS_KEY_ID: ${{ secrets.aws_access_key_id }}
MINIO_SERVER_SECRET_KEY: ${{ secrets.aws_secret_access_key }}
MINIO_SERVER_BUCKET: test
services:
minio:
image: minio/minio:RELEASE.2022-07-24T01-54-52Z
env:
MINIO_ACCESS_KEY: ${{ secrets.aws_access_key_id }}
MINIO_SECRET_KEY: ${{ secrets.aws_secret_access_key }}
cmd:
- 'minio'
- 'server'
- '/data'

View File

@ -1,6 +1,6 @@
# server
[![Build Status](https://drone.gitea.com/api/badges/goftp/server/status.svg)](https://drone.gitea.com/goftp/server) [![](http://gocover.io/_badge/gitea.com/goftp/server)](http://gocover.io/gitea.com/goftp/server)
[![](http://gocover.io/_badge/gitea.com/goftp/server)](http://gocover.io/gitea.com/goftp/server)
[![](https://goreportcard.com/badge/gitea.com/goftp/server)](https://goreportcard.com/report/gitea.com/goftp/server)
A FTP server framework forked from [github.com/yob/graval](http://github.com/yob/graval) and changed a lot.