Add workflows
This commit is contained in:
parent
03eb07f964
commit
98414716d9
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
|
@ -0,0 +1,77 @@
|
||||||
|
## more info https://github.com/crazy-max/ghaction-github-labeler
|
||||||
|
- # automerge
|
||||||
|
name: ":bell: automerge"
|
||||||
|
color: "8f4fbc"
|
||||||
|
description: ""
|
||||||
|
- # bot
|
||||||
|
name: ":robot: bot"
|
||||||
|
color: "69cde9"
|
||||||
|
description: ""
|
||||||
|
- # bug
|
||||||
|
name: ":bug: bug"
|
||||||
|
color: "b60205"
|
||||||
|
description: ""
|
||||||
|
- # dependencies
|
||||||
|
name: ":game_die: dependencies"
|
||||||
|
color: "0366d6"
|
||||||
|
description: ""
|
||||||
|
- # documentation
|
||||||
|
name: ":memo: documentation"
|
||||||
|
color: "c5def5"
|
||||||
|
description: ""
|
||||||
|
- # duplicate
|
||||||
|
name: ":busts_in_silhouette: duplicate"
|
||||||
|
color: "cccccc"
|
||||||
|
description: ""
|
||||||
|
- # enhancement
|
||||||
|
name: ":sparkles: enhancement"
|
||||||
|
color: "0054ca"
|
||||||
|
description: ""
|
||||||
|
- # feature request
|
||||||
|
name: ":bulb: feature request"
|
||||||
|
color: "0e8a16"
|
||||||
|
description: ""
|
||||||
|
- # feedback
|
||||||
|
name: ":mega: feedback"
|
||||||
|
color: "03a9f4"
|
||||||
|
description: ""
|
||||||
|
- # future maybe
|
||||||
|
name: ":rocket: future maybe"
|
||||||
|
color: "fef2c0"
|
||||||
|
description: ""
|
||||||
|
- # good first issue
|
||||||
|
name: ":hatching_chick: good first issue"
|
||||||
|
color: "7057ff"
|
||||||
|
description: ""
|
||||||
|
- # help wanted
|
||||||
|
name: ":pray: help wanted"
|
||||||
|
color: "4caf50"
|
||||||
|
description: ""
|
||||||
|
- # hold
|
||||||
|
name: ":hand: hold"
|
||||||
|
color: "24292f"
|
||||||
|
description: ""
|
||||||
|
- # invalid
|
||||||
|
name: ":no_entry_sign: invalid"
|
||||||
|
color: "e6e6e6"
|
||||||
|
description: ""
|
||||||
|
- # maybe bug
|
||||||
|
name: ":interrobang: maybe bug"
|
||||||
|
color: "ff5722"
|
||||||
|
description: ""
|
||||||
|
- # needs more info
|
||||||
|
name: ":thinking: needs more info"
|
||||||
|
color: "795548"
|
||||||
|
description: ""
|
||||||
|
- # question
|
||||||
|
name: ":question: question"
|
||||||
|
color: "3f51b5"
|
||||||
|
description: ""
|
||||||
|
- # upstream
|
||||||
|
name: ":eyes: upstream"
|
||||||
|
color: "fbca04"
|
||||||
|
description: ""
|
||||||
|
- # wontfix
|
||||||
|
name: ":coffin: wontfix"
|
||||||
|
color: "ffffff"
|
||||||
|
description: ""
|
|
@ -0,0 +1,82 @@
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 10 * * 0' # everyday sunday at 10am
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
|
tags:
|
||||||
|
- 'v*.*.*'
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
env:
|
||||||
|
DOCKER_IMAGE: localhost:5000/name/app
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
multi-images:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v2.3.3
|
||||||
|
-
|
||||||
|
name: Docker meta
|
||||||
|
id: docker_meta
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
${{ env.DOCKER_IMAGE }}
|
||||||
|
ghcr.io/name/app
|
||||||
|
tag-sha: true
|
||||||
|
|
||||||
|
docker-push:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
services:
|
||||||
|
registry:
|
||||||
|
image: registry:2
|
||||||
|
ports:
|
||||||
|
- 5000:5000
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v2.3.3
|
||||||
|
-
|
||||||
|
name: Docker meta
|
||||||
|
id: docker_meta
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
${{ env.DOCKER_IMAGE }}
|
||||||
|
tag-sha: true
|
||||||
|
-
|
||||||
|
name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
-
|
||||||
|
name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
with:
|
||||||
|
driver-opts: network=host
|
||||||
|
-
|
||||||
|
name: Build and push to local registry
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: ./test
|
||||||
|
file: ./test/Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64,linux/386
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.docker_meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.docker_meta.outputs.labels }}
|
||||||
|
-
|
||||||
|
name: Inspect image
|
||||||
|
run: |
|
||||||
|
docker pull ${{ env.DOCKER_IMAGE }}:${{ steps.docker_meta.outputs.version }}
|
||||||
|
docker image inspect ${{ env.DOCKER_IMAGE }}:${{ steps.docker_meta.outputs.version }}
|
||||||
|
-
|
||||||
|
name: Check manifest
|
||||||
|
run: |
|
||||||
|
docker buildx imagetools inspect ${{ env.DOCKER_IMAGE }}:${{ steps.docker_meta.outputs.version }}
|
||||||
|
-
|
||||||
|
name: Dump context
|
||||||
|
if: always()
|
||||||
|
uses: crazy-max/ghaction-dump-context@v1
|
|
@ -0,0 +1,20 @@
|
||||||
|
name: labels
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
paths:
|
||||||
|
- '.github/labels.yml'
|
||||||
|
- '.github/workflows/labels.yml'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
labeler:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v2.3.3
|
||||||
|
-
|
||||||
|
name: Run Labeler
|
||||||
|
uses: crazy-max/ghaction-github-labeler@v3.1.0
|
|
@ -0,0 +1,53 @@
|
||||||
|
name: test
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'releases/v*'
|
||||||
|
paths-ignore:
|
||||||
|
- '**.md'
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- '**.md'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test-containerized:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v2.3.3
|
||||||
|
-
|
||||||
|
name: Validate
|
||||||
|
run: docker buildx bake validate
|
||||||
|
-
|
||||||
|
name: Test
|
||||||
|
run: docker buildx bake test
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
- macOS-latest
|
||||||
|
- windows-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@v2.3.3
|
||||||
|
-
|
||||||
|
name: Install
|
||||||
|
run: yarn install
|
||||||
|
-
|
||||||
|
name: Test
|
||||||
|
run: yarn run test
|
||||||
|
-
|
||||||
|
name: Upload coverage
|
||||||
|
uses: codecov/codecov-action@v1.0.13
|
||||||
|
if: success()
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
file: ./coverage/clover.xml
|
|
@ -20,6 +20,7 @@ FROM base AS build
|
||||||
RUN yarn build
|
RUN yarn build
|
||||||
|
|
||||||
FROM deps AS test
|
FROM deps AS test
|
||||||
|
COPY . .
|
||||||
RUN yarn run test
|
RUN yarn run test
|
||||||
|
|
||||||
FROM base AS run-format
|
FROM base AS run-format
|
||||||
|
|
|
@ -12,6 +12,8 @@ GitHub Action to extract metadata (tags, labels) for Docker. This action is part
|
||||||
|
|
||||||
If you are interested, [check out](https://git.io/Je09Y) my other :octocat: GitHub Actions!
|
If you are interested, [check out](https://git.io/Je09Y) my other :octocat: GitHub Actions!
|
||||||
|
|
||||||
|
![Screenshot](.github/ghaction-docker-meta.png)
|
||||||
|
|
||||||
___
|
___
|
||||||
|
|
||||||
* [Features](#features)
|
* [Features](#features)
|
||||||
|
@ -25,7 +27,7 @@ ___
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
* Docker tags generated through GitHub action event and Git metadata
|
* Docker tags generated from GitHub action event and Git metadata
|
||||||
* [OCI Image Format Specification](https://github.com/opencontainers/image-spec/blob/master/annotations.md) used to generate Docker labels
|
* [OCI Image Format Specification](https://github.com/opencontainers/image-spec/blob/master/annotations.md) used to generate Docker labels
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
@ -104,7 +106,7 @@ Following inputs can be used as `step.with` keys
|
||||||
|---------------------|----------|------------------------------------|
|
|---------------------|----------|------------------------------------|
|
||||||
| `images` | List/CSV | List of Docker images to use as base name for tags |
|
| `images` | List/CSV | List of Docker images to use as base name for tags |
|
||||||
| `tag-sha` | Bool | Add git short SHA as Docker tag (default `false`) |
|
| `tag-sha` | Bool | Add git short SHA as Docker tag (default `false`) |
|
||||||
| `tag-edge` | String | Branch that will be tagged as edge (default `${{ repo.default_branch }}` |
|
| `tag-edge` | String | Branch that will be tagged as edge (default `repo.default_branch`) |
|
||||||
| `sep-tags` | String | Separator to use for tags output (default `\n`) |
|
| `sep-tags` | String | Separator to use for tags output (default `\n`) |
|
||||||
| `sep-labels` | String | Separator to use for labels output (default `\n`) |
|
| `sep-labels` | String | Separator to use for labels output (default `\n`) |
|
||||||
|
|
||||||
|
|
|
@ -15,15 +15,13 @@ inputs:
|
||||||
default: 'false'
|
default: 'false'
|
||||||
required: false
|
required: false
|
||||||
tag-edge:
|
tag-edge:
|
||||||
description: 'Branch that will be tagged as edge (default ${{ repo.default_branch }})'
|
description: 'Branch that will be tagged as edge (default repo.default_branch)'
|
||||||
required: false
|
required: false
|
||||||
sep-tags:
|
sep-tags:
|
||||||
description: 'Separator to use for tags output (default \n)'
|
description: 'Separator to use for tags output (default \n)'
|
||||||
default: '\n'
|
|
||||||
required: false
|
required: false
|
||||||
sep-labels:
|
sep-labels:
|
||||||
description: 'Separator to use for labels output (default \n)'
|
description: 'Separator to use for labels output (default \n)'
|
||||||
default: '\n'
|
|
||||||
required: false
|
required: false
|
||||||
github-token:
|
github-token:
|
||||||
description: 'GitHub Token as provided by secrets'
|
description: 'GitHub Token as provided by secrets'
|
||||||
|
|
|
@ -115,7 +115,6 @@ function run() {
|
||||||
const context = github.context();
|
const context = github.context();
|
||||||
const repo = yield github.repo(inputs.githubToken);
|
const repo = yield github.repo(inputs.githubToken);
|
||||||
core.startGroup(`Context info`);
|
core.startGroup(`Context info`);
|
||||||
core.info(`repo: ${context.repo}`);
|
|
||||||
core.info(`eventName: ${context.eventName}`);
|
core.info(`eventName: ${context.eventName}`);
|
||||||
core.info(`sha: ${context.sha}`);
|
core.info(`sha: ${context.sha}`);
|
||||||
core.info(`ref: ${context.ref}`);
|
core.info(`ref: ${context.ref}`);
|
||||||
|
@ -133,12 +132,16 @@ function run() {
|
||||||
core.setOutput('version', version);
|
core.setOutput('version', version);
|
||||||
const tags = meta.tags();
|
const tags = meta.tags();
|
||||||
core.startGroup(`Docker tags`);
|
core.startGroup(`Docker tags`);
|
||||||
core.info(JSON.stringify(tags));
|
for (let tag of tags) {
|
||||||
|
core.info(tag);
|
||||||
|
}
|
||||||
core.endGroup();
|
core.endGroup();
|
||||||
core.setOutput('tags', tags.join(inputs.sepTags));
|
core.setOutput('tags', tags.join(inputs.sepTags));
|
||||||
const labels = meta.labels();
|
const labels = meta.labels();
|
||||||
core.startGroup(`Docker labels`);
|
core.startGroup(`Docker labels`);
|
||||||
core.info(JSON.stringify(labels));
|
for (let label of labels) {
|
||||||
|
core.info(label);
|
||||||
|
}
|
||||||
core.endGroup();
|
core.endGroup();
|
||||||
core.setOutput('labels', labels.join(inputs.sepTags));
|
core.setOutput('labels', labels.join(inputs.sepTags));
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,6 @@ async function run() {
|
||||||
const context: Context = github.context();
|
const context: Context = github.context();
|
||||||
const repo: ReposGetResponseData = await github.repo(inputs.githubToken);
|
const repo: ReposGetResponseData = await github.repo(inputs.githubToken);
|
||||||
core.startGroup(`Context info`);
|
core.startGroup(`Context info`);
|
||||||
core.info(`repo: ${context.repo}`);
|
|
||||||
core.info(`eventName: ${context.eventName}`);
|
core.info(`eventName: ${context.eventName}`);
|
||||||
core.info(`sha: ${context.sha}`);
|
core.info(`sha: ${context.sha}`);
|
||||||
core.info(`ref: ${context.ref}`);
|
core.info(`ref: ${context.ref}`);
|
||||||
|
@ -36,13 +35,17 @@ async function run() {
|
||||||
|
|
||||||
const tags: Array<string> = meta.tags();
|
const tags: Array<string> = meta.tags();
|
||||||
core.startGroup(`Docker tags`);
|
core.startGroup(`Docker tags`);
|
||||||
core.info(JSON.stringify(tags));
|
for (let tag of tags) {
|
||||||
|
core.info(tag);
|
||||||
|
}
|
||||||
core.endGroup();
|
core.endGroup();
|
||||||
core.setOutput('tags', tags.join(inputs.sepTags));
|
core.setOutput('tags', tags.join(inputs.sepTags));
|
||||||
|
|
||||||
const labels: Array<string> = meta.labels();
|
const labels: Array<string> = meta.labels();
|
||||||
core.startGroup(`Docker labels`);
|
core.startGroup(`Docker labels`);
|
||||||
core.info(JSON.stringify(labels));
|
for (let label of labels) {
|
||||||
|
core.info(label);
|
||||||
|
}
|
||||||
core.endGroup();
|
core.endGroup();
|
||||||
core.setOutput('labels', labels.join(inputs.sepTags));
|
core.setOutput('labels', labels.join(inputs.sepTags));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
Loading…
Reference in New Issue