committed by
GitHub
4 changed files with 133 additions and 34 deletions
@ -0,0 +1,105 @@ |
|||||
|
name: Release |
||||
|
|
||||
|
on: |
||||
|
push: |
||||
|
paths: |
||||
|
- ".github/workflows/release.yml" |
||||
|
- "src/**" |
||||
|
- "migrations/**" |
||||
|
- "hooks/**" |
||||
|
- "docker/**" |
||||
|
- "Cargo.*" |
||||
|
- "build.rs" |
||||
|
- "diesel.toml" |
||||
|
- "rust-toolchain" |
||||
|
|
||||
|
branches: # Only on paths above |
||||
|
- main |
||||
|
|
||||
|
tags: # Always, regardless of paths above |
||||
|
- '*' |
||||
|
|
||||
|
jobs: |
||||
|
# https://github.com/marketplace/actions/skip-duplicate-actions |
||||
|
# Some checks to determine if we need to continue with building a new docker. |
||||
|
# We will skip this check if we are creating a tag, because that has the same hash as a previous run already. |
||||
|
skip_check: |
||||
|
runs-on: ubuntu-latest |
||||
|
if: ${{ github.repository == 'dani-garcia/vaultwarden' }} |
||||
|
outputs: |
||||
|
should_skip: ${{ steps.skip_check.outputs.should_skip }} |
||||
|
steps: |
||||
|
- name: Skip Duplicates Actions |
||||
|
id: skip_check |
||||
|
uses: fkirc/skip-duplicate-actions@master |
||||
|
with: |
||||
|
cancel_others: 'true' |
||||
|
# Only run this when not creating a tag |
||||
|
if: ${{ startsWith(github.ref, 'refs/heads/') }} |
||||
|
|
||||
|
docker-build: |
||||
|
runs-on: ubuntu-latest |
||||
|
needs: skip_check |
||||
|
if: ${{ needs.skip_check.outputs.should_skip != 'true' }} |
||||
|
env: |
||||
|
# DOCKER_BUILDKIT: 1 # Disabled for now, but we should look at this because it will speedup building! |
||||
|
# DOCKER_REPO/secrets.DOCKERHUB_REPO needs to be 'index.docker.io/<user>/<repo>' |
||||
|
DOCKER_REPO: ${{ secrets.DOCKERHUB_REPO }} |
||||
|
SOURCE_COMMIT: ${{ github.sha }} |
||||
|
SOURCE_REPOSITORY_URL: "https://github.com/${{ github.repository }}" |
||||
|
steps: |
||||
|
# Checkout the repo |
||||
|
- name: Checkout |
||||
|
uses: actions/checkout@v2 |
||||
|
with: |
||||
|
fetch-depth: 0 |
||||
|
|
||||
|
# Login to Docker Hub |
||||
|
- name: Login to Docker Hub |
||||
|
uses: docker/login-action@v1 |
||||
|
with: |
||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }} |
||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }} |
||||
|
|
||||
|
# Determine Docker Tag |
||||
|
- name: Init Variables |
||||
|
id: vars |
||||
|
shell: bash |
||||
|
run: | |
||||
|
# Check which main tag we are going to build determined by github.ref |
||||
|
if [[ "${{ github.ref }}" == refs/tags/* ]]; then |
||||
|
echo "set-output name=DOCKER_TAG::${GITHUB_REF#refs/*/}" |
||||
|
echo "::set-output name=DOCKER_TAG::${GITHUB_REF#refs/*/}" |
||||
|
elif [[ "${{ github.ref }}" == refs/heads/* ]]; then |
||||
|
echo "set-output name=DOCKER_TAG::testing" |
||||
|
echo "::set-output name=DOCKER_TAG::testing" |
||||
|
fi |
||||
|
# End Determine Docker Tag |
||||
|
|
||||
|
- name: Build Debian based images |
||||
|
shell: bash |
||||
|
env: |
||||
|
DOCKER_TAG: ${{steps.vars.outputs.DOCKER_TAG}} |
||||
|
run: | |
||||
|
./hooks/build |
||||
|
|
||||
|
- name: Push Debian based images |
||||
|
shell: bash |
||||
|
env: |
||||
|
DOCKER_TAG: ${{steps.vars.outputs.DOCKER_TAG}} |
||||
|
run: | |
||||
|
./hooks/push |
||||
|
|
||||
|
- name: Build Alpine based images |
||||
|
shell: bash |
||||
|
env: |
||||
|
DOCKER_TAG: "${{steps.vars.outputs.DOCKER_TAG}}-alpine" |
||||
|
run: | |
||||
|
./hooks/build |
||||
|
|
||||
|
- name: Push Alpine based images |
||||
|
shell: bash |
||||
|
env: |
||||
|
DOCKER_TAG: "${{steps.vars.outputs.DOCKER_TAG}}-alpine" |
||||
|
run: | |
||||
|
./hooks/push |
Loading…
Reference in new issue