53 lines
2.5 KiB
YAML
53 lines
2.5 KiB
YAML
name: ci
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
jobs:
|
|
vet-and-test:
|
|
runs-on: nightly
|
|
steps:
|
|
- name: Checkout
|
|
env:
|
|
TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
set -euo pipefail
|
|
# 自包含检出(runner 无法访问 github.com 上的 actions/checkout):固定 SHA 浅取回;凭据只经 GIT_CONFIG_* 环境变量以 URL 限定的 extraheader 传给单个 git 进程(不进命令行、不持久化);强制检出并清理遗留文件,等价 actions/checkout 的 clean。
|
|
case "$GITHUB_SHA" in *[!0-9a-fA-F]*|"") echo "Checkout requires a fixed commit SHA" >&2; exit 1;; esac
|
|
url="${GITHUB_SERVER_URL%/}/${GITHUB_REPOSITORY}.git"
|
|
git init -q .
|
|
GIT_CONFIG_COUNT=3 \
|
|
GIT_CONFIG_KEY_0="http.${url}.extraheader" GIT_CONFIG_VALUE_0="AUTHORIZATION: token ${TOKEN}" \
|
|
GIT_CONFIG_KEY_1=credential.helper GIT_CONFIG_VALUE_1= \
|
|
GIT_CONFIG_KEY_2=core.hooksPath GIT_CONFIG_VALUE_2=/dev/null \
|
|
git fetch -q --depth=1 "$url" "$GITHUB_SHA"
|
|
git checkout -q -f --detach FETCH_HEAD
|
|
git clean -ffdxq
|
|
unset TOKEN
|
|
- run: go vet ./... && go test -count=1 ./...
|
|
docker-checkout-hostgateway:
|
|
runs-on: ubuntu-latest
|
|
options: --add-host gitea:host-gateway
|
|
env:
|
|
GITHUB_SERVER_URL: http://gitea:3000
|
|
steps:
|
|
- name: Checkout
|
|
env:
|
|
TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
set -euo pipefail
|
|
# 自包含检出(runner 无法访问 github.com 上的 actions/checkout):固定 SHA 浅取回;凭据只经 GIT_CONFIG_* 环境变量以 URL 限定的 extraheader 传给单个 git 进程(不进命令行、不持久化);强制检出并清理遗留文件,等价 actions/checkout 的 clean。
|
|
case "$GITHUB_SHA" in *[!0-9a-fA-F]*|"") echo "Checkout requires a fixed commit SHA" >&2; exit 1;; esac
|
|
url="${GITHUB_SERVER_URL%/}/${GITHUB_REPOSITORY}.git"
|
|
git init -q .
|
|
GIT_CONFIG_COUNT=3 \
|
|
GIT_CONFIG_KEY_0="http.${url}.extraheader" GIT_CONFIG_VALUE_0="AUTHORIZATION: token ${TOKEN}" \
|
|
GIT_CONFIG_KEY_1=credential.helper GIT_CONFIG_VALUE_1= \
|
|
GIT_CONFIG_KEY_2=core.hooksPath GIT_CONFIG_VALUE_2=/dev/null \
|
|
git fetch -q --depth=1 "$url" "$GITHUB_SHA"
|
|
git checkout -q -f --detach FETCH_HEAD
|
|
git clean -ffdxq
|
|
unset TOKEN
|
|
- run: test -f go.mod && echo "docker-mode checkout via host-gateway OK"
|