# action.yml name: "build docker image and push to code" description: "build docker image and push to simcu code" inputs: context: description: "构建目录(相对仓库根目录,默认 .)。例如前端在 vue 目录下时填 vue" required: false default: "." useHash: description: "前端是否使用 hash 路由(默认 false)。false:用 nginx.conf 做 history 回退并加跨域头;true:用 nginx 默认配置,不再注入 nginx.conf" required: false default: "false" runs: using: "composite" steps: - uses: docker://node:24 with: entrypoint: "/bin/bash" args: | -c 'cd "${{ inputs.context }}" && \ npm pkg set version=${{ github.ref_name }} && \ npm ci && \ npm run build-only' # Dockerfile 放在仓库根目录(docker build -f 是相对仓库根目录解析的)。 # useHash=false:用 vue.Dockerfile,带上 nginx.conf 做 history 回退(构建目录有 nginx.conf 就用项目自己的); # useHash=true :hash 路由不需要回退,用 vue-hash.Dockerfile + nginx 默认配置,不注入 nginx.conf - uses: docker://ubuntu:latest with: entrypoint: "/bin/bash" args: | -c ' set -e if [ "${{ inputs.useHash }}" = "true" ]; then cp "${{ github.action_path }}/vue-hash.Dockerfile" ./Dockerfile echo "useHash=true:用 nginx 默认配置,不注入 nginx.conf" else cp "${{ github.action_path }}/vue.Dockerfile" ./Dockerfile cd "${{ inputs.context }}" if [ -f ./nginx.conf ]; then echo "nginx.conf:用项目自带的" else cp "${{ github.action_path }}/nginx.conf" ./nginx.conf echo "nginx.conf:用 action 内置的" fi fi ' - uses: actions/docker-build-push@main with: context: ${{ inputs.context }}