study-plan/.gitea/workflows/demo.yaml
Workflow config file is invalid. Please check your config file: yaml: line 164: could not find expected ':'

182 lines
6.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: 自动流水线示例
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on:
pull_request:
branches: ["main"]
types: [closed]
push:
branches: [ "main","releases/**" ]
# paths:
# - 'sub-project/**'
# - '!sub-project/docs/**' # !在正匹配之后匹配负模式(以 为前缀)将排除该路径。
# paths-ignore:
# - 'docs/**'
# tags:
# - v2
# - v1.*
# schedule:
# - cron: '30 5 * * 1,3'
# - cron: '30 5 * * 2,4'
jobs:
build:
runs-on: ubuntu-latest
steps:
# https://github.com/actions/checkout
- name: 下载代码
uses: actions/checkout@v4
- run: |
echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name: 获取提交的消息
if: github.event_name == 'push'
run: |
echo "提交的信息: ${{ github.event.head_commit.message }}"
commit_title=$(git log -1 --pretty=format:"%s")
commit_body=$(git log -1 --pretty=format:"%b")
echo "Commit Title: $commit_title"
echo "Commit Body: $commit_body"
commit_name=$(git log -1 --pretty=format:"%an")
echo "Commit name: $commit_name"
commit_email=$(git log -1 --pretty=format:"%ae")
echo "作者邮箱: $commit_email"
commit_date=$(git log -1 --pretty=format:"%ci")
echo "作者提交时间: $commit_date"
commit_durl=$(git log -1 --pretty=format:"%cr")
echo "提交时长: $commit_durl"
commit_hash=$(git log -1 --pretty=format:"%H")
echo "提交Hash: $commit_hash"
if [[ "$commit_body" =~ "发布生产" ]]; then
echo '包含: if echo "$string1" | grep -q "$string2"; then'
exit 0
else
echo "不包含"
exit 1
fi
- name: 获取合并请求的消息
if: github.event_name == 'pull_request'
env:
PR_STATUS_FLAG: ${{ github.event.pull_request.merged }}
run: |
echo "是否是合并关闭的 $PR_STATUS_FLAG"
if [[ "$PR_STATUS_FLAG" = true ]] ; then
echo "合并完成"
else
echo "取消合并"
fi
pr_num=${{ github.event.pull_request.number }}
git fetch origin refs/pull/${pr_num}/head:refs/remotes/origin/pull/${pr_num}/head
commit_title=$(git log -1 --pretty=format:"%s" origin/pull/${pr_num}/head)
commit_body=$(git log -1 --pretty=format:"%b" origin/pull/${pr_num}/head)
echo "合并请求 Commit Title: $commit_title"
echo "合并请求Commit Body: $commit_body"
if echo "$commit_body" | grep -q "发布生产"; then
exit 0
else
echo "不包含"
exit 1
fi
# https://github.com/actions/setup-node 和 https://cicube.io/workflow-hub/github-action-setup-node/
- name: 安装nodejs
uses: actions/setup-node@v4
with:
node-version: '22'
check-latest: true
# cache: 'npm'
# cache-dependency-path: '**/package-lock.json'
- name: 安装node依赖
run: npm --version
- name: 运行node测试
run: echo "npm test 成功actions/github-script@v5创建合并请求"
- name: 安装JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
check-latest: true
cache: 'maven'
# cache-dependency-path: 'sub-project/pom.xml' # optional
- name: 安装Maven
uses: stCarolas/setup-maven@v5
with:
maven-version: 3.9.11
- name: Maven打包
run: |
echo 'mvn clean install -DskipTests && mvn -B package --file pom.xml'
mvn --version
- name: 列出工作目录列表
run: |
ls ${{ gitea.workspace }}
- name: 构建镜像并推送
run: |
echo 'docker login -u "${{ secrets.DOCKER_USERNAME }}" -p "${{ secrets.DOCKER_PASSWORD }}"'
echo 'docker build -t <dockerhub repository name>.'
echo 'docker push <dockerhub repository name>:latest'
docker info
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- run: echo "Deploying build ${{ needs.build.outputs.build_id }}"
- name: 执行远程SSH命令
uses: appleboy/ssh-action@v1
env:
FOO: "BAR"
BAR: "FOO"
with:
host: ${{ vars.DEPLOY_HOST }}
# host: "foo.com:1234,bar.com:5678"
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
# key: ${{ secrets.KEY }}
# passphrase: ${{ secrets.PASSPHRASE }}
port: ${{ vars.PORT }}
# sync: true
envs: FOO,BAR
# script_path: scripts/script.sh
script: |
whoami
ls -al
echo "I am $FOO"
- run: echo "🍏 This job's status is ${{ job.status }}."
check:
name: 检查
needs: [build, deploy]
runs-on: ubuntu-latest
# if: ${{ success() }} 参考:https://docs.github.com/en/actions/reference/workflows-and-actions/expressions
if: ${{ success() }}
steps:
- run: echo "任务成功构建和部署完成"
upload:
name: 制品上传
needs: check
strategy:
matrix:
os: [ubuntu-latest]
#os: [ubuntu-latest, windows-latest]
version: [a, b, c]
runs-on: ${{ matrix.os }}
steps:
- name: 生成制品
# run: ./some-script --version=${{ matrix.version }} > my-binary
run echo "系统=${{ matrix.os }}version=${{ matrix.version }}" > my-binary-${{ matrix.os }}-${{ matrix.version }}
- name: 安装上传制品插件
uses: actions/upload-artifact@v4
id: artifact-upload-step-id
with:
name: binary-${{ matrix.os }}-${{ matrix.version }}
path: my-binary-${{ matrix.os }}-${{ matrix.version }}
retention-days: 90 # 保留期必须介于 1 到 90 天(含)之间。
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
compression-level: 9 # 6默认压缩如果设置成0不进行文件压缩
#path: |
# path/output/bin/
# path/output/test-results
# !path/**/*.tmp
- name: 输出制品相关信息
run: |
echo 'Artifact ID is ${{ steps.artifact-upload-step-id.outputs.artifact-id }}'
echo 'Artifact URL is ${{ steps.artifact-upload-step-id.artifact-url }}'
echo 'Artifact SHA 256 is ${{ steps.artifact-upload-step-id.artifact-digest }}'