👷
This commit is contained in:
52
.github/workflows/main.yml
vendored
52
.github/workflows/main.yml
vendored
@@ -33,12 +33,16 @@ jobs:
|
|||||||
|
|
||||||
test-action:
|
test-action:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: build-docker-image
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: update action.yml
|
||||||
|
run: |
|
||||||
|
sed -i "s/image: .*/image: Dockerfile/" action.yml
|
||||||
|
|
||||||
- name: generate-snake-game-from-github-contribution-grid
|
- name: generate-snake-game-from-github-contribution-grid
|
||||||
id: snake-gif
|
id: generate-snake
|
||||||
uses: Platane/snk@master
|
uses: ./
|
||||||
with:
|
with:
|
||||||
github_user_name: platane
|
github_user_name: platane
|
||||||
gif_out_path: dist/github-contribution-grid-snake.gif
|
gif_out_path: dist/github-contribution-grid-snake.gif
|
||||||
@@ -46,15 +50,16 @@ jobs:
|
|||||||
|
|
||||||
- name: ensure the generated file exists
|
- name: ensure the generated file exists
|
||||||
run: |
|
run: |
|
||||||
ls -l ${{ steps.snake-gif.outputs.gif_out_path }}
|
ls dist
|
||||||
test -f ${{ steps.snake-gif.outputs.gif_out_path }}
|
test -f ${{ steps.generate-snake.outputs.gif_out_path }}
|
||||||
|
test -f ${{ steps.generate-snake.outputs.svg_out_path }}
|
||||||
|
|
||||||
- uses: crazy-max/ghaction-github-pages@v2.5.0
|
- uses: crazy-max/ghaction-github-pages@v2.5.0
|
||||||
with:
|
with:
|
||||||
target_branch: output
|
target_branch: output
|
||||||
build_dir: dist
|
build_dir: dist
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN_GH_PAGES }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
deploy-ghpages:
|
deploy-ghpages:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -70,41 +75,10 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GITHUB_USER_CONTRIBUTION_API_ENDPOINT: https://snk-one.vercel.app/api/github-user-contribution/
|
GITHUB_USER_CONTRIBUTION_API_ENDPOINT: https://snk-one.vercel.app/api/github-user-contribution/
|
||||||
|
|
||||||
- uses: crazy-max/ghaction-github-pages@v2.5.0
|
- uses: crazy-max/ghaction-github-pages@v2.6.0
|
||||||
if: success() && github.ref == 'refs/heads/master'
|
if: success() && github.ref == 'refs/heads/master'
|
||||||
with:
|
with:
|
||||||
target_branch: gh-pages
|
target_branch: gh-pages
|
||||||
build_dir: packages/demo/dist
|
build_dir: packages/demo/dist
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN_GH_PAGES }}
|
GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN_GH_PAGES }}
|
||||||
|
|
||||||
build-docker-image:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions/setup-node@v2
|
|
||||||
with:
|
|
||||||
cache: yarn
|
|
||||||
node-version: 16
|
|
||||||
- run: yarn install --frozen-lockfile
|
|
||||||
|
|
||||||
- run: yarn build:action
|
|
||||||
|
|
||||||
- uses: docker/setup-qemu-action@v1
|
|
||||||
|
|
||||||
- uses: docker/setup-buildx-action@v1
|
|
||||||
|
|
||||||
- uses: docker/login-action@v1
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
||||||
|
|
||||||
- uses: docker/build-push-action@v2
|
|
||||||
id: docker_build
|
|
||||||
with:
|
|
||||||
push: ${{ github.ref == 'refs/heads/master' }}
|
|
||||||
tags: |
|
|
||||||
platane/snk:latest
|
|
||||||
platane/snk:${{ github.sha }}
|
|
||||||
file: packages/action/Dockerfile
|
|
||||||
context: packages/action
|
|
||||||
|
|||||||
73
.github/workflows/release.yml
vendored
Normal file
73
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: "Version"
|
||||||
|
default: "0.0.1"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
description:
|
||||||
|
description: "Version description"
|
||||||
|
type: string
|
||||||
|
prerelease:
|
||||||
|
description: "Prerelease"
|
||||||
|
default: false
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- uses: docker/setup-qemu-action@v1
|
||||||
|
|
||||||
|
- uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
|
- uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- uses: docker/build-push-action@v2
|
||||||
|
id: docker-build
|
||||||
|
with:
|
||||||
|
push: true
|
||||||
|
tags: platane/snk:${{ github.sha }} platane/snk:${{ github.event.inputs.version }}
|
||||||
|
|
||||||
|
- name: update action.yml
|
||||||
|
run: |
|
||||||
|
sed -i "s/image: .*/image: docker:\/\/platane\/snk:${{ steps.docker-build.outputs.digest }}/" action.yml
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
cache: yarn
|
||||||
|
node-version: 16
|
||||||
|
|
||||||
|
- name: bump version
|
||||||
|
run: yarn version --no-git-tag-version --new-version ${{ github.event.inputs.version }}
|
||||||
|
|
||||||
|
- name: build svg-only action
|
||||||
|
run: |
|
||||||
|
yarn install --frozen-lockfile
|
||||||
|
yarn build:demo
|
||||||
|
mv packages/demo/dist/* svg-only/
|
||||||
|
|
||||||
|
- name: push new commit
|
||||||
|
uses: EndBug/add-and-commit@v7
|
||||||
|
with:
|
||||||
|
add: package.json svg-only action.yml
|
||||||
|
message: 📦 ${{ github.event.inputs.version }}
|
||||||
|
tag: v${{ github.event.inputs.version }}
|
||||||
|
|
||||||
|
- uses: actions/create-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag_name: v${{ github.event.inputs.version }}
|
||||||
|
# release_name: Release ${{ github.event.inputs.version }}
|
||||||
|
body: ${{ github.event.inputs.description }}
|
||||||
|
prerelease: ${{ github.event.inputs.prerelease }}
|
||||||
32
Dockerfile
Normal file
32
Dockerfile
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
FROM node:16-slim as builder
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY package.json yarn.lock ./
|
||||||
|
|
||||||
|
COPY tsconfig.json ./
|
||||||
|
|
||||||
|
COPY packages packages
|
||||||
|
|
||||||
|
RUN export YARN_CACHE_FOLDER="$(mktemp -d)" \
|
||||||
|
&& yarn install --frozen-lockfile \
|
||||||
|
&& rm -r "$YARN_CACHE_FOLDER"
|
||||||
|
|
||||||
|
RUN yarn build:action
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FROM node:16-slim
|
||||||
|
|
||||||
|
WORKDIR /action-release
|
||||||
|
|
||||||
|
RUN export YARN_CACHE_FOLDER="$(mktemp -d)" \
|
||||||
|
&& yarn add canvas@2.9.1 gifsicle@5.3.0 --no-lockfile \
|
||||||
|
&& rm -r "$YARN_CACHE_FOLDER"
|
||||||
|
|
||||||
|
COPY --from=builder /app/packages/action/dist/ /action-release/
|
||||||
|
|
||||||
|
CMD ["node", "/action-release/index.js"]
|
||||||
|
|
||||||
@@ -3,8 +3,8 @@ description: "Generates a snake game from a github user contributions grid. Outp
|
|||||||
author: "platane"
|
author: "platane"
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: "docker"
|
using: docker
|
||||||
image: "docker://platane/snk:latest"
|
image: Dockerfile
|
||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
github_user_name:
|
github_user_name:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "snk",
|
"name": "snk",
|
||||||
"description": "Generates a snake game from a github user contributions grid",
|
"description": "Generates a snake game from a github user contributions grid",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"repository": "github:platane/snk",
|
"repository": "github:platane/snk",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
FROM node:16-slim
|
|
||||||
|
|
||||||
WORKDIR /github/snk
|
|
||||||
|
|
||||||
RUN npm install canvas@2.8.0 gifsicle@5.2.0 --no-save --no-package-lock
|
|
||||||
|
|
||||||
COPY dist /github/snk/
|
|
||||||
|
|
||||||
CMD ["node", "/github/snk/index.js"]
|
|
||||||
9
svg-only/README.md
Normal file
9
svg-only/README.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# svg-only
|
||||||
|
|
||||||
|
Another action running purely on js (without Docker).
|
||||||
|
|
||||||
|
As a drawback, it can not generate gif image.
|
||||||
|
|
||||||
|
## Build process
|
||||||
|
|
||||||
|
file is built and push on release, by the release action.
|
||||||
20
svg-only/action.yml
Normal file
20
svg-only/action.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: "generate-snake-game-from-github-contribution-grid"
|
||||||
|
description: "Generates a snake game from a github user contributions grid. Output the animation as svg"
|
||||||
|
author: "platane"
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: node16
|
||||||
|
main: index.js
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
github_user_name:
|
||||||
|
description: "github user name"
|
||||||
|
required: true
|
||||||
|
svg_out_path:
|
||||||
|
description: "path of the generated svg file. If left empty, the svg file will not be generated."
|
||||||
|
required: false
|
||||||
|
default: null
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
svg_out_path:
|
||||||
|
description: "path of the generated svg"
|
||||||
Reference in New Issue
Block a user