diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index f83b3bd..719c179 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -1,90 +1,59 @@ -name: pictshare ci +name: ci on: push: - branches: [ master ] + tags: + - "v*.*.*" pull_request: - branches: [ master ] - -env: - IMAGE_NAME: $(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]') + branches: + - "master" jobs: docker: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 - - - name: Prepare - id: prep - run: | - DOCKER_IMAGE="ghcr.io/${{ env.IMAGE_NAME }}" - DOCKER_IMAGE_HUB="docker.io/${{ env.IMAGE_NAME }}" - VERSION=latest - SHORTREF=${GITHUB_SHA::8} - - # If this is git tag, use the tag name as a docker tag - if [[ $GITHUB_REF == refs/tags/* ]]; then - VERSION=${GITHUB_REF#refs/tags/v} - fi - TAGS="${DOCKER_IMAGE}:${VERSION},${DOCKER_IMAGE}:${SHORTREF}" - TAGS_HUB="${DOCKER_IMAGE_HUB}:${VERSION},${DOCKER_IMAGE_HUB}:${SHORTREF}" - - # If the VERSION looks like a version number, assume that - # this is the most recent version of the image and also - # tag it 'latest'. - if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then - TAGS="$TAGS,${DOCKER_IMAGE}:latest" - TAGS_HUB="$TAGS_HUB,${DOCKER_IMAGE_HUB}:latest" - fi - - # Set output parameters. - echo ::set-output name=tags::${TAGS} - echo ::set-output name=docker_image::${DOCKER_IMAGE} - - echo ::set-output name=tags_hub::${TAGS_HUB} - echo ::set-output name=docker_image_hub::${DOCKER_IMAGE_HUB} - + uses: actions/checkout@v4 + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + # list of Docker images to use as base name for tags + images: | + hascheksolutions/opentrashmail + ghcr.io/hascheksolutions/opentrashmail + # generate Docker tags based on the following events/attributes + tags: | + type=schedule + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha - name: Set up QEMU - uses: docker/setup-qemu-action@master - with: - platforms: all - + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@master - - - name: Log in to Github Packages - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - + uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub - uses: docker/login-action@v2 + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 with: - registry: docker.io username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Build and push to GHCR - uses: docker/build-push-action@v2 + - name: Login to GHCR + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 with: - builder: ${{ steps.buildx.outputs.name }} context: . file: docker/Dockerfile platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ steps.prep.outputs.tags }} - - - name: Build and push to Docker Hub - uses: docker/build-push-action@v2 - with: - builder: ${{ steps.buildx.outputs.name }} - context: . - file: docker/Dockerfile - platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ steps.prep.outputs.tags_hub }} \ No newline at end of file + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..909ab21 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +# V2.0.0 (Nov 2023) +- Pushed current release to version 2.0 +- Updated CI to include versions \ No newline at end of file diff --git a/rtfm/DOCKER.md b/rtfm/DOCKER.md index 95d63e4..04b046b 100644 --- a/rtfm/DOCKER.md +++ b/rtfm/DOCKER.md @@ -2,7 +2,7 @@ The fastest way to deploy PictShare is via the [official Docker package](https://github.com/HaschekSolutions/pictshare/pkgs/container/pictshare) ```bash -docker run -d -p 80:80 -e "TITLE=My own PictShare" -e "URL=http://localhost/" ghcr.io/hascheksolutions/pictshare +docker run -d -p 80:80 -e "TITLE=My own PictShare" -e "URL=http://localhost/" hascheksolutions/pictshare:2 ``` [![Docker setup](http://www.pictshare.net/b65dea2117.gif)](https://www.pictshare.net/8a1dec0973.mp4) @@ -16,21 +16,21 @@ docker build -t pictshare -f docker/Dockerfile . ### Quick start ```bash -docker run -d -p 80:80 --name=pictshare ghcr.io/hascheksolutions/pictshare +docker run -d -p 80:80 --name=pictshare hascheksolutions/pictshare:2 ``` ### Persistent data ```bash mkdir /data/pictshareuploads chown 1000 -R /data/pictshareuploads -docker run -d -v /data/pictshareuploads:/var/www/data -p 80:80 --name=pictshare ghcr.io/hascheksolutions/pictshare +docker run -d -v /data/pictshareuploads:/var/www/data -p 80:80 --name=pictshare hascheksolutions/pictshare:2 ``` ### Persistent data with increased max upload size ```bash mkdir /data/pictshareuploads chown 1000 -R /data/pictshareuploads -docker run -d -e "MAX_UPLOAD_SIZE=1024" -v /data/pictshareuploads:/var/www/data -p 80:80 --name=pictshare ghcr.io/hascheksolutions/pictshare +docker run -d -e "MAX_UPLOAD_SIZE=1024" -v /data/pictshareuploads:/var/www/data -p 80:80 --name=pictshare hascheksolutions/pictshare:2 ``` ### Development diff --git a/rtfm/INSTALL.md b/rtfm/INSTALL.md index 811829e..1c77346 100644 --- a/rtfm/INSTALL.md +++ b/rtfm/INSTALL.md @@ -16,7 +16,7 @@ PictShare is written to be run on a linux server with PHP 7 and nginx. We tried ## Upgrading -- On docker just `docker pull hascheksolutions/pictshare` and run the newer image +- On docker just `docker pull hascheksolutions/pictshare:2` and run the newer image - Manual upgrade: - Just re-download the [PictShare zip](https://github.com/hascheksolutions/pictshare/archive/master.zip) file and extract and overwrite existing pictshare files. Uploads and config won't be affected. - Check if your ```/inc/config.inc.php``` file has all settings required by the ```/inc/example.config.inc.php``` since new options might get added in new versions