Merge pull request #28 from cdalvaro/feat/migrate_from_circleci_to_github_actions
Migrate from CircleCI to GitHub Actions
This commit is contained in:
@@ -1,214 +0,0 @@
|
||||
version: 2.1
|
||||
|
||||
orbs:
|
||||
docker: circleci/docker@1.0.1
|
||||
|
||||
commands:
|
||||
docker-build:
|
||||
description: |
|
||||
Build a Docker image
|
||||
parameters:
|
||||
dockerfile:
|
||||
default: Dockerfile
|
||||
description: |
|
||||
Name of dockerfile to use, defaults to Dockerfile
|
||||
type: string
|
||||
extra_build_args:
|
||||
default: ''
|
||||
description: >
|
||||
Extra flags to pass to docker build. For examples, see
|
||||
https://docs.docker.com/engine/reference/commandline/build
|
||||
type: string
|
||||
registry:
|
||||
default: docker.io
|
||||
description: |
|
||||
Comma separated list of registry to use, defaults to docker.io
|
||||
type: string
|
||||
image:
|
||||
default: cdalvaro/saltstack-master
|
||||
description: |
|
||||
Name of image to build
|
||||
type: string
|
||||
tag:
|
||||
default: ${CIRCLE_SHA1}
|
||||
description: |
|
||||
Image tag, defaults to the value of $CIRCLE_SHA1
|
||||
type: string
|
||||
path:
|
||||
default: .
|
||||
description: |
|
||||
Path to the directory containing your Dockerfile and build context,
|
||||
defaults to . (working directory)
|
||||
type: string
|
||||
cache_from:
|
||||
default: ''
|
||||
description: |
|
||||
Comma-separated list of images. Images will first be pulled, then passed
|
||||
as the --cache-from build argument
|
||||
https://docs.docker.com/engine/reference/commandline/build/
|
||||
type: string
|
||||
no_output_timeout:
|
||||
default: 10m
|
||||
description: |
|
||||
No output timeout for build step
|
||||
type: string
|
||||
steps:
|
||||
- when:
|
||||
condition: <<parameters.cache_from>>
|
||||
steps:
|
||||
- run:
|
||||
name: Build image for <<parameters.registry>>
|
||||
no_output_timeout: <<parameters.no_output_timeout>>
|
||||
command: >
|
||||
echo "<<parameters.cache_from>>" | sed -n 1'p' | tr ',' '\n' |
|
||||
while read image; do
|
||||
echo "Pulling ${image} ...";
|
||||
docker pull "${image}" || true
|
||||
done
|
||||
|
||||
docker_tag_args=""
|
||||
|
||||
IFS="," read -ra DOCKER_REGISTRIES \<<< "<<parameters.registry>>"
|
||||
|
||||
for registry in "${DOCKER_REGISTRIES[@]}"; do
|
||||
IFS="," read -ra DOCKER_TAGS \<<< "<<parameters.tag>>"
|
||||
|
||||
for tag in "${DOCKER_TAGS[@]}"; do
|
||||
docker_tag_args="${docker_tag_args} -t ${registry}/<<parameters.image>>:${tag}"
|
||||
done
|
||||
done
|
||||
|
||||
docker build
|
||||
<<#parameters.extra_build_args>><<parameters.extra_build_args>><</parameters.extra_build_args>>
|
||||
\
|
||||
--cache-from <<parameters.cache_from>> \
|
||||
-f <<parameters.path>>/<<parameters.dockerfile>> \
|
||||
${docker_tag_args} \
|
||||
<<parameters.path>>
|
||||
- unless:
|
||||
condition: <<parameters.cache_from>>
|
||||
steps:
|
||||
- run:
|
||||
name: Building image for <<parameters.registry>>
|
||||
no_output_timeout: <<parameters.no_output_timeout>>
|
||||
command: >
|
||||
docker_tag_args=""
|
||||
|
||||
IFS="," read -ra DOCKER_REGISTRIES \<<< "<<parameters.registry>>"
|
||||
|
||||
for registry in "${DOCKER_REGISTRIES[@]}"; do
|
||||
IFS="," read -ra DOCKER_TAGS \<<< "<<parameters.tag>>"
|
||||
|
||||
for tag in "${DOCKER_TAGS[@]}"; do
|
||||
docker_tag_args="${docker_tag_args} -t ${registry}/<<parameters.image>>:${tag}"
|
||||
done
|
||||
done
|
||||
|
||||
docker build
|
||||
<<#parameters.extra_build_args>><<parameters.extra_build_args>><</parameters.extra_build_args>>
|
||||
\
|
||||
-f <<parameters.path>>/<<parameters.dockerfile>> \
|
||||
${docker_tag_args} \
|
||||
<<parameters.path>>
|
||||
|
||||
docker-save:
|
||||
description: |
|
||||
Save one or more images to a tar archive
|
||||
parameters:
|
||||
registry:
|
||||
default: docker.io
|
||||
description: |
|
||||
Comma separated list of registry to use, defaults to docker.io
|
||||
type: string
|
||||
image:
|
||||
description: |
|
||||
Name of image to save
|
||||
type: string
|
||||
tag:
|
||||
default: ${CIRCLE_SHA1}
|
||||
description: |
|
||||
Image tag, defaults to the value of $CIRCLE_SHA1
|
||||
type: string
|
||||
steps:
|
||||
- run:
|
||||
name: Save image to tar archive
|
||||
command: >
|
||||
docker_images=""
|
||||
|
||||
IFS="," read -ra DOCKER_REGISTRIES \<<< "<<parameters.registry>>"
|
||||
|
||||
for registry in "${DOCKER_REGISTRIES[@]}"; do
|
||||
IFS="," read -ra DOCKER_TAGS \<<< "<<parameters.tag>>"
|
||||
|
||||
for tag in "${DOCKER_TAGS[@]}"; do
|
||||
docker_images="${docker_images} ${registry}/<<parameters.image>>:${tag}"
|
||||
done
|
||||
done
|
||||
|
||||
mkdir -p ~/docker/
|
||||
|
||||
docker save -o ~/docker/docker-images.tar ${docker_images}
|
||||
- persist_to_workspace:
|
||||
root: ~/
|
||||
paths:
|
||||
- docker
|
||||
|
||||
docker-load:
|
||||
description: |
|
||||
Load tar archive
|
||||
steps:
|
||||
- attach_workspace:
|
||||
at: ~/
|
||||
- run:
|
||||
name: Load images from tar archive
|
||||
command: >
|
||||
docker load -i ~/docker/docker-images.tar
|
||||
|
||||
jobs:
|
||||
build:
|
||||
executor: docker/machine
|
||||
steps:
|
||||
- checkout
|
||||
- docker-build:
|
||||
registry: docker.io,quay.io
|
||||
image: cdalvaro/saltstack-master
|
||||
tag: ${CIRCLE_TAG:-latest}
|
||||
cache_from: docker.io/cdalvaro/saltstack-master:latest
|
||||
extra_build_args: '--build-arg VCS_REF=${CIRCLE_TAG:-${CIRCLE_SHA1}} --build-arg BUILD_DATE="$(date +"%Y-%m-%d %H:%M:%S%:z")"'
|
||||
no_output_timeout: 45m
|
||||
- docker-save:
|
||||
registry: docker.io,quay.io
|
||||
image: cdalvaro/saltstack-master
|
||||
tag: ${CIRCLE_TAG:-latest}
|
||||
|
||||
test:
|
||||
executor: docker/machine
|
||||
steps:
|
||||
- checkout
|
||||
- docker-load
|
||||
- run:
|
||||
name: Launch docker container
|
||||
command: docker run -it --rm -d --name salt_master cdalvaro/saltstack-master:${CIRCLE_TAG:-latest}
|
||||
- run:
|
||||
name: Container info
|
||||
command: docker container ls
|
||||
- run:
|
||||
name: Wait for salt-master bootup
|
||||
command: sleep 60
|
||||
- run:
|
||||
name: Test image bootup
|
||||
command: docker exec -it salt_master /usr/local/sbin/healthcheck
|
||||
|
||||
workflows:
|
||||
build-and-test:
|
||||
jobs:
|
||||
- build:
|
||||
filters:
|
||||
tags:
|
||||
only: /^[0-9._]+$/
|
||||
- test:
|
||||
requires:
|
||||
- build
|
||||
filters:
|
||||
tags:
|
||||
only: /^[0-9._]+$/
|
||||
1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
github: cdalvaro
|
||||
18
.github/stale.yml
vendored
Normal file
18
.github/stale.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 60
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
exemptLabels:
|
||||
- pinned
|
||||
- security
|
||||
- keep-alive
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: stale
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
||||
79
.github/workflows/build-and-test.yml
vendored
Normal file
79
.github/workflows/build-and-test.yml
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
name: Build and test
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
env:
|
||||
REGISTRY: docker.io
|
||||
IMAGE_NAME: cdalvaro/saltstack-master
|
||||
IMAGE_TAG: ci
|
||||
GITHUB_REF_NAME: ${{ github.event.release.tag_name }}
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build Docker image
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 45
|
||||
steps:
|
||||
- name: Set env variables
|
||||
run: |
|
||||
echo ::set-env name=CACHE_FROM::"${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest"
|
||||
echo ::set-env name=DOCKER_IMAGE::"${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}"
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Cache lastest image
|
||||
run: docker pull ${CACHE_FROM}
|
||||
|
||||
- name: Build Docker image
|
||||
run: |
|
||||
docker build \
|
||||
--build-arg VCS_REF=${GITHUB_REF_NAME:-${GITHUB_SHA}} \
|
||||
--build-arg BUILD_DATE="$(date +"%Y-%m-%d %H:%M:%S%:z")" \
|
||||
--cache-from ${CACHE_FROM} \
|
||||
--tag ${DOCKER_IMAGE} .
|
||||
|
||||
- name: Save docker image
|
||||
run: |
|
||||
mkdir -p docker/
|
||||
docker save -o docker/docker-image.tar ${DOCKER_IMAGE}
|
||||
|
||||
- name: Upload image for test job
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: docker-image
|
||||
path: docker/docker-image.tar
|
||||
|
||||
test:
|
||||
name: Test Docker image
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
CONTAINER_NAME: salt_master_ci
|
||||
steps:
|
||||
- name: Download docker image from build job
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: docker-image
|
||||
path: docker/
|
||||
|
||||
- name: Load docker image from build job
|
||||
run: docker load -i docker/docker-image.tar
|
||||
|
||||
- name: Launch docker container
|
||||
run: docker run --rm -d --name "${CONTAINER_NAME}" "${IMAGE_NAME}:${IMAGE_TAG}"
|
||||
|
||||
- name: Show container info
|
||||
run: docker container ls
|
||||
|
||||
- name: Wait for salt-master bootup
|
||||
run: sleep 60
|
||||
|
||||
- name: Show salt versions
|
||||
run: docker exec "${CONTAINER_NAME}" salt --versions
|
||||
|
||||
- name: Test image calling healthcheck
|
||||
run: docker exec "${CONTAINER_NAME}" /usr/local/sbin/healthcheck
|
||||
Reference in New Issue
Block a user